CQuest = class ( function (self,tmpId) self = { qId = tmpId; -- Quest ID qName = ""; -- Quest Name startNPC = ""; -- Start NPC Name startNPCId = 0; -- Start NPC ID startNPCLoc = { 0, 0, 0}; -- Start NPC Location finishNPC = ""; -- Finish NPC Name finishNPCId = 0; -- Finish NPC ID finishNPCLoc = { 0, 0, 0}; -- Finish NPC Location qRewardCh = {}; -- Quest rewards qRewardId = {}; -- Quest reward IDs tarName = {}; -- Quest objective: Kill target tarId = {}; -- Quest objective: Kill target ID tarLoc = {}; -- Quest objective: Target Location colName = {}; -- Quest objective: Collection target name colId = {}; -- Quest objective: Collection target ID colLoc = {}; -- Quest objective: Collect target Location qState = 0; -- 0 - Never accepted, 1 - Accepted, not complete, 2 - Completed successAccept = false; -- Success Accepting the quest successComplete = false; -- Success Completing the quest } self:update(); end ) -- Update quest log id's from memory (tells if quest is in log) function CQuest:update() self.qName = GetIdName(self.qId); end -- At current function CQuest:botAcceptQuest(qID,qNPC) successAccept = false; if self:botCheckQuest(qID) == 0 then if DEBUG then print("Attempting to accept Quest: " .. qID); end; repeat player:target_NPC(qNPC); yrest(1000); RoMScript("OnClick_QuestListButton(1,1);"); yrest(500); RoMScript("AcceptQuest();"); yrest(500); until self:botCheckQuest(qID) == 1; successAccept = true; end; end function CQuest:botCompleteQuest(qID,qNPC,qReward) successComplete = false; if self:botCheckQuest(qID) == 1 then if DEBUG then print("Attempting to complete Quest: " .. qID); end; repeat player:target_NPC(qNPC); yrest(1000); RoMScript("OnClick_QuestListButton(3,1);"); yrest(500); if qReward then if DEBUG then print("qReward: \n" .. qReward) end RoMScript("SpeakFrame_ClickQuestReward(SpeakQuestReward1_Item"..qReward..");") yrest(100) end RoMScript("CompleteQuest();"); yrest(500); until self:botCheckQuest(qID) == 2; successComplete = true; end; end function CQuest:botAcceptQuestThing(qID,qNPC) successAccept = false; if self:botCheckQuest(qID) == 0 then if DEBUG then print("Attempting to accept Quest: " .. qID); end; repeat player:harvest(qNPC); yrest(1000); RoMScript("OnClick_QuestListButton(1,1);"); yrest(500); RoMScript("AcceptQuest();"); yrest(500); until self:botCheckQuest(qID) == 1; successAccept = true; end; end function CQuest:botCompleteQuestThing(qID,qNPC,qReward) successComplete = false; if self:botCheckQuest(qID) == 1 then if DEBUG then print("Attempting to complete Quest: " .. qID); end; repeat player:harvest(qNPC); yrest(1000); RoMScript("OnClick_QuestListButton(3,1);"); yrest(500); if qReward then if DEBUG then print("qReward: \n" .. qReward) end RoMScript("SpeakFrame_ClickQuestReward(SpeakQuestReward1_Item"..qReward..");") yrest(100) end RoMScript("CompleteQuest();"); yrest(500); until self:botCheckQuest(qID) == 2; successComplete = true; end; end function CQuest:botCheckQuest(qID) if DEBUG then print("Checking Quest: " .. qID); end; return RoMScript("CheckQuest(" .. qID .. ");"); end function CQuest:chooseEndPath(startWP,endWP) if DEBUG then print("Setting closest end path waypoint."); end; local clstWP = startWP; for i=startWP,endWP,1 do local oldClosestWp = __WPL.Waypoints[clstWP]; local testWP = __WPL.Waypoints[i]; if( distance(player.X, player.Z, player.Y, testWP.X, testWP.Z, testWP.Y) < distance(player.X, player.Z, player.Y, oldClosestWp.X, oldClosestWp.Z, oldClosestWp.Y) ) then clstWP = i; end end __WPL:setWaypointIndex(clstWP); end function CQuest:checkAccept(qName) if successAccept then cprintf(cli.yellow,"Quest Accepted: " .. qName .. "\n"); successAccept = false; end end function CQuest:checkComplete(qName) if successComplete then cprintf(cli.yellow,"Quest Completed: " .. qName .. "\n"); successComplete = false; end end