├── HatterLib ├── module.def └── buy_housing.lua ├── QuestProfiles ├── (H) F MSQ Endwalker.info ├── (H) J ShB DPS Class Quests.info ├── (H) J Reapers' Quests.info └── (H) M All Combat Class Unlocks.info ├── README.md └── CombatRoutines └── H Casual Bard.lua /HatterLib/module.def: -------------------------------------------------------------------------------- 1 | [Module] 2 | Name=HatterLib 3 | Dependencies=minionlib 4 | Version=1 5 | Files=HatterLib.lua 6 | enabled=1 -------------------------------------------------------------------------------- /QuestProfiles/(H) F MSQ Endwalker.info: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HatterMadison/Minion-Hatter-Repository/HEAD/QuestProfiles/(H) F MSQ Endwalker.info -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Most stuff requires **HatterLib**. 2 | 3 | Things that don't need HatterLib: Casual Bard ACR. 4 | 5 | ## Recent ChangeLog: 6 | * 220129 **New ACR: Casual Bard** 7 | * 220128 Added option for *Auto-Buy-Housing*, teleport & logout. 8 | * 220128 Added **Auto-BuyHousing** to *HatterLib*. 9 | * HotFix **Relocation Free-Company 'no string found' error** when Player does not have **Personal Housing**. 10 | * Added **Auto-Inventory** and **Auto-Ventures** to *HatterLib*. 11 | * HotFix **Index error** which arises from concat of **Auto-Ventures** 12 | * MSQ Profile does all Snipes, and 3x Duties. (missing Venat and In From Cold) (Also attempt fix all DM bugs) 13 | * ShB Dps Quest Profile does the 2x Duties. 14 | * Reapers' Quest Profile does the 2x Duties. 15 | 16 | 17 | ## Basic How-To HatterLib 18 | * Place HatterLib folder in **LuaMods**, so the path looks like below. 19 | * HatterLib Path = `C:\MINIONAPP\Bots\FFXIVMinion64\LuaMods\HatterLib` 20 | * Download HatterLib Icon Folder: 21 | * 22 | * Place Folder Into `HatterLib` folder, so like: `C:\MINIONAPP\Bots\FFXIVMinion64\LuaMods\HatterLib\GUI_Files` 23 | 24 | 25 | 26 | ## Basic Other File Placement 27 | * Where should X file go? 28 | * Quest Profiles = `C:\MINIONAPP\Bots\FFXIVMinion64\LuaMods\ffxivminion\QuestProfiles` 29 | * ACR Profiles = `C:\MINIONAPP\Bots\FFXIVMinion64\LuaMods\ACR\CombatRoutines` 30 | 31 | * How to change ACR profile? 32 | * **MMOMinion Button -> FFXIVMinion Button -> ACR -> Select ACR Profile** 33 | 34 | ## Finale Reaper ACR 35 | 36 | *Casual Info: 37 | *It has a 'dynamic' mode which auto-reserve and auto-destroy based on XYZ. This is my favorite part, that I hope to refine further. (This is not an auto-raid/timeline) 38 | 39 | *Non-Casual Info: 40 | *Tries to sync with Devilment, Litany, Finishes. (If raid group is proper, this shouldn't be an hichup. If just casual content, this really shouldn't be an hichup) 41 | 42 | *Late weave Arcane Circle, default Early Gluttony opener, option to perform Late Gluttony opener (don't turn on unless, you're confident, syncing buffs, etc.) 43 | 44 | *Double Enshroud, but, still refining, sometime 2nd Communio does not fit. No triple enshroud yet, I have mixed feelings about that. 45 | 46 | *The other standards stuff, ensures Soul Gauge or Soul Slice is ready keep off CD Gluttony, True North only when advantageous, etc etc, this the boring stuff. 47 | 48 | _Icon Folder Placement_ 49 | **1. Download Folder** 50 | 51 | 52 | **2. Place Downloaded Folder** 53 | in `C:\MINIONAPP\Bots\FFXIVMinion64\GUI`, so the path of all the icons are `C:\MINIONAPP\Bots\FFXIVMinion64\GUI\H_UI_Icons` 54 | 55 | 56 | 57 | ## Quest Profile Info: (H) MSQ Endwalker FINISHED 58 | * **FINISHED VERSION, ALL 108 MSQ, ALL 24 ACQ, Now Included with +4 Side Quests to unlock 90 Dungeons and etc.** 59 | 60 | * **Do not leave bot unattended while using this Quest Profile** 61 | * That's just disclaimer, this been thoroughly tested. But dang. Bugs always appear anyway, I know that now. haha. 62 | 63 | * It does **3 Duty** now, <**As the Heaven Burns**> <**Endwalker**> <**Frosty Reception**>> 64 | 65 | * All snipes completed thanks to 66 | 67 | * Custom Route for Aether Current, trying to be efficient. 68 | 69 | 70 | 71 | 72 | ## Info 2 73 | 74 | Text 2 75 | 76 | ### TextText 77 | 78 | Text 79 | 80 | * ex1 81 | * ex2 82 | * ex3 83 | * ex4 84 | 85 | exex 86 | 87 | ## Text 5 88 | 89 | End 90 | -------------------------------------------------------------------------------- /HatterLib/buy_housing.lua: -------------------------------------------------------------------------------- 1 | local tbl = { 2 | 3 | 4 | Execute = function() 5 | 6 | if TimeSince(h_lib.timers.buy_housing) > math.random( h_lib.Settings.auto_buy_housing_min_delay, h_lib.Settings.auto_buy_housing_min_delay + h_lib.Settings.auto_buy_housing_pulse_atop ) then 7 | h_lib.timers.buy_housing = Now() 8 | 9 | if not MGetTarget() then 10 | 11 | if TimeSince(h_lib.timers.wait_after_placard) > math.random( h_lib.Settings.auto_buy_housing_delay_between_buys, h_lib.Settings.auto_buy_housing_delay_between_buys + h_lib.Settings.auto_buy_housing_delay_between_buys_pulse_atop ) - TimeSince( h_lib.timers.buy_housing ) then 12 | local tbl = EntityList('maxdistance2d=2') 13 | if table.valid(tbl) then 14 | for key, entity in pairs(tbl) do 15 | if entity.name == "Placard" and entity.interactable and entity.type == 7 then 16 | h_lib.UIUX.setLogicMessage("1. Found , targetting.") 17 | Player:SetTarget(entity.id) 18 | return 19 | end 20 | end 21 | else 22 | h_lib.UIUX.setLogicMessage("1. No within range, ending.") 23 | h_lib.Settings.auto_buy_housing = false 24 | h_lib.auto_buy_housing_teleport() 25 | end 26 | end 27 | 28 | 29 | elseif GetControl("HousingSignBoard") and GetControl("HousingSignBoard"):IsOpen() then 30 | if TimeSince( h_lib.timers.HousingSignBoard ) == 0 then 31 | h_lib.timers.HousingSignBoard = Now() 32 | return 33 | elseif TimeSince( h_lib.timers.HousingSignBoard ) >= 50 then 34 | h_lib.timers.HousingSignBoard = 0 35 | h_lib.UIUX.setLogicMessage("2. Opened.") 36 | if GetControl("HousingSignBoard"):GetStrings()[6] == "" and GetControl("HousingSignBoard"):GetStrings()[13] == "" then 37 | h_lib.UIUX.setLogicMessage("2. Plot Available, Owner: <" .. tostring(GetControl("HousingSignBoard"):GetStrings()[13]) .. ">, proceeding with Purchase.") 38 | GetControl("HousingSignBoard"):Action("PurchaseLand", 0) 39 | h_lib.timers.auto_buy_housing_timeout = Now() 40 | return 41 | else 42 | h_lib.UIUX.setLogicMessage("2. Someone ones this plot, Owner: <" .. tostring(GetControl("HousingSignBoard"):GetStrings()[13]) .. ">, ending.") 43 | GetControl("HousingSignBoard"):Close() 44 | h_lib.Settings.auto_buy_housing = false 45 | h_lib.auto_buy_housing_teleport() 46 | end 47 | end 48 | 49 | 50 | elseif GetControl("SelectString") and GetControl("SelectString"):IsOpen() then 51 | 52 | h_lib.UIUX.setLogicMessage("3. Opened.") 53 | local STRINGS = GetControl("SelectString"):GetData() 54 | 55 | if h_lib.Settings.auto_buy_housing_type == 1 then 56 | for index = 0, 3 do 57 | if STRINGS[index] and string.find( STRINGS[index], "Private Individual." ) then 58 | h_lib.UIUX.setLogicMessage("3. string found, choosing option") 59 | GetControl("SelectString"):Action("SelectIndex", index) 60 | h_lib.timers.auto_buy_housing_timeout = Now() 61 | return 62 | end 63 | end 64 | elseif h_lib.Settings.auto_buy_housing_type == 2 then 65 | for index = 0, 3 do 66 | if STRINGS[index] and string.find( STRINGS[index], "Free Company." ) then 67 | h_lib.UIUX.setLogicMessage("3. string found, choosing option") 68 | GetControl("SelectString"):Action("SelectIndex", index) 69 | h_lib.timers.auto_buy_housing_timeout = Now() 70 | return 71 | end 72 | end 73 | elseif h_lib.Settings.auto_buy_housing_type == 3 then 74 | for index = 0, 3 do 75 | if STRINGS[index] and string.find( STRINGS[index], "Private Residence Relocation" ) then 76 | h_lib.UIUX.setLogicMessage("3. string found, choosing option") 77 | GetControl("SelectString"):Action("SelectIndex", index) 78 | h_lib.timers.auto_buy_housing_timeout = Now() 79 | return 80 | end 81 | end 82 | elseif h_lib.Settings.auto_buy_housing_type == 4 then 83 | for index = 0, 3 do 84 | if STRINGS[index] and string.find( STRINGS[index], "Free Company Estate Relocation" ) then 85 | h_lib.UIUX.setLogicMessage("3. string found, choosing option") 86 | GetControl("SelectString"):Action("SelectIndex", index) 87 | h_lib.timers.auto_buy_housing_timeout = Now() 88 | return 89 | end 90 | end 91 | end 92 | 93 | h_lib.UIUX.setLogicMessage("3. Error, could not find DM Hatter if have time. Ending.") 94 | h_lib.Settings.auto_buy_housing = false 95 | h_lib.auto_buy_housing_teleport() 96 | 97 | 98 | elseif GetControl("SelectYesno") and GetControl("SelectYesno"):IsOpen() then 99 | 100 | h_lib.UIUX.setLogicMessage("4. Opened.") 101 | 102 | if h_lib.Settings.auto_buy_housing_type == 1 or h_lib.Settings.auto_buy_housing_type == 2 then 103 | local L_TYPE = "bob" 104 | if h_lib.Settings.auto_buy_housing_type == 1 then 105 | L_TYPE = "Personal" 106 | elseif h_lib.Settings.auto_buy_housing_type == 2 then 107 | L_TYPE = "Free-Company" 108 | end 109 | if string.find( GetControl("SelectYesno"):GetStrings()[2], "Purchase this plot of land" ) then 110 | h_lib.UIUX.setLogicMessage("4. Found option, proceeding.") 111 | GetControl("SelectYesno"):Action("Yes", 0) 112 | h_lib.timers.auto_buy_housing_timeout = Now() 113 | h_lib.timers.wait_after_placard = Now() 114 | return 115 | end 116 | elseif h_lib.Settings.auto_buy_housing_type == 3 then 117 | if string.find( GetControl("SelectYesno"):GetStrings()[2], "Relocate to a new private estate" ) then 118 | h_lib.UIUX.setLogicMessage("4. Found option, proceeding.") 119 | GetControl("SelectYesno"):Action("Yes", 0) 120 | h_lib.timers.auto_buy_housing_timeout = Now() 121 | h_lib.timers.wait_after_placard = Now() 122 | return 123 | end 124 | elseif h_lib.Settings.auto_buy_housing_type == 4 then 125 | if string.find( GetControl("SelectYesno"):GetStrings()[2], "Relocate to a new free company estate" ) then 126 | h_lib.UIUX.setLogicMessage("4. Found option, proceeding.") 127 | GetControl("SelectYesno"):Action("Yes", 0) 128 | h_lib.timers.auto_buy_housing_timeout = Now() 129 | h_lib.timers.wait_after_placard = Now() 130 | return 131 | end 132 | end 133 | 134 | h_lib.UIUX.setLogicMessage("4. Error, could not find DM Hatter if have time. Ending.") 135 | h_lib.Settings.auto_buy_housing = false 136 | h_lib.auto_buy_housing_teleport() 137 | 138 | 139 | elseif MGetTarget().name == "Placard" and MGetTarget().interactable and MGetTarget().type == 7 then 140 | h_lib.UIUX.setLogicMessage("1. is targeted, interacting with ") 141 | Player:Interact(MGetTarget().id) 142 | h_lib.timers.auto_buy_housing_timeout = Now() 143 | return 144 | 145 | 146 | end 147 | 148 | 149 | 150 | 151 | -- TIMEOUT 152 | if h_lib.timers.auto_buy_housing_timeout == 0 then 153 | h_lib.timers.auto_buy_housing_timeout = Now() 154 | end 155 | 156 | h_lib.UIUX.setLogicMessage("No UI found, time until Timed-Out : " .. tostring( h_lib.Settings.auto_buy_housing_timeout - TimeSince(h_lib.timers.auto_buy_housing_timeout) ) ) 157 | if TimeSince(h_lib.timers.auto_buy_housing_timeout) > h_lib.Settings.auto_buy_housing_timeout then 158 | h_lib.timers.auto_buy_housing_timeout = 0 159 | h_lib.Settings.auto_buy_housing = false 160 | h_lib.auto_buy_housing_teleport() 161 | h_lib.UIUX.setLogicMessage("Ending, Timed-Out.") 162 | end 163 | 164 | 165 | 166 | end 167 | 168 | end, 169 | 170 | 171 | 172 | Name = "Bob" 173 | } 174 | 175 | return tbl -------------------------------------------------------------------------------- /QuestProfiles/(H) J ShB DPS Class Quests.info: -------------------------------------------------------------------------------- 1 | -- Persistent Data 2 | local multiRefObjects = { 3 | 4 | } -- multiRefObjects 5 | local obj1 = { 6 | ["names"] = { 7 | ["en"] = "(H) J ShB DPS Class Quests 70-80"; 8 | ["de"] = "(H) J ShB DPS Class Quests 70-80"; 9 | ["fr"] = "(H) J ShB DPS Class Quests 70-80"; 10 | ["jp"] = "(H) J ShB DPS Class Quests 70-80"; 11 | ["cn"] = "(H) J ShB DPS Class Quests 70-80"; 12 | ["kr"] = "(H) J ShB DPS Class Quests 70-80"; 13 | }; 14 | ["misc"] = { 15 | [1] = { 16 | ["condition"] = { 17 | ["QuestCompleted(3278)"] = true; 18 | }; 19 | ["notes"] = { 20 | [1] = "Renda-Rae soul has been freed."; 21 | [2] = ""; 22 | [3] = " Profile's End"; 23 | }; 24 | ["type"] = "endprofile"; 25 | }; 26 | }; 27 | ["quests"] = { 28 | [3273] = { 29 | ["level"] = 70; 30 | ["name"] = "No Greater Sport"; 31 | ["prereq"] = { 32 | ["Player.level >= 70"] = true; 33 | }; 34 | ["steps"] = { 35 | [1] = { 36 | ["id"] = 1030126; -- Lue-Reeq 37 | ["mapid"] = 819; 38 | ["pos"] = { 39 | ["x"] = -18.14; 40 | ["y"] = 4.00; 41 | ["z"] = 235.40; 42 | }; 43 | ["type"] = "start"; 44 | ["interactrange"] = 3; 45 | }; 46 | [2] = { 47 | ["complete"] = { 48 | ["step"] = 2; 49 | }; 50 | ["id"] = 1030127; -- Lue-Reeq 51 | ["index"] = 1; 52 | ["mapid"] = 813; 53 | ["pos"] = { 54 | ["x"] = 200.12; 55 | ["y"] = -0.39; 56 | ["z"] = 389.46; 57 | }; 58 | ["type"] = "interact"; 59 | ["dismountdistance"] = math.random(10,14); 60 | ["interactrange"] = 3; 61 | }; 62 | [3] = { 63 | ["complete"] = { 64 | ["step"] = 3; 65 | }; 66 | ["id"] = 2010396; -- Destination 67 | ["index"] = 2; 68 | ["mapid"] = 813; 69 | ["pos"] = { 70 | ["x"] = 195.48; 71 | ["y"] = -0.75; 72 | ["z"] = 370.93; 73 | }; 74 | ["type"] = "useitem"; 75 | ["dismountdistance"] = math.random(10,14); 76 | ["itemid"] = 2002718; 77 | ["interactrange"] = 3; 78 | }; 79 | [4] = { 80 | ["complete"] = { 81 | ["step"] = 4; 82 | }; 83 | ["id"] = 2010397; -- Destination Kill 84 | ["index"] = 3; 85 | ["mapid"] = 813; 86 | ["pos"] = { 87 | ["x"] = 203.91; 88 | ["y"] = -0.53; 89 | ["z"] = 389.82; 90 | }; 91 | ["type"] = "interact"; 92 | ["dismountdistance"] = math.random(10,14); 93 | ["killaggro"] = true; 94 | ["interactrange"] = 3; 95 | }; 96 | [5] = { 97 | ["complete"] = { 98 | ["step"] = 255; 99 | }; 100 | ["id"] = 1031013; -- Lue-Reeq 101 | ["index"] = 4; 102 | ["mapid"] = 813; 103 | ["pos"] = { 104 | ["x"] = 200.09; 105 | ["y"] = -0.39; 106 | ["z"] = 389.46; 107 | }; 108 | ["type"] = "interact"; 109 | ["dismountdistance"] = math.random(10,14); 110 | ["interactrange"] = 3; 111 | }; 112 | [6] = { 113 | ["condition"] = { 114 | ["step"] = 255; 115 | }; 116 | ["id"] = 1030964; -- Lue-Reeq 117 | ["mapid"] = 819; 118 | ["pos"] = { 119 | ["x"] = -18.14; 120 | ["y"] = 4.00; 121 | ["z"] = 235.40; 122 | }; 123 | ["type"] = "complete"; 124 | ["interactrange"] = 3; 125 | ["itemreward"] = false; 126 | }; 127 | }; 128 | }; 129 | [3274] = { 130 | ["level"] = 72; 131 | ["name"] = "Vengeance in Defeat"; 132 | ["prereq"] = { 133 | ["Player.level >= 72"] = true; 134 | ["QuestCompleted(3273)"] = true; 135 | }; 136 | ["steps"] = { 137 | [1] = { 138 | ["id"] = 1030964; -- Lue-Reeq 139 | ["mapid"] = 819; 140 | ["pos"] = { 141 | ["x"] = -18.14; 142 | ["y"] = 4.00; 143 | ["z"] = 235.40; 144 | }; 145 | ["type"] = "start"; 146 | ["interactrange"] = 3; 147 | }; 148 | [2] = { 149 | ["complete"] = { 150 | ["step"] = 2; 151 | }; 152 | ["id"] = 1030130; -- Lue-Reeq 153 | ["index"] = 1; 154 | ["mapid"] = 815; 155 | ["pos"] = { 156 | ["x"] = 469.08; 157 | ["y"] = -32.78; 158 | ["z"] = -288.44; 159 | }; 160 | ["type"] = "interact"; 161 | ["dismountdistance"] = math.random(10,14); 162 | ["interactrange"] = 3; 163 | }; 164 | [3] = { 165 | ["complete"] = { 166 | ["step"] = 3; 167 | }; 168 | ["id"] = 2010399; -- Destination 169 | ["index"] = 2; 170 | ["mapid"] = 815; 171 | ["pos"] = { 172 | ["x"] = 613.40; 173 | ["y"] = -33.59; 174 | ["z"] = -180.96; 175 | }; 176 | ["type"] = "interact"; 177 | ["dismountdistance"] = math.random(10,14); 178 | ["interactrange"] = 3; 179 | }; 180 | [4] = { 181 | ["complete"] = { 182 | ["step"] = 4; 183 | }; 184 | ["id"] = 2010400; -- Destination Kill 185 | ["index"] = 3; 186 | ["mapid"] = 815; 187 | ["pos"] = { 188 | ["x"] = 536.92; 189 | ["y"] = -33.74; 190 | ["z"] = 38.83; 191 | }; 192 | ["type"] = "interact"; 193 | ["dismountdistance"] = math.random(10,14); 194 | ["killaggro"] = true; 195 | ["interactrange"] = 3; 196 | }; 197 | [5] = { 198 | ["complete"] = { 199 | ["step"] = 255; 200 | }; 201 | ["id"] = 2010401; -- Destination 202 | ["index"] = 4; 203 | ["mapid"] = 815; 204 | ["pos"] = { 205 | ["x"] = 469.08; 206 | ["y"] = -32.79; 207 | ["z"] = -288.44; 208 | }; 209 | ["type"] = "interact"; 210 | ["dismountdistance"] = math.random(10,14); 211 | ["interactrange"] = 3; 212 | }; 213 | [6] = { 214 | ["delay"] = 0; 215 | ["condition"] = { 216 | ["step"] = 255; 217 | }; 218 | ["id"] = 1030964; -- Lue-Reeq 219 | ["mapid"] = 819; 220 | ["pos"] = { 221 | ["x"] = -18.14; 222 | ["y"] = 4.00; 223 | ["z"] = 235.40; 224 | }; 225 | ["type"] = "complete"; 226 | ["interactrange"] = 3; 227 | ["itemreward"] = false; 228 | }; 229 | }; 230 | }; 231 | [3275] = { 232 | ["level"] = 74; 233 | ["name"] = "Freedom from Privilege"; 234 | ["prereq"] = { 235 | ["Player.level >= 74"] = true; 236 | ["QuestCompleted(3274)"] = true; 237 | }; 238 | ["steps"] = { 239 | [1] = { 240 | ["id"] = 1030964; -- Lue-Reeq 241 | ["mapid"] = 819; 242 | ["pos"] = { 243 | ["x"] = -18.14; 244 | ["y"] = 4.00; 245 | ["z"] = 235.40; 246 | }; 247 | ["type"] = "start"; 248 | ["interactrange"] = 3; 249 | }; 250 | [2] = { 251 | ["complete"] = { 252 | ["step"] = 2; 253 | }; 254 | ["id"] = 1030135; -- Lue-Reeq 255 | ["index"] = 1; 256 | ["mapid"] = 814; 257 | ["pos"] = { 258 | ["x"] = -251.42; 259 | ["y"] = 22.20; 260 | ["z"] = 325.80; 261 | }; 262 | ["type"] = "interact"; 263 | ["dismountdistance"] = math.random(10,14); 264 | ["interactrange"] = 3; 265 | }; 266 | [3] = { 267 | ["complete"] = { 268 | ["step"] = 3; 269 | }; 270 | ["id"] = 2010402; -- Destination 271 | ["index"] = 2; 272 | ["mapid"] = 814; 273 | ["pos"] = { 274 | ["x"] = -550.77; 275 | ["y"] = 29.16; 276 | ["z"] = 363.49; 277 | }; 278 | ["type"] = "interact"; 279 | ["dismountdistance"] = math.random(10,14); 280 | ["interactrange"] = 3; 281 | }; 282 | [4] = { 283 | ["complete"] = { 284 | ["step"] = 4; 285 | }; 286 | ["id"] = 2010403; -- Destination 287 | ["index"] = 3; 288 | ["mapid"] = 814; 289 | ["pos"] = { 290 | ["x"] = -550.99; 291 | ["y"] = 41.34; 292 | ["z"] = 252.25; 293 | }; 294 | ["type"] = "interact"; 295 | ["dismountdistance"] = math.random(10,14); 296 | ["interactrange"] = 3; 297 | }; 298 | [5] = { 299 | ["complete"] = { 300 | ["step"] = 5; 301 | }; 302 | ["id"] = 1030136; -- Lue-Reeq 303 | ["index"] = 4; 304 | ["mapid"] = 814; 305 | ["pos"] = { 306 | ["x"] = -192.58; 307 | ["y"] = 26.77; 308 | ["z"] = 248.46; 309 | }; 310 | ["type"] = "interact"; 311 | ["dismountdistance"] = math.random(10,14); 312 | ["interactrange"] = 3; 313 | }; 314 | [6] = { 315 | ["complete"] = { 316 | ["step"] = 255; 317 | }; 318 | ["id"] = 1030140; -- Lue-Reeq 319 | ["index"] = 5; 320 | ["mapid"] = 820; 321 | ["pos"] = { 322 | ["x"] = 67.64; 323 | ["y"] = 82.00; 324 | ["z"] = -53.33; 325 | }; 326 | ["type"] = "interact"; 327 | ["interactrange"] = 3; 328 | }; 329 | [7] = { 330 | ["delay"] = 0; 331 | ["condition"] = { 332 | ["step"] = 255; 333 | }; 334 | ["id"] = 1030964; -- Lue-Reeq 335 | ["mapid"] = 819; 336 | ["pos"] = { 337 | ["x"] = -18.14; 338 | ["y"] = 4.00; 339 | ["z"] = 235.40; 340 | }; 341 | ["type"] = "complete"; 342 | ["conversationindex"] = 1; 343 | ["interactrange"] = 3; 344 | ["itemreward"] = false; 345 | }; 346 | }; 347 | }; 348 | [3276] = { 349 | ["level"] = 76; 350 | ["name"] = "The Hunter's Legacy"; 351 | ["prereq"] = { 352 | ["Player.level >= 76"] = true; 353 | ["QuestCompleted(3275)"] = true; 354 | }; 355 | ["steps"] = { 356 | [1] = { 357 | ["id"] = 1030964; -- Lue-Reeq 358 | ["mapid"] = 819; 359 | ["pos"] = { 360 | ["x"] = -18.14; 361 | ["y"] = 4.00; 362 | ["z"] = 235.40; 363 | }; 364 | ["type"] = "start"; 365 | ["interactrange"] = 3; 366 | }; 367 | [2] = { 368 | ["complete"] = { 369 | ["step"] = 2; 370 | }; 371 | ["id"] = 1030144; -- Lue-Reeq 372 | ["index"] = 1; 373 | ["mapid"] = 814; 374 | ["pos"] = { 375 | ["x"] = 94.68; 376 | ["y"] = 37.38; 377 | ["z"] = 611.11; 378 | }; 379 | ["type"] = "interact"; 380 | ["dismountdistance"] = math.random(10,14); 381 | ["interactrange"] = 3; 382 | }; 383 | --[[ 384 | [3] = { 385 | ["condition"] = { 386 | ["step"] = 2; 387 | }; 388 | ["index"] = 2; 389 | ["notes"] = { 390 | [1] = "Manual Task: Complete Solo Duty for quest -The Hunter's Legacy- to continue."; 391 | [2] = ""; 392 | [3] = " Info 1: Use -Dulling Arrow- to cancel -Preternatural Roar-"; 393 | }; 394 | ["mapid"] = 817; 395 | ["pos"] = { 396 | ["x"] = -190.14; 397 | ["y"] = 12.75; 398 | ["z"] = 591.67; 399 | }; 400 | ["dismountdistance"] = math.random(10,14); 401 | ["type"] = "endprofile"; 402 | }; 403 | ]] 404 | -- BEGIN 405 | [30] = { 406 | ["complete"] = { 407 | ["IsOnMap(875)"] = true; 408 | }; 409 | ["condition"] = { 410 | ["IsOnMap(875)"] = false; 411 | }; 412 | ["id"] = 1030146; -- Lue-Reeq 413 | ["index"] = 2; 414 | ["mapid"] = 817; 415 | ["pos"] = { 416 | ["x"] = -190.14; 417 | ["y"] = 12.75; 418 | ["z"] = 591.67; 419 | }; 420 | ["type"] = "interact"; 421 | ["dismountdistance"] = math.random(10,14); 422 | ["interactrange"] = 3; 423 | }; 424 | 425 | -- FIGHT 426 | [40] = { 427 | ["complete"] = { 428 | ["step"] = 255; 429 | }; 430 | ["condition"] = { 431 | ["IsOnMap(875)"] = true; 432 | }; 433 | ["ids"] = "8397"; 434 | ["index"] = 2; 435 | ["mapid"] = 875; 436 | ["pos"] = { 437 | ["x"] = -247.71; 438 | ["y"] = 10.57; 439 | ["z"] = 703.92; 440 | }; 441 | ["type"] = "dutykill"; 442 | }; 443 | [100] = { 444 | ["id"] = 1030144; -- Lue-Reeq 445 | ["mapid"] = 814; 446 | ["pos"] = { 447 | ["x"] = 94.68; 448 | ["y"] = 37.38; 449 | ["z"] = 611.11; 450 | }; 451 | ["dismountdistance"] = math.random(10,14); 452 | ["type"] = "complete"; 453 | ["interactrange"] = 3; 454 | ["itemreward"] = false; 455 | }; 456 | }; 457 | }; 458 | [3277] = { 459 | ["level"] = 78; 460 | ["name"] = "Fellowship Restored"; 461 | ["prereq"] = { 462 | ["Player.level >= 78"] = true; 463 | ["QuestCompleted(3276)"] = true; 464 | }; 465 | ["steps"] = { 466 | [1] = { 467 | ["id"] = 1030145; -- Olvara 468 | ["mapid"] = 814; 469 | ["pos"] = { 470 | ["x"] = 93.46; 471 | ["y"] = 37.44; 472 | ["z"] = 611.51; 473 | }; 474 | ["type"] = "start"; 475 | ["dismountdistance"] = math.random(10,14); 476 | ["interactrange"] = 3; 477 | }; 478 | [2] = { 479 | ["complete"] = { 480 | ["step"] = 2; 481 | }; 482 | ["id"] = 2010405; -- Destination 483 | ["index"] = 1; 484 | ["mapid"] = 819; 485 | ["pos"] = { 486 | ["x"] = -33.71; 487 | ["y"] = 3.98; 488 | ["z"] = 205.71; 489 | }; 490 | ["type"] = "interact"; 491 | ["interactrange"] = 3; 492 | }; 493 | [3] = { 494 | ["complete"] = { 495 | ["I8AH"] = 1; 496 | }; 497 | ["condition"] = { 498 | ["I8AH"] = 0; 499 | }; 500 | ["id"] = 1027238; -- Mei-Tatch 501 | ["index"] = 2; 502 | ["mapid"] = 819; 503 | ["pos"] = { 504 | ["x"] = -15.49; 505 | ["y"] = 4.00; 506 | ["z"] = 215.38; 507 | }; 508 | ["type"] = "interact"; 509 | ["interactrange"] = 3; 510 | }; 511 | [4] = { 512 | ["complete"] = { 513 | ["I8AH"] = 2; 514 | }; 515 | ["condition"] = { 516 | ["I8AH"] = 1; 517 | }; 518 | ["id"] = 1030147; -- Well-traveled Mage 519 | ["index"] = 2; 520 | ["mapid"] = 819; 521 | ["pos"] = { 522 | ["x"] = 0.60; 523 | ["y"] = 4.00; 524 | ["z"] = 209.28; 525 | }; 526 | ["type"] = "interact"; 527 | ["interactrange"] = 3; 528 | }; 529 | [5] = { 530 | ["complete"] = { 531 | ["step"] = 3; 532 | }; 533 | ["condition"] = { 534 | ["I8AH"] = 2; 535 | }; 536 | ["id"] = 1027323; -- Darlfort 537 | ["index"] = 2; 538 | ["mapid"] = 819; 539 | ["pos"] = { 540 | ["x"] = -42.89; 541 | ["y"] = 4.00; 542 | ["z"] = 242.08; 543 | }; 544 | ["type"] = "interact"; 545 | ["interactrange"] = 3; 546 | }; 547 | [6] = { 548 | ["complete"] = { 549 | ["step"] = 255; 550 | }; 551 | ["id"] = 1030148; -- Lue-Reeq 552 | ["index"] = 3; 553 | ["mapid"] = 817; 554 | ["pos"] = { 555 | ["x"] = -246.57; 556 | ["y"] = 10.15; 557 | ["z"] = 678.22; 558 | }; 559 | ["type"] = "interact"; 560 | ["dismountdistance"] = math.random(10,14); 561 | ["interactrange"] = 3; 562 | }; 563 | [7] = { 564 | ["delay"] = 0; 565 | ["condition"] = { 566 | ["step"] = 255; 567 | }; 568 | ["id"] = 1030145; -- Olvara 569 | ["mapid"] = 814; 570 | ["pos"] = { 571 | ["x"] = 93.46; 572 | ["y"] = 37.44; 573 | ["z"] = 611.51; 574 | }; 575 | ["dismountdistance"] = math.random(10,14); 576 | ["type"] = "complete"; 577 | ["interactrange"] = 3; 578 | ["itemreward"] = true; 579 | }; 580 | }; 581 | }; 582 | [3278] = { 583 | ["level"] = 80; 584 | ["name"] = "Courage Born of Fear"; 585 | ["prereq"] = { 586 | ["Player.level >= 80"] = true; 587 | ["QuestCompleted(3277)"] = true; 588 | }; 589 | ["steps"] = { 590 | [1] = { 591 | ["id"] = 1030144; -- Lue-Reeq 592 | ["mapid"] = 814; 593 | ["pos"] = { 594 | ["x"] = 94.68; 595 | ["y"] = 37.38; 596 | ["z"] = 611.11; 597 | }; 598 | ["dismountdistance"] = math.random(10,14); 599 | ["type"] = "start"; 600 | ["interactrange"] = 3; 601 | }; 602 | [2] = { 603 | ["complete"] = { 604 | ["step"] = 2; 605 | }; 606 | ["id"] = 1027253; -- Loythe 607 | ["index"] = 1; 608 | ["mapid"] = 819; 609 | ["pos"] = { 610 | ["x"] = 17.50; 611 | ["y"] = 20.00; 612 | ["z"] = -190.42; 613 | }; 614 | ["type"] = "interact"; 615 | ["interactrange"] = 3; 616 | }; 617 | [3] = { 618 | ["complete"] = { 619 | ["step"] = 3; 620 | }; 621 | ["id"] = 2010406; -- Destination 622 | ["index"] = 2; 623 | ["mapid"] = 819; 624 | ["pos"] = { 625 | ["x"] = -17.01; 626 | ["y"] = 4.47; 627 | ["z"] = 234.97; 628 | }; 629 | ["type"] = "interact"; 630 | ["interactrange"] = 3; 631 | }; 632 | --[[ 633 | [4] = { 634 | ["condition"] = { 635 | ["step"] = 3; 636 | }; 637 | ["index"] = 3; 638 | ["notes"] = { 639 | [1] = "Manual Task: Complete Solo Duty for quest -Courage Born of Fear- to continue."; 640 | [2] = ""; 641 | [3] = " Info 1: Eliminate Enemies."; 642 | }; 643 | ["mapid"] = 817; 644 | ["pos"] = { 645 | ["x"] = -246.57; 646 | ["y"] = 10.15; 647 | ["z"] = 678.22; 648 | }; 649 | ["dismountdistance"] = math.random(10,14); 650 | ["type"] = "endprofile"; 651 | }; 652 | ]] 653 | [4] = { 654 | ["complete"] = { 655 | ["IsOnMap(871)"] = true; 656 | }; 657 | ["condition"] = { 658 | ["IsOnMap(871)"] = false; 659 | }; 660 | ["id"] = 1030990; -- Lue-Reeq 661 | ["index"] = 3; 662 | ["mapid"] = 817; 663 | ["pos"] = { 664 | ["x"] = -246.57; 665 | ["y"] = 10.15; 666 | ["z"] = 678.22; 667 | }; 668 | ["type"] = "interact"; 669 | ["dismountdistance"] = math.random(10,14); 670 | ["interactrange"] = 3; 671 | }; 672 | 673 | [5] = { 674 | ["complete"] = { 675 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8783,maxdistance2d=50'))"] = false; 676 | }; 677 | ["condition"] = { 678 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8783,maxdistance2d=50'))"] = true; 679 | }; 680 | ["ids"] = "8783"; -- 681 | ["index"] = 3; 682 | ["mapid"] = 871; 683 | ["pos"] = { 684 | ["x"] = -245.01; 685 | ["y"] = 10.26; 686 | ["z"] = 686.95; 687 | }; 688 | ["type"] = "dutykill"; 689 | }; 690 | [10] = { 691 | ["complete"] = { 692 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8784,maxdistance2d=50'))"] = false; 693 | }; 694 | ["condition"] = { 695 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8784,maxdistance2d=50'))"] = true; 696 | }; 697 | ["ids"] = "8784"; -- 698 | ["index"] = 3; 699 | ["mapid"] = 871; 700 | ["pos"] = { 701 | ["x"] = -245.01; 702 | ["y"] = 10.26; 703 | ["z"] = 686.95; 704 | }; 705 | ["type"] = "dutykill"; 706 | }; 707 | [15] = { 708 | ["complete"] = { 709 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8782,maxdistance2d=50'))"] = false; 710 | }; 711 | ["condition"] = { 712 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8782,maxdistance2d=50'))"] = true; 713 | }; 714 | ["ids"] = "8782"; -- 715 | ["index"] = 3; 716 | ["mapid"] = 871; 717 | ["pos"] = { 718 | ["x"] = -245.01; 719 | ["y"] = 10.26; 720 | ["z"] = 686.95; 721 | }; 722 | ["type"] = "dutykill"; 723 | }; 724 | [20] = { 725 | ["complete"] = { 726 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8785,maxdistance2d=50'))"] = false; 727 | }; 728 | ["condition"] = { 729 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8785,maxdistance2d=50'))"] = true; 730 | }; 731 | ["ids"] = "8785"; -- 732 | ["index"] = 3; 733 | ["mapid"] = 871; 734 | ["pos"] = { 735 | ["x"] = -245.01; 736 | ["y"] = 10.26; 737 | ["z"] = 686.95; 738 | }; 739 | ["type"] = "dutykill"; 740 | }; 741 | [25] = { 742 | ["complete"] = { 743 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8781,maxdistance2d=50'))"] = false; 744 | }; 745 | ["condition"] = { 746 | ["ValidTable(EntityList('onmesh,alive,targetable,attackable,contentid=8781,maxdistance2d=50'))"] = true; 747 | }; 748 | ["ids"] = "8781"; -- 749 | ["index"] = 3; 750 | ["mapid"] = 871; 751 | ["pos"] = { 752 | ["x"] = -245.01; 753 | ["y"] = 10.26; 754 | ["z"] = 686.95; 755 | }; 756 | ["type"] = "dutykill"; 757 | }; 758 | [5999] = { 759 | ["complete"] = { 760 | ["step"] = 255; 761 | }; 762 | ["index"] = 5; 763 | ["id"] = 1030145; -- Olvara 764 | ["mapid"] = 814; 765 | ["pos"] = { 766 | ["x"] = 93.46; 767 | ["y"] = 37.44; 768 | ["z"] = 611.51; 769 | }; 770 | ["dismountdistance"] = math.random(10,14); 771 | ["type"] = "interact"; 772 | ["interactrange"] = 3; 773 | }; 774 | [6000] = { 775 | ["condition"] = { 776 | ["step"] = 255; 777 | }; 778 | ["id"] = 1030964; -- Lue-Reeq 779 | ["mapid"] = 819; 780 | ["pos"] = { 781 | ["x"] = -18.14; 782 | ["y"] = 4.00; 783 | ["z"] = 235.40; 784 | }; 785 | ["type"] = "complete"; 786 | ["conversationindex"] = 1; 787 | ["interactrange"] = 3; 788 | ["itemreward"] = true; 789 | }; 790 | }; 791 | }; 792 | }; 793 | }; 794 | return obj1 -------------------------------------------------------------------------------- /CombatRoutines/H Casual Bard.lua: -------------------------------------------------------------------------------- 1 | -- Create the basic profile table. 2 | local profile = {} 3 | 4 | -- Create a GUI table, to hold GUI-related information. 5 | profile.GUI = { 6 | open = false, 7 | visible = true, 8 | name = "Main Setting", 9 | } 10 | 11 | 12 | -- Create a classes table, to specify which classes this profile can be used for. 13 | profile.classes = { 14 | [FFXIV.JOBS.ARCHER] = true, 15 | [FFXIV.JOBS.BARD] = true, 16 | } 17 | 18 | 19 | -- Supers 20 | local _s = {} 21 | 22 | -- Timers 23 | _s.keys = {} 24 | _s.timers = {} 25 | _s.timers.songAttempt = Now() 26 | _s.timers.super_LOCK = Now() 27 | --_s.timers.iron_will = Now() 28 | 29 | 30 | -- 31 | local Traits = { 32 | heavier_shot = 2, 33 | heavy_shot_dmgboost = 20, 34 | heavy_shot_dmgboost_ii = 40, 35 | bite_mastery = 64, 36 | enhanced_empyreal_arrow = 68, 37 | straight_shot_mastery = 70, 38 | enhanced_quick_nock = 72, 39 | bite_mastery_ii = 76, 40 | heavy_shot_mastery = 76, 41 | enhanced_armys_paeon = 78, 42 | soul_void = 80, 43 | quick_nock_mastery = 82, 44 | enhanced_bloodletter = 84, 45 | enhanced_apex_arrow = 86, 46 | enhanced_troubadour = 88, 47 | minstrels_coda = 90 48 | } 49 | 50 | 51 | -- Skills 52 | local peloton = ActionList:Get(1, 7557) 53 | local repelling_shot = ActionList:Get(1, 112) 54 | 55 | local barrage = ActionList:Get(1, 107) 56 | local raging_strikes = ActionList:Get(1, 101) 57 | 58 | local blast_arrow = ActionList:Get(1, 25784) 59 | local apex_arrow = ActionList:Get(1, 16496) 60 | 61 | local quick_nock = ActionList:Get(1, 106) 62 | local ladonsbite = ActionList:Get(1, 25783) 63 | local shadowbite = ActionList:Get(1, 16494) 64 | local rain_of_death = ActionList:Get(1, 117) 65 | 66 | local burst_shot = ActionList:Get(1, 16495) 67 | local heavy_shot = ActionList:Get(1, 97) 68 | 69 | local refulgent_arrow = ActionList:Get(1, 7409) 70 | local straight_shot = ActionList:Get(1, 98) 71 | 72 | local iron_jaws = ActionList:Get(1, 3560) 73 | 74 | local caustic_bite = ActionList:Get(1, 7406) 75 | local venomous_bite = ActionList:Get(1, 100) 76 | 77 | local stormbite = ActionList:Get(1, 7407) 78 | local windbite = ActionList:Get(1, 113) 79 | 80 | local empyreal_arrow = ActionList:Get(1, 3558) 81 | local sidewinder = ActionList:Get(1, 3562) 82 | local bloodletter = ActionList:Get(1, 110) 83 | local second_wind = ActionList:Get(1, 7541) 84 | 85 | local radiant_finale = ActionList:Get(1, 25785) 86 | 87 | local battle_voice = ActionList:Get(1, 118) 88 | local pitch_perfect = ActionList:Get(1, 7404) 89 | local the_wanderers_minuet = ActionList:Get(1, 3559) 90 | local mages_ballad = ActionList:Get(1, 114) 91 | local armys_paeon = ActionList:Get(1, 116) 92 | 93 | local the_wardens_paean = ActionList:Get(1, 3561) 94 | 95 | local head_graze = ActionList:Get(1, 7551) 96 | local foot_graze = ActionList:Get(1, 7553) 97 | local leg_graze = ActionList:Get(1, 7554) 98 | 99 | 100 | 101 | 102 | local troubadour = ActionList:Get(1, 7405) 103 | local natures_minne = ActionList:Get(1, 7408) 104 | 105 | local arms_length = ActionList:Get(1, 7548) 106 | 107 | 108 | 109 | -- oGCD 110 | 111 | 112 | -- 113 | local venomous_bite_db = 124 114 | local windbite_db = 129 115 | 116 | local caustic_bite_db = 1200 117 | local stormbite_db = 1201 118 | 119 | local _db = 1201 120 | 121 | -- 122 | local troubadour_b = 1934 123 | local natures_minne_b = 1202 124 | local arms_length_b = 1209 125 | local peloton_b = 1199 126 | local the_wardens_paean_b = 866 127 | 128 | local _b = 1202 129 | 130 | -- 131 | local barrage_b = 128 132 | local raging_strikes_b = 125 133 | local straight_shot_ready_b = 122 134 | local shadowbite_ready_b = 3002 135 | local blast_arrow_ready_b = 2692 136 | 137 | -- Note: Use Gauge Data instead to verify songs. 138 | local radiant_finale_b = 2964 139 | local radiant_finale_bb = 2722 140 | local battle_voice_b = 141 141 | local the_wanderers_minuet_b = 2216 142 | local mages_ballad_b = 2217 143 | local armys_paeon_b = 2218 144 | 145 | -- 146 | local sprint_b = 50 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | function profile.OnLoad() 158 | settings_useAOE = ACR.GetSetting( "settings_useAOE", true ) 159 | settings_use_dots = ACR.GetSetting( "settings_use_dots", true ) 160 | settings_dots_triggerHP = ACR.GetSetting( "settings_dots_triggerHP", 1.8 ) 161 | settings_dots_modifier = ACR.GetSetting( "settings_dots_modifier", 2 ) 162 | settings_use_second_wind = ACR.GetSetting( "settings_use_second_wind", true ) 163 | settings_use_second_wind_HP = ACR.GetSetting( "settings_use_second_wind_HP", 65 ) 164 | settings_use_raging_strikes = ACR.GetSetting( "settings_use_raging_strikes", true ) 165 | settings_singSong = ACR.GetSetting( "settings_singSong", true ) 166 | settings_use_natures_minne = ACR.GetSetting( "settings_use_natures_minne", true ) 167 | settings_use_peloton = ACR.GetSetting( "settings_use_peloton", true ) 168 | settings_head_graze = ACR.GetSetting( "settings_head_graze", true ) 169 | settings_apex_arrow_soulgauge = ACR.GetSetting( "settings_apex_arrow_soulgauge", 90 ) 170 | end 171 | 172 | 173 | -- The OnOpen() function is fired when a user pressed "View Profile Options" on the main ACR window. 174 | function profile.OnOpen() 175 | profile.GUI.open = true 176 | end 177 | 178 | 179 | 180 | function profile.Draw() 181 | if (profile.GUI.open) then 182 | profile.GUI.visible, profile.GUI.open = GUI:Begin(profile.GUI.name, profile.GUI.open) 183 | if ( profile.GUI.visible ) then 184 | GUI:PushItemWidth(50) 185 | ACR.GUIVarUpdate( GUI:Checkbox("AOE",settings_useAOE) ,"settings_useAOE" ) 186 | ACR.GUIVarUpdate( GUI:Checkbox("Dots",settings_use_dots) ,"settings_use_dots" ) 187 | ACR.GUIVarUpdate( GUI:InputFloat("Dot when Enemy Current HP >= this_value * Player Max HP",settings_dots_triggerHP) ,"settings_dots_triggerHP" ) 188 | ACR.GUIVarUpdate( GUI:InputFloat("Dot when current Dot duration <= this_value * globalRecast",settings_dots_modifier) ,"settings_dots_modifier" ) 189 | ACR.GUIVarUpdate( GUI:Checkbox("Raging Strikes",settings_use_raging_strikes) ,"settings_use_raging_strikes" ) 190 | ACR.GUIVarUpdate( GUI:Checkbox("Sing Songs",settings_singSong) ,"settings_singSong" ) 191 | ACR.GUIVarUpdate( GUI:Checkbox("2nd Wind",settings_use_second_wind) ,"settings_use_second_wind" ) 192 | GUI:PopItemWidth() 193 | GUI:PushItemWidth(80) 194 | ACR.GUIVarUpdate( GUI:InputInt("Use when HP below or equals this %",settings_use_second_wind_HP) ,"settings_use_second_wind_HP" ) 195 | ACR.GUIVarUpdate( GUI:InputInt("Use when over X ",settings_apex_arrow_soulgauge) ,"settings_apex_arrow_soulgauge" ) 196 | GUI:Text('Below Does Nothing') 197 | ACR.GUIVarUpdate( GUI:Checkbox("Nature\'s Minne",settings_use_natures_minne) ,"settings_use_natures_minne" ) 198 | if GUI:IsItemHovered(GUI.HoveredFlags_Default) then GUI:SetTooltip( "Currently does nothing." ) end 199 | ACR.GUIVarUpdate( GUI:Checkbox("Peloton",settings_use_peloton) ,"settings_use_peloton" ) 200 | if GUI:IsItemHovered(GUI.HoveredFlags_Default) then GUI:SetTooltip( "Currently does nothing." ) end 201 | ACR.GUIVarUpdate( GUI:Checkbox("Head Graze",settings_head_graze) ,"settings_head_graze" ) 202 | if GUI:IsItemHovered(GUI.HoveredFlags_Default) then GUI:SetTooltip( "Currently does nothing." ) end 203 | GUI:PopItemWidth() 204 | end 205 | GUI:End() 206 | end 207 | end 208 | 209 | 210 | -- Adds a customizable header to the top of the ffxivminion task window. 211 | function profile.DrawHeader() 212 | 213 | end 214 | 215 | 216 | -- Adds a customizable footer to the top of the ffxivminion task window. 217 | function profile.DrawFooter() 218 | 219 | end 220 | 221 | 222 | function profile.OnUpdate(event, tickcount) 223 | 224 | end 225 | 226 | 227 | -- The OnClick function is fired when a user clicks on the ACR party interface. 228 | -- It accepts 5 parameters: 229 | -- mouse /int/ - Possible values are 0 (Left-click), 1 (Right-click), 2 (Middle-click) 230 | -- shiftState /bool/ - Is shift currently pressed? 231 | -- controlState /bool/ - Is control currently pressed? 232 | -- altState /bool/ - Is alt currently pressed? 233 | -- entity /table/ - The entity information for the party member that was clicked on. 234 | function profile.OnClick(mouse,shiftState,controlState,altState,entity) 235 | 236 | end 237 | 238 | -- AOE Functions 239 | 240 | --Cone AOE, Between Player and Target 241 | function EntityCountBetweenPlayerAndTarget( _input_range ) 242 | local TTarget = MGetTarget() or nil 243 | local tbl = EntityList('alive,attackable,targetable,onmesh,maxdistance2d='..tostring( math.ceil( _input_range ) ) ) 244 | local return_count = 0 245 | 246 | if TTarget and table.valid(tbl) then 247 | local count = 0 248 | for k, v in pairs(tbl) do 249 | if IsEntityHitboxFrontIfPlayerFacingTarget(v, TTarget) then 250 | count = count + 1 251 | end 252 | return_count = count 253 | end 254 | return return_count 255 | end 256 | return 0 257 | end 258 | 259 | function IsEntityHitboxFrontIfPlayerFacingTarget(entity, target) 260 | local TTarget = target or nil 261 | if TTarget ~= nil then 262 | if entity then 263 | if entity.id == Player.id then return false end 264 | 265 | local mpos = TTarget.pos 266 | local ppos = Player.pos 267 | local epos = entity.pos 268 | 269 | local playerHeading = math.atan2(mpos.x - ppos.x, mpos.z - ppos.z) 270 | 271 | local eradius = entity.hitradius or 0 272 | --local distance = Distance2D(epos.x,epos.z,ppos.x,ppos.z) 273 | 274 | local entityHeading = math.atan2(ppos.x - epos.x, ppos.z - epos.z) 275 | 276 | local neweposx = epos.x + eradius* math.cos(entityHeading) 277 | local neweposz = epos.z + eradius* math.sin(entityHeading) 278 | 279 | local playerAngle = math.atan2(neweposx - ppos.x, neweposz - ppos.z) 280 | 281 | local deviation = playerAngle - playerHeading 282 | local absDeviation = math.abs(deviation) 283 | local leftover = math.abs(absDeviation - math.pi) 284 | 285 | if (leftover > (math.pi * 0.50) and leftover < (math.pi * 1.50)) then 286 | return true 287 | end 288 | end 289 | return false 290 | end 291 | return false 292 | end 293 | 294 | --Circle AOE, Surrounding Player. Note: Not used in this Bard profile. 295 | function EntityWithinRangeOfPlayer( _input_range ) 296 | local return_count = 0 297 | local tbl = EntityList('alive,attackable,targetable,onmesh,maxdistance2d='..tostring( math.ceil( _input_range ) ) ) 298 | if table.valid(tbl) then 299 | for k, v in pairs(tbl) do 300 | if v.distance2d <= 3.5 then 301 | return_count = return_count + 1 302 | end 303 | end 304 | return return_count 305 | end 306 | return 0 307 | end 308 | 309 | --Bomb AOE, Surrounding Target 310 | function EntityWithinRangeOfTarget( _input_range, _input_radius ) 311 | local TTarget = MGetTarget() or nil 312 | local tbl = MEntityList("alive,attackable,targetable,onmesh,maxdistance2d=" ..tostring( math.ceil( _input_range + _input_radius ) ) ) 313 | if TTarget and table.valid(tbl) then 314 | local return_count = 1 315 | for id, entity in pairs(tbl) do 316 | local exactDistance2d = Distance2D(TTarget.pos.x, TTarget.pos.z, entity.pos.x, entity.pos.z) 317 | local desiredDistance2d = exactDistance2d - entity.hitradius 318 | if desiredDistance2d < _input_radius then 319 | return_count = return_count + 1 320 | end 321 | end 322 | return return_count 323 | end 324 | return 0 325 | end 326 | 327 | 328 | -- 329 | 330 | local PulseRate = gPulseTime*0.001 331 | local TimeLastSwitchTarget = Now() 332 | local TimeLastSwitchWait = 550 333 | 334 | 335 | -- The Cast() function is where the magic happens. 336 | -- Action code should be called and fired here. 337 | function profile.Cast() 338 | 339 | math.randomseed(os.time()) 340 | 341 | 342 | --[[ 343 | function super_LOCK() 344 | if TimeSince(_s.timers.super_LOCK) >= gPulseTime then 345 | _s.timers.super_LOCK = Now() 346 | return true 347 | else 348 | return false 349 | end 350 | end 351 | 352 | if super_LOCK() then 353 | return 354 | end]] 355 | 356 | 357 | -- These variables need to be updated somewhere like here, if outside this .Cast or .onUpdate, it won't update for example. 358 | local globalRecast = heavy_shot.recasttime 359 | local globalRecastPlusPulse = heavy_shot.recasttime + PulseRate 360 | local tillNextGCD = heavy_shot.cdmax - heavy_shot.cd 361 | local tillNextGCDPlusPulse = PulseRate + tillNextGCD 362 | local lastCast = Player.castinginfo.lastcastid 363 | local oGCD_lateWeave = 0.50 364 | 365 | local SongType = Player.gauge[1] 366 | local SongGauge = Player.gauge[2] 367 | local SongRemainingTime = Player.gauge[3] 368 | local SoulGauge = Player.gauge[4] 369 | 370 | local Songs = { the_wanderers_minuet = 15, mages_ballad = 5, armys_paeon = 10 } 371 | local Songs_Coda = { } 372 | 373 | --[[ 374 | local aliveParty = MEntityList('myparty,los,alive,targetable,maxdistance2d=30') 375 | local lowestAliveParty = MEntityList('lowesthealth,myparty,los,alive,targetable,maxdistance2d=30') 376 | local alivePartyAOEheal = MEntityList('myparty,los,alive,targetable,maxdistance2d=15') 377 | local deadParty = MEntityList('myparty,los,dead,targetable,maxdistance2d=25') 378 | ]] 379 | 380 | -- Check if trait is unlocked by level 381 | function hasTrait( _string_trait_name ) 382 | return Player.level >= Traits[ _string_trait_name ] 383 | end 384 | -- Check if can Early Weave 385 | function isEarlyWeavable() 386 | return tillNextGCD >= globalRecast - oGCD_lateWeave 387 | end 388 | -- Check if can Late Weave 389 | function isLateWeavable() 390 | return tillNextGCD <= oGCD_lateWeave + 0.05 and tillNextGCD >= oGCD_lateWeave 391 | end 392 | 393 | -- Check if off GlobalRecast 394 | function isCurrentlyOffGCD() 395 | return tillNextGCD >= oGCD_lateWeave 396 | end 397 | 398 | -- Return MS Cooldown of Skill 399 | function getCooldown(skill) 400 | return skill.cdmax - skill.cd 401 | end 402 | 403 | -- Check if Cooldown is less than or equal to 404 | function isCooldown_lessOrEqual(_skill, _num_ms) 405 | return _skill.cdmax - _skill.cd <= _num_ms 406 | end 407 | 408 | function lastCastIs( _skill ) 409 | return Player.castinginfo.lastcastid == _skill.id 410 | end 411 | 412 | function lastCastNot( _skill ) 413 | return Player.castinginfo.lastcastid ~= _skill.id 414 | end 415 | 416 | --[[ 417 | -- Check if respected Song is being sung 418 | function isSong_Minuet() 419 | d(SongType.." songtype "..Songs["the_wanderers_minuet"].." m "..Songs["mages_ballad"].." b "..Songs["armys_paeon"]) 420 | return SongType == Songs["the_wanderers_minuet"] 421 | end 422 | function isSong_Ballad() 423 | d(tostring((SongType == Songs["mages_ballad"])).." song is minute") 424 | return SongType == Songs["mages_ballad"] 425 | end 426 | function isSong_Army() 427 | d(tostring((SongType == Songs["armys_paeon"])).." song is minute") 428 | return SongType == Songs["armys_paeon"] 429 | end 430 | function isNo_Songs() 431 | if isSong_Minuet() or isSong_Ballad() or isSong_Army() then 432 | return false 433 | else 434 | return true 435 | end 436 | end 437 | ]] 438 | 439 | -- Check if respected Song is being sung 440 | function isSong_Minuet() 441 | return PlayerHasBuffs(the_wanderers_minuet_b) 442 | end 443 | function isSong_Ballad() 444 | return PlayerHasBuffs(mages_ballad_b) 445 | end 446 | function isSong_Army() 447 | return PlayerHasBuffs(armys_paeon_b) 448 | end 449 | function isNo_Songs() 450 | if isSong_Minuet() or isSong_Ballad() or isSong_Army() then 451 | return false 452 | else 453 | return true 454 | end 455 | end 456 | 457 | -- Check if Song Duration is less than or equal to 458 | function songTime_lessOrEqual( _num_ms ) 459 | return SongRemainingTime <= _num_ms*1000 460 | end 461 | 462 | -- Check if should perform cone AOE 463 | function shouldUse_ConeAoe( _num_target_threshold ) 464 | if EntityCountBetweenPlayerAndTarget( quick_nock.range ) >= _num_target_threshold then return true else return false end 465 | end 466 | 467 | function shouldUse_shadowbite( _num_target_threshold ) 468 | if EntityWithinRangeOfTarget( shadowbite.range, shadowbite.radius ) >= _num_target_threshold then return true else return false end 469 | end 470 | 471 | 472 | 473 | 474 | 475 | local Target = MGetTarget() or nil 476 | local Target_distance2d = nil 477 | 478 | if Target then 479 | Target_distance2d =Target.distance2d 480 | end 481 | 482 | 483 | --Functions 484 | -- Use AOE Attacks Logics. 485 | function useAOE_skills(Target) 486 | 487 | if settings_useAOE and shouldUse_ConeAoe( 2 ) then 488 | local COOLDOWN_OFFSET = 15 489 | if hasTrait( "enhanced_bloodletter" ) then 490 | COOLDOWN_OFFSET = 0 491 | end 492 | -- oGCD 493 | if settings_use_raging_strikes and raging_strikes:IsReady(Player.id) and Target_distance2d < quick_nock.range and (quick_nock.usable or ladonsbite.usable) then 494 | if isCooldown_lessOrEqual( barrage, 2*globalRecast ) or PlayerHasBuffs( barrage_b ) then 495 | raging_strikes:Cast(Player.id) 496 | return "confirm" 497 | end 498 | end 499 | 500 | 501 | if isSong_Ballad() and isCooldown_lessOrEqual( rain_of_death, 2*globalRecast + 7.5 + COOLDOWN_OFFSET ) then 502 | if rain_of_death:IsReady(Target.id) then 503 | rain_of_death:Cast(Target.id) 504 | return "confirm" 505 | end 506 | elseif isCooldown_lessOrEqual( rain_of_death, 2*globalRecast + COOLDOWN_OFFSET ) then 507 | if rain_of_death:IsReady(Target.id) then 508 | rain_of_death:Cast(Target.id) 509 | return "confirm" 510 | end 511 | elseif PlayerHasBuffs(raging_strikes_b, 0.05) then 512 | if not battle_voice.usable or PlayerHasBuffs(battle_voice_b, 0.05) then 513 | if not radiant_finale.usable or PlayerHasBuffs(radiant_finale_b, 0.05) then 514 | if rain_of_death:IsReady(Target.id) then 515 | rain_of_death:Cast(Target.id) 516 | return "confirm" 517 | end 518 | end 519 | end 520 | end 521 | 522 | 523 | if shouldUse_shadowbite(2) and shadowbite:IsReady(Target.id) then 524 | shadowbite:Cast(Target.id) 525 | return "confirm" 526 | end 527 | 528 | 529 | if ladonsbite:IsReady(Target.id) then 530 | ladonsbite:Cast(Target.id) 531 | return "confirm" 532 | elseif not shadowbite.usable and not shouldUse_ConeAoe( 3 ) and refulgent_arrow:IsReady(Target.id) then 533 | refulgent_arrow:Cast(Target.id) 534 | return "confirm" 535 | elseif quick_nock:IsReady(Target.id) then 536 | quick_nock:Cast(Target.id) 537 | return "confirm" 538 | end 539 | 540 | end 541 | end 542 | 543 | 544 | 545 | 546 | -- Start Skills 547 | 548 | 549 | if isCurrentlyOffGCD() then 550 | 551 | -- 552 | 553 | end 554 | 555 | 556 | 557 | 558 | 559 | 560 | if not Target then 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | elseif Target and Target.attackable and Target.alive then 569 | 570 | 571 | if isEarlyWeavable() then 572 | --[[ 573 | if PlayerMissingBuffs( straight_shot_ready_b ) then 574 | if isCooldown_lessOrEqual( raging_strikes, tillNextGCD - 0.55 ) or PlayerHasBuffs( raging_strikes_b ) then 575 | if barrage:IsReady(Player.id) then 576 | barrage:Cast(Player.id) 577 | return 578 | end 579 | end 580 | end 581 | ]] 582 | end 583 | 584 | --[[ 585 | -- Late Weaving 586 | if isLateWeavable() then 587 | if Player.castinginfo.lastcastid == raging_strikes.id then 588 | if songTime_lessOrEqual( 2*globalRecast ) then 589 | if the_wanderers_minuet:IsReady(Target.id) then 590 | the_wanderers_minuet:Cast(Target.id) 591 | return 592 | elseif mages_ballad:IsReady(Target.id) then 593 | mages_ballad:Cast(Target.id) 594 | return 595 | elseif armys_paeon:IsReady(Target.id) then 596 | armys_paeon:Cast(Target.id) 597 | return 598 | end 599 | end 600 | end 601 | if isCooldown_lessOrEqual( barrage, 2*globalRecast ) or PlayerHasBuffs( barrage_b ) then 602 | raging_strikes:Cast(Player.id) 603 | return 604 | end 605 | end 606 | ]] 607 | 608 | -- oGCD non Late Weaves 609 | if isCurrentlyOffGCD() then 610 | 611 | -- Raging Strikes 612 | if settings_use_raging_strikes then 613 | if isCooldown_lessOrEqual( barrage, 2*globalRecast ) or PlayerHasBuffs( barrage_b ) or not barrage.usable then 614 | if isCooldown_lessOrEqual( battle_voice, 2*globalRecast ) or not battle_voice.usable then 615 | if raging_strikes:IsReady(Player.id) then 616 | raging_strikes:Cast(Player.id) 617 | return 618 | end 619 | end 620 | end 621 | end 622 | 623 | -- Songs 624 | --if TimeSince( _s.timers.songAttempt ) >= globalRecast/4 then 625 | if settings_singSong then 626 | if lastCastNot( the_wanderers_minuet ) and lastCastNot( mages_ballad ) and lastCastNot( armys_paeon ) then 627 | if isNo_Songs() or songTime_lessOrEqual( globalRecast/2 ) then 628 | if the_wanderers_minuet:IsReady(Target.id) then 629 | the_wanderers_minuet:Cast(Target.id) 630 | _s.timers.songAttempt = Now() 631 | return 632 | elseif mages_ballad:IsReady(Target.id) then 633 | mages_ballad:Cast(Target.id) 634 | _s.timers.songAttempt = Now() 635 | return 636 | elseif armys_paeon:IsReady(Target.id) then 637 | armys_paeon:Cast(Target.id) 638 | _s.timers.songAttempt = Now() 639 | return 640 | end 641 | elseif isSong_Army() and songTime_lessOrEqual( globalRecast/2 ) then 642 | if the_wanderers_minuet:IsReady(Target.id) then 643 | the_wanderers_minuet:Cast(Target.id) 644 | _s.timers.songAttempt = Now() 645 | return 646 | elseif mages_ballad:IsReady(Target.id) then 647 | mages_ballad:Cast(Target.id) 648 | _s.timers.songAttempt = Now() 649 | return 650 | end 651 | elseif ( isSong_Minuet() or isSong_Ballad() ) and songTime_lessOrEqual( globalRecast/2 ) then 652 | if armys_paeon:IsReady(Target.id) then 653 | armys_paeon:Cast(Target.id) 654 | _s.timers.songAttempt = Now() 655 | return 656 | end 657 | end 658 | end 659 | end 660 | --end 661 | 662 | -- Battle Voice 663 | if PlayerHasBuffs( raging_strikes_b ) or lastCastIs( raging_strikes ) then 664 | if battle_voice:IsReady(Player.id) then 665 | battle_voice:Cast(Player.id) 666 | return 667 | end 668 | end 669 | 670 | --Radiant Finale 671 | if ( PlayerHasBuffs( raging_strikes_b ) or lastCastIs( raging_strikes ) ) and ( PlayerHasBuffs( battle_voice_b ) or lastCastIs( battle_voice ) ) then 672 | if radiant_finale:IsReady(Player.id) then 673 | radiant_finale:Cast(Player.id) 674 | return 675 | end 676 | end 677 | 678 | -- Barage 679 | if PlayerMissingBuffs( straight_shot_ready_b ) then 680 | if isCooldown_lessOrEqual( raging_strikes, tillNextGCD - 0.55 ) or PlayerHasBuffs( raging_strikes_b ) then 681 | if not battle_voice.usable or PlayerHasBuffs( battle_voice_b ) or lastCastIs( battle_voice ) then 682 | if not radiant_finale.usable or PlayerHasBuffs( radiant_finale_b ) or lastCastIs( radiant_finale ) then 683 | if barrage:IsReady(Player.id) then 684 | barrage:Cast(Player.id) 685 | return 686 | end 687 | end 688 | end 689 | end 690 | end 691 | 692 | if settings_use_second_wind then 693 | if Player.hp.percent <= settings_use_second_wind_HP then 694 | if second_wind:IsReady(Player.id) then 695 | second_wind:Cast(Player.id) 696 | return 697 | end 698 | end 699 | end 700 | 701 | end 702 | 703 | --if PlayerHasBuffs( blast_arrow_ready_b ) 704 | if blast_arrow:IsReady(Target.id) then 705 | if PlayerMissingBuffs( blast_arrow_ready_b, 2*globalRecast) then 706 | blast_arrow:Cast(Target.id) 707 | return 708 | elseif PlayerHasBuffs(raging_strikes_b, 0.05) then 709 | if not battle_voice.usable or PlayerHasBuffs(battle_voice_b, 0.05) then 710 | if not radiant_finale.usable or PlayerHasBuffs(radiant_finale_b, 0.05) then 711 | blast_arrow:Cast(Target.id) 712 | return 713 | end 714 | end 715 | end 716 | end 717 | 718 | if SoulGauge >= settings_apex_arrow_soulgauge then 719 | if apex_arrow:IsReady(Target.id) then 720 | apex_arrow:Cast(Target.id) 721 | return 722 | end 723 | end 724 | if PlayerHasBuffs( raging_strikes_b ) and PlayerMissingBuffs( raging_strikes_b, 2*globalRecast ) then 725 | if apex_arrow:IsReady(Target.id) then 726 | apex_arrow:Cast(Target.id) 727 | return 728 | end 729 | end 730 | 731 | -- AOE Attacks 732 | if useAOE_skills(Target) == "confirm" then 733 | return 734 | end 735 | 736 | if isCurrentlyOffGCD() then 737 | if empyreal_arrow:IsReady(Target.id) then 738 | empyreal_arrow:Cast(Target.id) 739 | return 740 | end 741 | 742 | if sidewinder:IsReady(Target.id) then 743 | sidewinder:Cast(Target.id) 744 | return 745 | end 746 | 747 | -- Pitch Perfect 748 | if pitch_perfect:IsReady(Target.id) then 749 | if SongGauge == 3 or songTime_lessOrEqual( globalRecast ) then 750 | pitch_perfect:Cast(Target.id) 751 | return 752 | end 753 | end 754 | 755 | if bloodletter:IsReady(Target.id) then 756 | 757 | local COOLDOWN_OFFSET = 15 758 | if hasTrait( "enhanced_bloodletter" ) then 759 | COOLDOWN_OFFSET = 0 760 | end 761 | 762 | 763 | if isSong_Ballad() and isCooldown_lessOrEqual( bloodletter, 2*globalRecast + 7.5 + COOLDOWN_OFFSET ) then 764 | if bloodletter:IsReady(Target.id) then 765 | bloodletter:Cast(Target.id) 766 | return "confirm" 767 | end 768 | elseif isCooldown_lessOrEqual( bloodletter, 2*globalRecast + COOLDOWN_OFFSET ) then 769 | if bloodletter:IsReady(Target.id) then 770 | bloodletter:Cast(Target.id) 771 | return "confirm" 772 | end 773 | elseif PlayerHasBuffs(raging_strikes_b, 0.05) then 774 | if not battle_voice.usable or PlayerHasBuffs(battle_voice_b, 0.05) then 775 | if not radiant_finale.usable or PlayerHasBuffs(radiant_finale_b, 0.05) then 776 | if bloodletter:IsReady(Target.id) then 777 | bloodletter:Cast(Target.id) 778 | return "confirm" 779 | end 780 | end 781 | end 782 | end 783 | 784 | end 785 | end 786 | 787 | if PlayerHasBuffs( straight_shot_ready_b ) and PlayerMissingBuffs( straight_shot_ready_b, globalRecast) then 788 | if refulgent_arrow:IsReady(Target.id) then 789 | refulgent_arrow:Cast(Target.id) 790 | return 791 | end 792 | end 793 | 794 | if settings_use_dots and Target.hp.current >= settings_dots_triggerHP* Player.hp.current then 795 | local settings_dots_time_activation = settings_dots_modifier *globalRecast 796 | 797 | if stormbite.usable then 798 | if TargetMissingBuffs(stormbite_db, settings_dots_time_activation) then 799 | if iron_jaws.usable and TargetHasBuffs(stormbite_db, tillNextGCD + 0.05) then 800 | if iron_jaws:IsReady(Target.id) then 801 | iron_jaws:Cast(Target.id) 802 | return 803 | end 804 | elseif stormbite:IsReady(Target.id) then 805 | stormbite:Cast(Target.id) 806 | return 807 | end 808 | end 809 | end 810 | 811 | if caustic_bite.usable then 812 | if TargetMissingBuffs(caustic_bite_db, settings_dots_time_activation) then 813 | if iron_jaws.usable and TargetHasBuffs(caustic_bite_db, tillNextGCD + 0.05) then 814 | if iron_jaws:IsReady(Target.id) then 815 | iron_jaws:Cast(Target.id) 816 | return 817 | end 818 | elseif caustic_bite:IsReady(Target.id) then 819 | caustic_bite:Cast(Target.id) 820 | return 821 | end 822 | end 823 | end 824 | 825 | if TargetMissingBuffs(windbite_db, settings_dots_time_activation) then 826 | if iron_jaws.usable and TargetHasBuffs(windbite_db, tillNextGCD + 0.05) then 827 | if iron_jaws:IsReady(Target.id) then 828 | iron_jaws:Cast(Target.id) 829 | return 830 | end 831 | elseif windbite:IsReady(Target.id) then 832 | windbite:Cast(Target.id) 833 | return 834 | end 835 | elseif TargetMissingBuffs(venomous_bite_db, settings_dots_time_activation) then 836 | if iron_jaws.usable and TargetHasBuffs(venomous_bite_db, tillNextGCD + 0.05) then 837 | if iron_jaws:IsReady(Target.id) then 838 | iron_jaws:Cast(Target.id) 839 | return 840 | end 841 | elseif venomous_bite:IsReady(Target.id) then 842 | venomous_bite:Cast(Target.id) 843 | return 844 | end 845 | end 846 | end 847 | 848 | 849 | -- Basic Combo 3 850 | 851 | if refulgent_arrow:IsReady(Target.id) then 852 | refulgent_arrow:Cast(Target.id) 853 | return 854 | elseif straight_shot:IsReady(Target.id) then 855 | straight_shot:Cast(Target.id) 856 | return 857 | end 858 | 859 | 860 | -- Basic Combo Start 861 | if burst_shot:IsReady(Target.id) then 862 | 863 | burst_shot:Cast(Target.id) 864 | return 865 | 866 | elseif heavy_shot:IsReady(Target.id) then 867 | 868 | heavy_shot:Cast(Target.id) 869 | return 870 | 871 | end -- The End 872 | 873 | 874 | 875 | end -- The End End 876 | 877 | 878 | 879 | 880 | 881 | 882 | return false 883 | end 884 | 885 | 886 | -- Return the profile to ACR, so it can be read. 887 | return profile -------------------------------------------------------------------------------- /QuestProfiles/(H) J Reapers' Quests.info: -------------------------------------------------------------------------------- 1 | -- Persistent Data 2 | local multiRefObjects = { 3 | 4 | } -- multiRefObjects 5 | local obj1 = { 6 | ["names"] = { 7 | ["en"] = "(H) J Reapers' Quests 70-80"; 8 | ["de"] = "(H) J Reapers' Quests 70-80"; 9 | ["fr"] = "(H) J Reapers' Quests 70-80"; 10 | ["jp"] = "(H) J Reapers' Quests 70-80"; 11 | ["cn"] = "(H) J Reapers' Quests 70-80"; 12 | ["kr"] = "(H) J Reapers' Quests 70-80"; 13 | }; 14 | ["vars"] = { 15 | [1] = { 16 | ["default"] = false; 17 | ["type"] = "checkbox"; 18 | ["var"] = "HatterNavigation"; 19 | ["tab"] = "Nav. Option"; 20 | ["display"] = "Dont turn this on, this is relic. Hatter's Navigation Helper"; 21 | ["tooltip"] = "This will improve navigation for this specific profile.\nNote: Try Disabling this option if profile navigation isn't working as intended."; 22 | }; 23 | }; 24 | ["misc"] = { 25 | [1] = { 26 | ["condition"] = { 27 | ["QuestCompleted(4073)"] = false; 28 | ["Player.level >= 70"] = false; 29 | }; 30 | ["notes"] = { 31 | [1] = "Need to be on Level 70 class to start Reaper Questline."; 32 | }; 33 | ["type"] = "endprofile"; 34 | }; 35 | [2] = { 36 | ["condition"] = { 37 | ["QuestCompleted(4073)"] = true; 38 | ["Player.job == 39"] = false; 39 | }; 40 | ["notes"] = { 41 | [1] = "Switch job to Reaper, then continue quest profile. <3"; 42 | }; 43 | ["type"] = "endprofile"; 44 | }; 45 | [3] = { 46 | ["condition"] = { 47 | ["QuestCompleted(4073)"] = true; 48 | ["Player.level >= 70 or Player.job == 39"] = false; 49 | }; 50 | ["notes"] = { 51 | [1] = "Need Level 70 Reaper for next quest."; 52 | }; 53 | ["type"] = "endprofile"; 54 | }; 55 | [4] = { 56 | ["condition"] = { 57 | ["QuestCompleted(4074)"] = true; 58 | ["Player.level >= 73 or Player.job == 39"] = false; 59 | }; 60 | ["notes"] = { 61 | [1] = "Need Level 73 Reaper for next quest."; 62 | }; 63 | ["type"] = "endprofile"; 64 | }; 65 | [5] = { 66 | ["condition"] = { 67 | ["QuestCompleted(4075)"] = true; 68 | ["Player.level >= 75 or Player.job == 39"] = false; 69 | }; 70 | ["notes"] = { 71 | [1] = "Need Level 75 Reaper for next quest."; 72 | }; 73 | ["type"] = "endprofile"; 74 | }; 75 | [6] = { 76 | ["condition"] = { 77 | ["QuestCompleted(4076)"] = true; 78 | ["Player.level >= 78 or Player.job == 39"] = false; 79 | }; 80 | ["notes"] = { 81 | [1] = "Need Level 78 Reaper for next quest."; 82 | }; 83 | ["type"] = "endprofile"; 84 | }; 85 | [7] = { 86 | ["condition"] = { 87 | ["QuestCompleted(4077)"] = true; 88 | ["Player.level >= 80 or Player.job == 39"] = false; 89 | }; 90 | ["notes"] = { 91 | [1] = "Need Level 80 Reaper for next quest."; 92 | }; 93 | ["type"] = "endprofile"; 94 | }; 95 | [8] = { 96 | ["condition"] = { 97 | ["QuestCompleted(4078)"] = true; 98 | }; 99 | ["notes"] = { 100 | [1] = "All Job Reapers' Quests Completed."; 101 | [2] = ""; 102 | [3] = " Profile's End"; 103 | }; 104 | ["type"] = "endprofile"; 105 | }; 106 | }; 107 | ["quests"] = { 108 | [0] = { 109 | ["level"] = 1; 110 | ["name"] = "Hatter's Supersede"; 111 | ["prereq"] = { 112 | ["Player.level >= 1"] = true; 113 | }; 114 | ["steps"] = { 115 | [80] = { 116 | ["complete"] = { 117 | ["IsOnMap(131)"] = true; 118 | ["Player.pos.x >= 91 and Player.pos.x <= 95"] = true; 119 | ["Player.pos.y >= 10 and Player.pos.y <= 14"] = true; 120 | ["Player.pos.z >= 50 and Player.pos.z <= 54"] = true; 121 | }; 122 | ["condition"] = { 123 | ["HatterNavigation"] = true; 124 | ["IsOnMap(971) == false"] = true; 125 | ["QuestCompleted(4074) == false and HasQuest(4074) == false"] = true; 126 | ["QuestCompleted(4073)"] = true; 127 | }; 128 | ["index"] = 0; 129 | ["mapid"] = 131; 130 | ["pos"] = { 131 | ["x"] = 93.08; 132 | ["y"] = 12.00; 133 | ["z"] = 52.60; 134 | }; 135 | ["prioritize"] = true; 136 | ["type"] = "nav"; 137 | }; 138 | [90] = { 139 | ["complete"] = { 140 | ["IsOnMap(971)"] = true; 141 | }; 142 | ["condition"] = { 143 | ["HatterNavigation"] = true; 144 | ["IsOnMap(971)"] = false; 145 | ["QuestCompleted(4074) == false and HasQuest(4074) == false"] = true; 146 | ["QuestCompleted(4073)"] = true; 147 | }; 148 | ["id"] = 1036632; -- Loyal Lemure 149 | ["index"] = 0; 150 | ["mapid"] = 131; 151 | ["pos"] = { 152 | ["x"] = 115.10; 153 | ["y"] = 8.00; 154 | ["z"] = 15.40; 155 | }; 156 | ["prioritize"] = true; 157 | ["type"] = "interact"; 158 | ["interactrange"] = 3; 159 | }; 160 | [100] = { 161 | ["complete"] = { 162 | --["ActionList:Get(1,24401).IsReady"] = false; 163 | ["IsOnMap(131)"] = true; 164 | ["Player.pos.x >= 91 and Player.pos.x <= 95"] = true; 165 | ["Player.pos.y >= 10 and Player.pos.y <= 14"] = true; 166 | ["Player.pos.z >= 50 and Player.pos.z <= 54"] = true; 167 | }; 168 | ["condition"] = { 169 | ["HatterNavigation"] = true; 170 | ["IsOnMap(971) == false"] = true; 171 | ["QuestCompleted(4075) == false and HasQuest(4075) == false"] = true; 172 | ["QuestCompleted(4074)"] = true; 173 | }; 174 | ["index"] = 0; 175 | ["mapid"] = 131; 176 | ["pos"] = { 177 | ["x"] = 93.08; 178 | ["y"] = 12.00; 179 | ["z"] = 52.60; 180 | }; 181 | ["prioritize"] = true; 182 | ["type"] = "nav"; 183 | }; 184 | [110] = { 185 | ["complete"] = { 186 | ["IsOnMap(971)"] = true; 187 | }; 188 | ["condition"] = { 189 | ["HatterNavigation"] = true; 190 | ["IsOnMap(971)"] = false; 191 | ["QuestCompleted(4075) == false and HasQuest(4075) == false"] = true; 192 | ["QuestCompleted(4074)"] = true; 193 | }; 194 | ["id"] = 1036632; -- Loyal Lemure 195 | ["index"] = 0; 196 | ["mapid"] = 131; 197 | ["pos"] = { 198 | ["x"] = 115.10; 199 | ["y"] = 8.00; 200 | ["z"] = 15.40; 201 | }; 202 | ["prioritize"] = true; 203 | ["type"] = "interact"; 204 | ["interactrange"] = 3; 205 | }; 206 | [120] = { 207 | ["complete"] = { 208 | ["IsOnMap(131)"] = true; 209 | ["Player.pos.x >= 91 and Player.pos.x <= 95"] = true; 210 | ["Player.pos.y >= 10 and Player.pos.y <= 14"] = true; 211 | ["Player.pos.z >= 50 and Player.pos.z <= 54"] = true; 212 | }; 213 | ["condition"] = { 214 | ["HatterNavigation"] = true; 215 | ["IsOnMap(971) == false"] = true; 216 | ["QuestCompleted(4076) == false and HasQuest(4076) == false"] = true; 217 | ["QuestCompleted(4075)"] = true; 218 | }; 219 | ["index"] = 0; 220 | ["mapid"] = 131; 221 | ["pos"] = { 222 | ["x"] = 93.08; 223 | ["y"] = 12.00; 224 | ["z"] = 52.60; 225 | }; 226 | ["prioritize"] = true; 227 | ["type"] = "nav"; 228 | }; 229 | [130] = { 230 | ["complete"] = { 231 | ["IsOnMap(971)"] = true; 232 | }; 233 | ["condition"] = { 234 | ["HatterNavigation"] = true; 235 | ["IsOnMap(971)"] = false; 236 | ["QuestCompleted(4076) == false and HasQuest(4076) == false"] = true; 237 | ["QuestCompleted(4075)"] = true; 238 | }; 239 | ["id"] = 1036632; -- Loyal Lemure 240 | ["index"] = 0; 241 | ["mapid"] = 131; 242 | ["pos"] = { 243 | ["x"] = 115.10; 244 | ["y"] = 8.00; 245 | ["z"] = 15.40; 246 | }; 247 | ["prioritize"] = true; 248 | ["type"] = "interact"; 249 | ["interactrange"] = 3; 250 | }; 251 | [140] = { 252 | ["complete"] = { 253 | ["IsOnMap(131)"] = true; 254 | ["Player.pos.x >= 91 and Player.pos.x <= 95"] = true; 255 | ["Player.pos.y >= 10 and Player.pos.y <= 14"] = true; 256 | ["Player.pos.z >= 50 and Player.pos.z <= 54"] = true; 257 | }; 258 | ["condition"] = { 259 | ["HatterNavigation"] = true; 260 | ["IsOnMap(971) == false"] = true; 261 | ["QuestCompleted(4077) == false and HasQuest(4077) == false"] = true; 262 | ["QuestCompleted(4076)"] = true; 263 | }; 264 | ["index"] = 0; 265 | ["mapid"] = 131; 266 | ["pos"] = { 267 | ["x"] = 93.08; 268 | ["y"] = 12.00; 269 | ["z"] = 52.60; 270 | }; 271 | ["prioritize"] = true; 272 | ["type"] = "nav"; 273 | }; 274 | [150] = { 275 | ["complete"] = { 276 | ["IsOnMap(971)"] = true; 277 | }; 278 | ["condition"] = { 279 | ["HatterNavigation"] = true; 280 | ["IsOnMap(971)"] = false; 281 | ["QuestCompleted(4077) == false and HasQuest(4077) == false"] = true; 282 | ["QuestCompleted(4076)"] = true; 283 | }; 284 | ["id"] = 1036632; -- Loyal Lemure 285 | ["index"] = 0; 286 | ["mapid"] = 131; 287 | ["pos"] = { 288 | ["x"] = 115.10; 289 | ["y"] = 8.00; 290 | ["z"] = 15.40; 291 | }; 292 | ["prioritize"] = true; 293 | ["type"] = "interact"; 294 | ["interactrange"] = 3; 295 | }; 296 | [160] = { 297 | ["complete"] = { 298 | ["IsOnMap(131)"] = true; 299 | ["Player.pos.x >= 91 and Player.pos.x <= 95"] = true; 300 | ["Player.pos.y >= 10 and Player.pos.y <= 14"] = true; 301 | ["Player.pos.z >= 50 and Player.pos.z <= 54"] = true; 302 | }; 303 | ["condition"] = { 304 | ["HatterNavigation"] = true; 305 | ["IsOnMap(971) == false"] = true; 306 | ["QuestCompleted(4078) == false and HasQuest(4078) == false"] = true; 307 | ["QuestCompleted(4077)"] = true; 308 | }; 309 | ["index"] = 0; 310 | ["mapid"] = 131; 311 | ["pos"] = { 312 | ["x"] = 93.08; 313 | ["y"] = 12.00; 314 | ["z"] = 52.60; 315 | }; 316 | ["prioritize"] = true; 317 | ["type"] = "nav"; 318 | }; 319 | [170] = { 320 | ["complete"] = { 321 | ["IsOnMap(971)"] = true; 322 | }; 323 | ["condition"] = { 324 | ["HatterNavigation"] = true; 325 | ["IsOnMap(971)"] = false; 326 | ["QuestCompleted(4078) == false and HasQuest(4078) == false"] = true; 327 | ["QuestCompleted(4077)"] = true; 328 | }; 329 | ["id"] = 1036632; -- Loyal Lemure 330 | ["index"] = 0; 331 | ["mapid"] = 131; 332 | ["pos"] = { 333 | ["x"] = 115.10; 334 | ["y"] = 8.00; 335 | ["z"] = 15.40; 336 | }; 337 | ["prioritize"] = true; 338 | ["type"] = "interact"; 339 | ["interactrange"] = 3; 340 | }; 341 | }; 342 | }; 343 | [4073] = { 344 | ["level"] = 70; 345 | ["name"] = "The Killer Instinct"; 346 | ["prereq"] = { 347 | ["Player.level >= 70"] = true; 348 | }; 349 | ["steps"] = { 350 | [1] = { 351 | ["id"] = 1036633; -- Flustered Attendant 352 | ["mapid"] = 130; 353 | ["pos"] = { 354 | ["x"] = 82.87; 355 | ["y"] = 4.10; 356 | ["z"] = -131.30; 357 | }; 358 | ["type"] = "start"; 359 | ["interactrange"] = 3; 360 | }; 361 | [2] = { 362 | ["complete"] = { 363 | ["step"] = 2; 364 | }; 365 | ["id"] = 1036634; -- Jijilyo 366 | ["index"] = 1; 367 | ["mapid"] = 131; 368 | ["pos"] = { 369 | ["x"] = 134.05; 370 | ["y"] = 4.00; 371 | ["z"] = 11.43; 372 | }; 373 | ["type"] = "interact"; 374 | ["interactrange"] = 3; 375 | }; 376 | [3] = { 377 | ["complete"] = { 378 | ["IsOnMap(971)"] = true; 379 | }; 380 | ["condition"] = { 381 | ["IsOnMap(971)"] = false; 382 | }; 383 | ["id"] = 1036632; -- Loyal Lemure 384 | ["index"] = 2; 385 | ["mapid"] = 131; 386 | ["pos"] = { 387 | ["x"] = 115.10; 388 | ["y"] = 8.00; 389 | ["z"] = 15.40; 390 | }; 391 | ["type"] = "interact"; 392 | ["interactrange"] = 3; 393 | }; 394 | [4] = { 395 | ["delay"] = 3; 396 | ["condition"] = { 397 | ["IsOnMap(971)"] = true; 398 | ["step"] = 255; 399 | }; 400 | ["id"] = 1037014; -- Drusilla 401 | ["mapid"] = 971; 402 | ["pos"] = { 403 | ["x"] = 0.90; 404 | ["y"] = 0.01; 405 | ["z"] = -4.38; 406 | }; 407 | ["type"] = "complete"; 408 | ["conversationindex"] = 1; 409 | ["interactrange"] = 2; 410 | ["itemreward"] = true; 411 | }; 412 | }; 413 | }; 414 | [4074] = { 415 | ["level"] = 70; 416 | ["name"] = "The Harvest Begins"; 417 | ["prereq"] = { 418 | ["Player.level >= 70"] = true; 419 | ["QuestCompleted(4073)"] = true; 420 | }; 421 | ["steps"] = { 422 | [1] = { 423 | ["id"] = 1037014; -- Drusilla 424 | ["mapid"] = 971; 425 | ["pos"] = { 426 | ["x"] = 0.90; 427 | ["y"] = 0.01; 428 | ["z"] = -4.38; 429 | }; 430 | ["type"] = "start"; 431 | ["interactrange"] = 2; 432 | }; 433 | [2] = { 434 | ["complete"] = { 435 | ["step"] = 2; 436 | }; 437 | ["id"] = 1036636; -- Arnegis 438 | ["index"] = 1; 439 | ["mapid"] = 141; 440 | ["pos"] = { 441 | ["x"] = -264.91; 442 | ["y"] = -5.05; 443 | ["z"] = -371.39; 444 | }; 445 | ["type"] = "interact"; 446 | ["dismountdistance"] = math.random(10,14); 447 | ["interactrange"] = 3; 448 | }; 449 | --[[ 450 | [3] = { 451 | ["condition"] = { 452 | ["step"] = 2; 453 | }; 454 | ["index"] = 2; 455 | ["notes"] = { 456 | [1] = "Manual Task: Complete Solo Duty for quest -The Harvest Begins- to continue."; 457 | [2] = ""; 458 | [3] = " Step 1: Use 'Soul Gauge' skill."; 459 | [4] = " Step 2: Use 'Gibbet', 'Gallow', 'Guillotine'."; 460 | [5] = " Step 3: Defeat 'Chimera'."; 461 | }; 462 | ["mapid"] = 141; 463 | ["pos"] = { 464 | ["x"] = -264.91; 465 | ["y"] = -5.05; 466 | ["z"] = -371.39; 467 | }; 468 | ["dismountdistance"] = math.random(10,14); 469 | ["type"] = "endprofile"; 470 | }; 471 | ]] 472 | 473 | [5] = { 474 | ["condition"] = { 475 | ["IsOnMap(1020)"] = false; 476 | }; 477 | ["complete"] = { 478 | ["GetQuestInfo(4074,'step') == 255 or IsOnMap(1020)"] = true; 479 | }; 480 | ["index"] = 2; 481 | ["id"] = 1036637; -- Drusilla 482 | ["mapid"] = 141; 483 | ["pos"] = { 484 | ["x"] = -263.84; 485 | ["y"] = -4.94; 486 | ["z"] = -371.27; 487 | }; 488 | ["type"] = "interact"; 489 | ["interactrange"] = 3; 490 | }; 491 | 492 | -- In Solo DUty 493 | [500] = { 494 | ["condition"] = { 495 | ["IsOnMap(1020)"] = true; 496 | ["Player.pos.z >= 185"] = true; 497 | }; 498 | ["index"] = 2; 499 | ["id"] = 10577; -- Drusilla 500 | ["mapid"] = 1020; 501 | ["pos"] = { 502 | ["x"] = -145.75; 503 | ["y"] = -0.47; 504 | ["z"] = 186.10; 505 | }; 506 | ["type"] = "interact"; 507 | ["interactrange"] = 3; 508 | }; 509 | -- FIGHT ! Build SoulGauge 510 | [750] = { 511 | ["oncomplete"] = "Player:SetTarget(GetNearestFromList('alive,attackable,maxrange2d=3',Player.pos,3).id) ActionList:Get(1, h_lib.questAssist.TheHarvestBegin):Cast(GetNearestFromList('alive,attackable,maxrange2d=3',Player.pos,3).id)"; 512 | ["complete"] = { 513 | ["HasBuffs(Player, 2587) or ValidTable(EntityList('targetable,attackable,contentid=10580,maxdistance2d=30')) == true"] = true; 514 | }; 515 | ["condition"] = { 516 | ["HasBuffs(Player, 2587)"] = false; 517 | ["ValidTable(EntityList('targetable,attackable,contentid=10580,maxdistance2d=30'))"] = false; 518 | }; 519 | ["ids"] = "10579;10578"; 520 | ["index"] = 2; 521 | ["mapid"] = 1020; 522 | ["pos"] = { 523 | ["x"] = -142.05; 524 | ["y"] = -4.90; 525 | ["z"] = 156.51; 526 | }; 527 | ["type"] = "dutykill"; 528 | }; 529 | [755] = { 530 | ["oncomplete"] = "Player:SetTarget(GetNearestFromList('alive,attackable,maxrange2d=3',Player.pos,3).id) ActionList:Get(1, h_lib.questAssist.TheHarvestBegin):Cast(GetNearestFromList('alive,attackable,maxrange2d=3',Player.pos,3).id)"; 531 | ["complete"] = { 532 | ["GetNearestFromList('alive,attackable,maxrange2d=25',Player.pos,25).distance2d <= 3 or ValidTable(EntityList('targetable,attackable,contentid=10580,maxdistance2d=30 == false'))"] = true; 533 | ["table.valid(Player:GetEnmityList()) or ValidTable(EntityList('targetable,attackable,contentid=10580,maxdistance2d=30 == false'))"] = true; 534 | ["MissingBuffs(Player, 2587) or ValidTable(EntityList('targetable,attackable,contentid=10580,maxdistance2d=30')) == true"] = true; 535 | }; 536 | ["condition"] = { 537 | ["HasBuffs(Player, 2587)"] = true; 538 | ["ValidTable(EntityList('targetable,attackable,contentid=10580,maxdistance2d=30'))"] = false; 539 | }; 540 | ["ids"] = "10579;10578"; 541 | ["index"] = 2; 542 | ["mapid"] = 1020; 543 | ["pos"] = { 544 | ["x"] = -142.05; 545 | ["y"] = -4.90; 546 | ["z"] = 156.51; 547 | }; 548 | ["type"] = "dutykill"; 549 | }; 550 | -- ELIMINATE BOSS 551 | [955] = { 552 | ["condition"] = { 553 | ["ValidTable(EntityList('targetable,attackable,contentid=10580,maxdistance2d=30'))"] = true; 554 | }; 555 | ["ids"] = "10580"; 556 | ["index"] = 2; 557 | ["mapid"] = 1020; 558 | ["pos"] = { 559 | ["x"] = -142.05; 560 | ["y"] = -4.90; 561 | ["z"] = 156.51; 562 | }; 563 | ["prioritize"] = true; 564 | ["type"] = "dutykill"; 565 | }; 566 | [2000] = { 567 | ["index"] = 2; 568 | ["mapid"] = 1020; 569 | ["pos"] = { 570 | ["x"] = -142.05; 571 | ["y"] = -4.90; 572 | ["z"] = 156.51; 573 | }; 574 | ["ignoreaggro"] = true; 575 | ["type"] = "nav"; 576 | }; 577 | 578 | 579 | 580 | 581 | [4999] = { 582 | ["complete"] = { 583 | ["IsOnMap(971)"] = true; 584 | }; 585 | ["condition"] = { 586 | ["IsOnMap(971)"] = false; 587 | }; 588 | ["id"] = 1036632; -- Loyal Lemure 589 | ["index"] = 255; 590 | ["mapid"] = 131; 591 | ["pos"] = { 592 | ["x"] = 115.10; 593 | ["y"] = 8.00; 594 | ["z"] = 15.40; 595 | }; 596 | ["type"] = "interact"; 597 | ["interactrange"] = 3; 598 | }; 599 | [5000] = { 600 | ["delay"] = 0; 601 | ["condition"] = { 602 | ["step"] = 255; 603 | }; 604 | ["id"] = 1036629; -- Drusilla 605 | ["mapid"] = 971; 606 | ["pos"] = { 607 | ["x"] = 0.78; 608 | ["y"] = 0.01; 609 | ["z"] = -1.97; 610 | }; 611 | ["type"] = "complete"; 612 | ["interactrange"] = 2; 613 | ["itemreward"] = false; 614 | }; 615 | }; 616 | }; 617 | [4075] = { 618 | ["level"] = 73; 619 | ["name"] = "On the Hunt"; 620 | ["prereq"] = { 621 | ["Player.level >= 73"] = true; 622 | ["QuestCompleted(4074)"] = true; 623 | }; 624 | ["steps"] = { 625 | [1] = { 626 | ["id"] = 1036629; -- Drusilla 627 | ["mapid"] = 971; 628 | ["pos"] = { 629 | ["x"] = 0.78; 630 | ["y"] = 0.01; 631 | ["z"] = -1.97; 632 | }; 633 | ["type"] = "start"; 634 | ["interactrange"] = 2; 635 | }; 636 | [2] = { 637 | ["complete"] = { 638 | ["step"] = 2; 639 | }; 640 | ["id"] = 1036638; -- Arnegis 641 | ["index"] = 1; 642 | ["mapid"] = 148; 643 | ["pos"] = { 644 | ["x"] = -9.38; 645 | ["y"] = -3.00; 646 | ["z"] = 58.55; 647 | }; 648 | ["type"] = "interact"; 649 | ["dismountdistance"] = math.random(10,14); 650 | ["interactrange"] = 3; 651 | }; 652 | [3] = { 653 | ["complete"] = { 654 | ["GetQuestInfo(4075,'I8CH') == 2"] = true; 655 | }; 656 | ["condition"] = { 657 | ["I8CH"] = 3; 658 | }; 659 | ["id"] = 2011694; -- Destination 660 | ["index"] = 2; 661 | ["mapid"] = 148; 662 | ["pos"] = { 663 | ["x"] = -151.20; 664 | ["y"] = 5.69; 665 | ["z"] = -143.69; 666 | }; 667 | ["dismountdistance"] = math.random(10,14); 668 | ["type"] = "useitem"; 669 | ["itemid"] = 2003077; 670 | ["interactrange"] = 3; 671 | }; 672 | [4] = { 673 | ["complete"] = { 674 | ["GetQuestInfo(4075,'I8CH') == 1"] = true; 675 | }; 676 | ["condition"] = { 677 | ["I8CH"] = 2; 678 | }; 679 | ["id"] = 2011693; -- Destination 680 | ["index"] = 2; 681 | ["mapid"] = 148; 682 | ["pos"] = { 683 | ["x"] = -208.12; 684 | ["y"] = 4.01; 685 | ["z"] = -22.11; 686 | }; 687 | ["dismountdistance"] = math.random(10,14); 688 | ["type"] = "useitem"; 689 | ["itemid"] = 2003077; 690 | ["interactrange"] = 3; 691 | }; 692 | [5] = { 693 | ["complete"] = { 694 | ["GetQuestInfo(4075,'step') == 3"] = true; 695 | }; 696 | ["condition"] = { 697 | ["I8CH"] = 1; 698 | }; 699 | ["id"] = 2011546; -- Destination Kill 700 | ["index"] = 2; 701 | ["mapid"] = 148; 702 | ["pos"] = { 703 | ["x"] = -274.34; 704 | ["y"] = 19.82; 705 | ["z"] = 66.45; 706 | }; 707 | ["dismountdistance"] = math.random(10,14); 708 | ["type"] = "useitem"; 709 | ["killaggro"] = true; 710 | ["itemid"] = 2003077; 711 | ["interactrange"] = 3; 712 | }; 713 | [6] = { 714 | ["complete"] = { 715 | ["step"] = 255; 716 | }; 717 | ["id"] = 1036638; -- Arnegis 718 | ["index"] = 3; 719 | ["mapid"] = 148; 720 | ["pos"] = { 721 | ["x"] = -9.38; 722 | ["y"] = -3.00; 723 | ["z"] = 58.55; 724 | }; 725 | ["dismountdistance"] = math.random(10,14); 726 | ["type"] = "interact"; 727 | ["itemturninid"] = { 728 | [1] = 2003078; 729 | }; 730 | ["interactrange"] = 3; 731 | }; 732 | [7] = { 733 | ["condition"] = { 734 | ["IsOnMap(971)"] = false; 735 | }; 736 | ["index"] = 255; 737 | ["mapid"] = 131; 738 | ["pos"] = { 739 | ["x"] = 93.08; 740 | ["y"] = 12.00; 741 | ["z"] = 52.60; 742 | }; 743 | ["type"] = "nav"; 744 | }; 745 | [8] = { 746 | ["complete"] = { 747 | ["IsOnMap(971)"] = true; 748 | }; 749 | ["condition"] = { 750 | ["IsOnMap(971)"] = false; 751 | }; 752 | ["id"] = 1036632; -- Loyal Lemure 753 | ["index"] = 255; 754 | ["mapid"] = 131; 755 | ["pos"] = { 756 | ["x"] = 115.10; 757 | ["y"] = 8.00; 758 | ["z"] = 15.40; 759 | }; 760 | ["type"] = "interact"; 761 | ["interactrange"] = 3; 762 | }; 763 | [9] = { 764 | ["delay"] = 0; 765 | ["condition"] = { 766 | ["step"] = 255; 767 | }; 768 | ["id"] = 1036629; -- Drusilla 769 | ["mapid"] = 971; 770 | ["pos"] = { 771 | ["x"] = 0.78; 772 | ["y"] = 0.01; 773 | ["z"] = -1.97; 774 | }; 775 | ["type"] = "complete"; 776 | ["conversationindex"] = 2; 777 | ["interactrange"] = 2; 778 | ["itemreward"] = false; 779 | }; 780 | }; 781 | }; 782 | [4076] = { 783 | ["level"] = 75; 784 | ["name"] = "Dark Days"; 785 | ["prereq"] = { 786 | ["Player.level >= 75"] = true; 787 | ["QuestCompleted(4075)"] = true; 788 | }; 789 | ["steps"] = { 790 | [1] = { 791 | ["id"] = 1036629; -- Drusilla 792 | ["mapid"] = 971; 793 | ["pos"] = { 794 | ["x"] = 0.78; 795 | ["y"] = 0.01; 796 | ["z"] = -1.97; 797 | }; 798 | ["type"] = "start"; 799 | ["interactrange"] = 2; 800 | }; 801 | [2] = { 802 | ["complete"] = { 803 | ["step"] = 2; 804 | }; 805 | ["id"] = 1036641; -- Drusilla 806 | ["index"] = 1; 807 | ["mapid"] = 130; 808 | ["pos"] = { 809 | ["x"] = -149.95; 810 | ["y"] = 14.00; 811 | ["z"] = 54.86; 812 | }; 813 | ["dismountdistance"] = math.random(10,14); 814 | ["type"] = "interact"; 815 | ["interactrange"] = 3; 816 | }; 817 | [3] = { 818 | ["complete"] = { 819 | ["step"] = 3; 820 | }; 821 | ["id"] = 1036642; -- Drusilla 822 | ["index"] = 2; 823 | ["mapid"] = 141; 824 | ["pos"] = { 825 | ["x"] = -151.17; 826 | ["y"] = 15.98; 827 | ["z"] = 302.30; 828 | }; 829 | ["dismountdistance"] = math.random(10,14); 830 | ["type"] = "interact"; 831 | ["interactrange"] = 3; 832 | }; 833 | [4] = { 834 | ["complete"] = { 835 | ["step"] = 4; 836 | }; 837 | ["id"] = 1036644; -- Drusilla 838 | ["index"] = 3; 839 | ["mapid"] = 141; 840 | ["pos"] = { 841 | ["x"] = -68.10; 842 | ["y"] = -3.66; 843 | ["z"] = 179.61; 844 | }; 845 | ["type"] = "interact"; 846 | ["dismountdistance"] = math.random(10,14); 847 | ["interactrange"] = 3; 848 | }; 849 | [5] = { 850 | ["complete"] = { 851 | ["step"] = 255; 852 | }; 853 | ["id"] = 1040918; -- Drusilla 854 | ["index"] = 4; 855 | ["mapid"] = 141; 856 | ["pos"] = { 857 | ["x"] = -59.89; 858 | ["y"] = -3.66; 859 | ["z"] = 147.72; 860 | }; 861 | ["type"] = "interact"; 862 | ["dismountdistance"] = math.random(10,14); 863 | ["interactrange"] = 3; 864 | }; 865 | [6] = { 866 | ["condition"] = { 867 | ["IsOnMap(971)"] = false; 868 | }; 869 | ["index"] = 255; 870 | ["mapid"] = 131; 871 | ["pos"] = { 872 | ["x"] = 93.08; 873 | ["y"] = 12.00; 874 | ["z"] = 52.60; 875 | }; 876 | ["type"] = "nav"; 877 | }; 878 | [7] = { 879 | ["complete"] = { 880 | ["IsOnMap(971)"] = true; 881 | }; 882 | ["condition"] = { 883 | ["IsOnMap(971)"] = false; 884 | }; 885 | ["id"] = 1036632; -- Loyal Lemure 886 | ["index"] = 255; 887 | ["mapid"] = 131; 888 | ["pos"] = { 889 | ["x"] = 115.10; 890 | ["y"] = 8.00; 891 | ["z"] = 15.40; 892 | }; 893 | ["type"] = "interact"; 894 | ["interactrange"] = 3; 895 | }; 896 | [8] = { 897 | ["delay"] = 0; 898 | ["condition"] = { 899 | ["step"] = 255; 900 | }; 901 | ["id"] = 1036629; -- Drusilla 902 | ["mapid"] = 971; 903 | ["pos"] = { 904 | ["x"] = 0.78; 905 | ["y"] = 0.01; 906 | ["z"] = -1.97; 907 | }; 908 | ["type"] = "complete"; 909 | ["conversationindex"] = 1; 910 | ["interactrange"] = 2; 911 | ["itemreward"] = false; 912 | }; 913 | }; 914 | }; 915 | [4077] = { 916 | ["level"] = 78; 917 | ["name"] = "Thicker than Blood"; 918 | ["prereq"] = { 919 | ["Player.level >= 78"] = true; 920 | ["QuestCompleted(4076)"] = true; 921 | }; 922 | ["steps"] = { 923 | [1] = { 924 | ["id"] = 1036629; -- Drusilla 925 | ["mapid"] = 971; 926 | ["pos"] = { 927 | ["x"] = 0.78; 928 | ["y"] = 0.01; 929 | ["z"] = -1.97; 930 | }; 931 | ["type"] = "start"; 932 | ["interactrange"] = 2; 933 | }; 934 | [2] = { 935 | ["complete"] = { 936 | ["step"] = 2; 937 | }; 938 | ["id"] = 1036645; -- Loyal Lemure 939 | ["index"] = 1; 940 | ["mapid"] = 141; 941 | ["pos"] = { 942 | ["x"] = -65.23; 943 | ["y"] = -2.00; 944 | ["z"] = -170.06; 945 | }; 946 | ["type"] = "interact"; 947 | ["dismountdistance"] = math.random(10,14); 948 | ["interactrange"] = 3; 949 | }; 950 | [3] = { 951 | ["complete"] = { 952 | ["step"] = 3; 953 | }; 954 | ["id"] = 1036646; -- Elegant Woman 955 | ["index"] = 2; 956 | ["mapid"] = 141; 957 | ["pos"] = { 958 | ["x"] = 84.34; 959 | ["y"] = 0.27; 960 | ["z"] = -279.87; 961 | }; 962 | ["dismountdistance"] = math.random(10,14); 963 | ["type"] = "interact"; 964 | ["interactrange"] = 3; 965 | }; 966 | [4] = { 967 | ["complete"] = { 968 | ["step"] = 4; 969 | }; 970 | ["id"] = 1036647; -- Lithe Dandy 971 | ["index"] = 3; 972 | ["mapid"] = 141; 973 | ["pos"] = { 974 | ["x"] = 154.89; 975 | ["y"] = 1.96; 976 | ["z"] = -166.67; 977 | }; 978 | ["dismountdistance"] = math.random(10,14); 979 | ["type"] = "interact"; 980 | ["interactrange"] = 3; 981 | }; 982 | [5] = { 983 | ["complete"] = { 984 | ["step"] = 5; 985 | }; 986 | ["index"] = 4; 987 | ["mapid"] = 141; 988 | ["pos"] = { 989 | ["x"] = 159.37; 990 | ["y"] = -0.52; 991 | ["z"] = -155.02; 992 | }; 993 | ["dismountdistance"] = math.random(10,14); 994 | ["type"] = "nav"; 995 | ["killaggro"] = true; 996 | }; 997 | [6] = { 998 | ["oncomplete"] = "Player:Teleport(9)"; 999 | ["complete"] = { 1000 | ["step"] = 6; 1001 | }; 1002 | ["id"] = 1036647; -- Lithe Dandy 1003 | ["index"] = 5; 1004 | ["mapid"] = 141; 1005 | ["pos"] = { 1006 | ["x"] = 154.89; 1007 | ["y"] = 1.96; 1008 | ["z"] = -166.67; 1009 | }; 1010 | ["dismountdistance"] = math.random(10,14); 1011 | ["type"] = "interact"; 1012 | ["interactrange"] = 3; 1013 | }; 1014 | [7] = { 1015 | ["complete"] = { 1016 | ["step"] = 7; 1017 | }; 1018 | ["id"] = 1036654; -- Drusilla 1019 | ["index"] = 6; 1020 | ["mapid"] = 141; 1021 | ["pos"] = { 1022 | ["x"] = -136.61; 1023 | ["y"] = 3.93; 1024 | ["z"] = 212.57; 1025 | }; 1026 | ["dismountdistance"] = math.random(10,14); 1027 | ["type"] = "interact"; 1028 | ["interactrange"] = 3; 1029 | }; 1030 | [8] = { 1031 | ["condition"] = { 1032 | ["IsOnMap(971)"] = false; 1033 | }; 1034 | ["index"] = 7; 1035 | ["mapid"] = 131; 1036 | ["pos"] = { 1037 | ["x"] = 93.08; 1038 | ["y"] = 12.00; 1039 | ["z"] = 52.60; 1040 | }; 1041 | ["type"] = "nav"; 1042 | }; 1043 | [9] = { 1044 | ["complete"] = { 1045 | ["IsOnMap(971)"] = true; 1046 | }; 1047 | ["condition"] = { 1048 | ["IsOnMap(971)"] = false; 1049 | }; 1050 | ["id"] = 1036632; -- Loyal Lemure 1051 | ["index"] = 7; 1052 | ["mapid"] = 131; 1053 | ["pos"] = { 1054 | ["x"] = 115.10; 1055 | ["y"] = 8.00; 1056 | ["z"] = 15.40; 1057 | }; 1058 | ["type"] = "interact"; 1059 | ["interactrange"] = 3; 1060 | }; 1061 | [10] = { 1062 | ["condition"] = { 1063 | ["step"] = 255; 1064 | }; 1065 | ["id"] = 1036631; -- Hermin 1066 | ["mapid"] = 971; 1067 | ["pos"] = { 1068 | ["x"] = 2.79; 1069 | ["y"] = 0.00; 1070 | ["z"] = -0.44; 1071 | }; 1072 | ["type"] = "complete"; 1073 | ["conversationindex"] = 1; 1074 | ["interactrange"] = 2; 1075 | ["itemreward"] = false; 1076 | }; 1077 | }; 1078 | }; 1079 | [4078] = { 1080 | ["level"] = 80; 1081 | ["name"] = "The Killing Art"; 1082 | ["prereq"] = { 1083 | ["Player.level >= 80"] = true; 1084 | ["QuestCompleted(4077)"] = true; 1085 | }; 1086 | ["steps"] = { 1087 | [1] = { 1088 | ["id"] = 1036631; -- Hermin 1089 | ["mapid"] = 971; 1090 | ["pos"] = { 1091 | ["x"] = 2.79; 1092 | ["y"] = 0.00; 1093 | ["z"] = -0.44; 1094 | }; 1095 | ["type"] = "start"; 1096 | ["interactrange"] = 2; 1097 | }; 1098 | -- [2] = { 1099 | -- ["complete"] = { 1100 | -- ["IsPositionLocked()"] = true; 1101 | -- }; 1102 | -- ["condition"] = { 1103 | -- ["step"] = 1; 1104 | -- ["IsOnMap(397)"] = false; 1105 | -- }; 1106 | -- ["index"] = 1; 1107 | -- ["mapid"] = 397; 1108 | -- ["pos"] = { 1109 | -- ["x"] = -92.58; 1110 | -- ["y"] = 87.17; 1111 | -- ["z"] = -737.88; 1112 | -- }; 1113 | -- ["type"] = "nav"; 1114 | -- }; 1115 | --[[ [2] = { 1116 | ["condition"] = { 1117 | ["step"] = 1; 1118 | }; 1119 | ["index"] = 1; 1120 | ["notes"] = { 1121 | [1] = "Manual Task: Complete Solo Duty for quest -The Killing Art- to continue."; 1122 | [2] = ""; 1123 | [3] = " Step 1: Eliminate Enemy."; 1124 | [4] = " Step 2: Walk away with new skill like a cool person."; 1125 | }; 1126 | ["mapid"] = 397; 1127 | ["pos"] = { 1128 | ["x"] = -92.58; 1129 | ["y"] = 87.17; 1130 | ["z"] = -737.88; 1131 | }; 1132 | ["dismountdistance"] = math.random(10,14); 1133 | ["type"] = "endprofile"; 1134 | }; 1135 | ]] 1136 | -- BEGIN 1137 | [2] = { 1138 | ["complete"] = { 1139 | ["IsOnMap(1021)"] = true; 1140 | }; 1141 | ["condition"] = { 1142 | ["IsOnMap(1021)"] = false; 1143 | }; 1144 | ["id"] = 2011548; -- Destination 1145 | ["index"] = 1; 1146 | ["mapid"] = 397; 1147 | ["pos"] = { 1148 | ["x"] = -92.58; 1149 | ["y"] = 87.17; 1150 | ["z"] = -737.88; 1151 | }; 1152 | ["type"] = "interact"; 1153 | ["interactrange"] = 3; 1154 | }; 1155 | -- FIRST STEP 1156 | [30] = { 1157 | ["complete"] = { 1158 | ["ValidTable(EntityList('contentid=10585,maxdistance2d=35')) or ValidTable(EntityList('contentid=10584,maxdistance2d=35'))"] = true; 1159 | }; 1160 | ["condition"] = { 1161 | ["IsOnMap(1021)"] = true; 1162 | ["ValidTable(EntityList('contentid=10585,maxdistance2d=35'))"] = false; 1163 | ["ValidTable(EntityList('contentid=10584,maxdistance2d=35'))"] = false; 1164 | }; 1165 | ["ids"] = "10581"; 1166 | ["index"] = 1; 1167 | ["mapid"] = 1021; 1168 | ["pos"] = { 1169 | ["x"] = -69.44; 1170 | ["y"] = 32.06; 1171 | ["z"] = -392.02; 1172 | }; 1173 | ["type"] = "dutykill"; 1174 | }; 1175 | [40] = { 1176 | ["complete"] = { 1177 | ["ValidTable(EntityList('contentid=10585,maxdistance2d=35'))"] = false; 1178 | }; 1179 | ["condition"] = { 1180 | ["ValidTable(EntityList('contentid=10585,maxdistance2d=35'))"] = true; 1181 | ["IsOnMap(1021)"] = true; 1182 | }; 1183 | ["ids"] = "10585"; 1184 | ["index"] = 1; 1185 | ["mapid"] = 1021; 1186 | ["pos"] = { 1187 | ["x"] = -69.44; 1188 | ["y"] = 32.06; 1189 | ["z"] = -392.02; 1190 | }; 1191 | ["type"] = "dutykill"; 1192 | }; 1193 | [50] = { 1194 | ["complete"] = { 1195 | ["ValidTable(EntityList('contentid=10584,maxdistance2d=35'))"] = false; 1196 | }; 1197 | ["condition"] = { 1198 | ["ValidTable(EntityList('contentid=10584,maxdistance2d=35'))"] = true; 1199 | ["IsOnMap(1021)"] = true; 1200 | }; 1201 | ["ids"] = "10584"; 1202 | ["index"] = 1; 1203 | ["mapid"] = 1021; 1204 | ["pos"] = { 1205 | ["x"] = -69.44; 1206 | ["y"] = 32.06; 1207 | ["z"] = -392.02; 1208 | }; 1209 | ["type"] = "dutykill"; 1210 | }; 1211 | 1212 | 1213 | 1214 | [3999] = { 1215 | ["condition"] = { 1216 | ["IsOnMap(971)"] = false; 1217 | }; 1218 | ["index"] = 255; 1219 | ["mapid"] = 131; 1220 | ["pos"] = { 1221 | ["x"] = 93.08; 1222 | ["y"] = 12.00; 1223 | ["z"] = 52.60; 1224 | }; 1225 | ["type"] = "nav"; 1226 | }; 1227 | [4000] = { 1228 | ["complete"] = { 1229 | ["IsOnMap(971)"] = true; 1230 | }; 1231 | ["condition"] = { 1232 | ["IsOnMap(971)"] = false; 1233 | }; 1234 | ["id"] = 1036632; -- Loyal Lemure 1235 | ["index"] = 255; 1236 | ["mapid"] = 131; 1237 | ["pos"] = { 1238 | ["x"] = 115.10; 1239 | ["y"] = 8.00; 1240 | ["z"] = 15.40; 1241 | }; 1242 | ["type"] = "interact"; 1243 | ["interactrange"] = 3; 1244 | }; 1245 | [4040] = { 1246 | ["delay"] = 0; 1247 | ["condition"] = { 1248 | ["step"] = 255; 1249 | }; 1250 | ["id"] = 1036630; -- Drusilla 1251 | ["mapid"] = 971; 1252 | ["pos"] = { 1253 | ["x"] = 0.78; 1254 | ["y"] = 0.01; 1255 | ["z"] = -1.97; 1256 | }; 1257 | ["type"] = "complete"; 1258 | ["conversationindex"] = 1; 1259 | ["interactrange"] = 2; 1260 | ["itemreward"] = false; 1261 | }; 1262 | }; 1263 | }; 1264 | }; 1265 | } 1266 | return obj1 -------------------------------------------------------------------------------- /QuestProfiles/(H) M All Combat Class Unlocks.info: -------------------------------------------------------------------------------- 1 | -- Persistent Data 2 | local multiRefObjects = { 3 | 4 | } -- multiRefObjects 5 | local obj1 = { 6 | ["names"] = { 7 | ["en"] = "(H) M All Combat Class Unlocks"; 8 | ["de"] = "(H) M All Combat Class Unlocks"; 9 | ["fr"] = "(H) M All Combat Class Unlocks"; 10 | ["jp"] = "(H) M All Combat Class Unlocks"; 11 | ["cn"] = "(H) M All Combat Class Unlocks"; 12 | ["kr"] = "(H) M All Combat Class Unlocks"; 13 | }; 14 | ["vars"] = { 15 | [1] = { 16 | ["default"] = true; 17 | ["type"] = "checkbox"; 18 | ["var"] = "unlockEverything"; 19 | ["tab"] = "Super"; 20 | ["display"] = "Unlocks "; 21 | ["tooltip"] = "Unlocks all that character have access to."; 22 | }; 23 | [2] = { 24 | ["default"] = false; 25 | ["type"] = "checkbox"; 26 | ["var"] = "unlockAllTanks"; 27 | ["tab"] = "Super"; 28 | ["display"] = "Unlocks all "; 29 | ["tooltip"] = "Unlocks all that character have access to."; 30 | }; 31 | [3] = { 32 | ["default"] = false; 33 | ["type"] = "checkbox"; 34 | ["var"] = "unlockAllHealers"; 35 | ["tab"] = "Super"; 36 | ["display"] = "Unlocks all "; 37 | ["tooltip"] = "Unlocks all that character have access to."; 38 | }; 39 | [4] = { 40 | ["default"] = false; 41 | ["type"] = "checkbox"; 42 | ["var"] = "unlockAllPhysicalMelee"; 43 | ["tab"] = "Super"; 44 | ["display"] = "Unlocks all "; 45 | ["tooltip"] = "Unlocks all that character have access to."; 46 | }; 47 | [5] = { 48 | ["default"] = false; 49 | ["type"] = "checkbox"; 50 | ["var"] = "unlockAllPhysicalRange"; 51 | ["tab"] = "Super"; 52 | ["display"] = "Unlocks all "; 53 | ["tooltip"] = "Unlocks all that character have access to."; 54 | }; 55 | [6] = { 56 | ["default"] = false; 57 | ["type"] = "checkbox"; 58 | ["var"] = "unlockAllMagicalRange"; 59 | ["tab"] = "Super"; 60 | ["display"] = "Unlocks all "; 61 | ["tooltip"] = "Unlocks all that character have access to."; 62 | }; 63 | [7] = { 64 | ["default"] = false; 65 | ["type"] = "checkbox"; 66 | ["var"] = "unlockGLD"; 67 | ["tab"] = "DoW"; 68 | ["display"] = "Unlocks "; 69 | --["tooltip"] = ""; 70 | }; 71 | [8] = { 72 | ["default"] = false; 73 | ["type"] = "checkbox"; 74 | ["var"] = "unlockMRD"; 75 | ["tab"] = "DoW"; 76 | ["display"] = "Unlocks "; 77 | --["tooltip"] = ""; 78 | }; 79 | [9] = { 80 | ["default"] = false; 81 | ["type"] = "checkbox"; 82 | ["var"] = "unlockDRK"; 83 | ["tab"] = "DoW"; 84 | ["display"] = "Unlocks "; 85 | ["tooltip"] = "Requires Level 50 on current class & Foundation Aetheryte Attuned."; 86 | }; 87 | [10] = { 88 | ["default"] = false; 89 | ["type"] = "checkbox"; 90 | ["var"] = "unlockGNB"; 91 | ["tab"] = "DoW"; 92 | ["display"] = "Unlocks "; 93 | ["tooltip"] = "Requires Level 60 on current class."; 94 | }; 95 | [11] = { 96 | ["default"] = false; 97 | ["type"] = "checkbox"; 98 | ["var"] = "unlockCNJ"; 99 | ["tab"] = "DoM"; 100 | ["display"] = "Unlocks "; 101 | --["tooltip"] = ""; 102 | }; 103 | [12] = { 104 | ["default"] = false; 105 | ["type"] = "checkbox"; 106 | ["var"] = "unlockACN"; 107 | ["tab"] = "DoM"; 108 | ["display"] = "Unlocks "; 109 | --["tooltip"] = ""; 110 | }; 111 | [13] = { 112 | ["default"] = false; 113 | ["type"] = "checkbox"; 114 | ["var"] = "unlockAST"; 115 | ["tab"] = "DoM"; 116 | ["display"] = "Unlocks "; 117 | ["tooltip"] = "Requires Level 50 on current class & Foundation Aetheryte Attuned."; 118 | }; 119 | [14] = { 120 | ["default"] = false; 121 | ["type"] = "checkbox"; 122 | ["var"] = "unlockSGE"; 123 | ["tab"] = "DoM"; 124 | ["display"] = "Unlocks "; 125 | ["tooltip"] = "Requires Level 70 on current class."; 126 | }; 127 | [15] = { 128 | ["default"] = false; 129 | ["type"] = "checkbox"; 130 | ["var"] = "unlockPGL"; 131 | ["tab"] = "DoW"; 132 | ["display"] = "Unlocks "; 133 | --["tooltip"] = ""; 134 | }; 135 | [16] = { 136 | ["default"] = false; 137 | ["type"] = "checkbox"; 138 | ["var"] = "unlockLNC"; 139 | ["tab"] = "DoW"; 140 | ["display"] = "Unlocks "; 141 | --["tooltip"] = ""; 142 | }; 143 | [17] = { 144 | ["default"] = false; 145 | ["type"] = "checkbox"; 146 | ["var"] = "unlockROG"; 147 | ["tab"] = "DoW"; 148 | ["display"] = "Unlocks "; 149 | --["tooltip"] = ""; 150 | }; 151 | [18] = { 152 | ["default"] = false; 153 | ["type"] = "checkbox"; 154 | ["var"] = "unlockSAM"; 155 | ["tab"] = "DoW"; 156 | ["display"] = "Unlocks "; 157 | ["tooltip"] = "Requires Level 50 on current class."; 158 | }; 159 | [19] = { 160 | ["default"] = false; 161 | ["type"] = "checkbox"; 162 | ["var"] = "unlockRPR"; 163 | ["tab"] = "DoW"; 164 | ["display"] = "Unlocks "; 165 | ["tooltip"] = "Requires Level 70 on current class."; 166 | }; 167 | [20] = { 168 | ["default"] = false; 169 | ["type"] = "checkbox"; 170 | ["var"] = "unlockARC"; 171 | ["tab"] = "DoW"; 172 | ["display"] = "Unlocks "; 173 | --["tooltip"] = ""; 174 | }; 175 | [21] = { 176 | ["default"] = false; 177 | ["type"] = "checkbox"; 178 | ["var"] = "unlockMCH"; 179 | ["tab"] = "DoW"; 180 | ["display"] = "Unlocks "; 181 | ["tooltip"] = "Requires Level 50 on current class & Foundation Aetheryte Attuned."; 182 | }; 183 | [22] = { 184 | ["default"] = false; 185 | ["type"] = "checkbox"; 186 | ["var"] = "unlockDNC"; 187 | ["tab"] = "DoW"; 188 | ["display"] = "Unlocks "; 189 | ["tooltip"] = "Requires Level 60 on current class."; 190 | }; 191 | [23] = { 192 | ["default"] = false; 193 | ["type"] = "checkbox"; 194 | ["var"] = "unlockTHM"; 195 | ["tab"] = "DoM"; 196 | ["display"] = "Unlocks ."; 197 | --["tooltip"] = ""; 198 | }; 199 | [24] = { 200 | ["default"] = false; 201 | ["type"] = "checkbox"; 202 | ["var"] = "unlockRMD"; 203 | ["tab"] = "DoM"; 204 | ["display"] = "Unlocks "; 205 | ["tooltip"] = "Requires Level 50 on current class."; 206 | }; 207 | [25] = { 208 | ["default"] = false; 209 | ["type"] = "checkbox"; 210 | ["var"] = "unlockBLU"; 211 | ["tab"] = "DoM"; 212 | ["display"] = "Unlocks "; 213 | ["tooltip"] = "Requires completion of quest lvl.50 "; 214 | }; 215 | [30] = { 216 | ["default"] = false; 217 | ["type"] = "checkbox"; 218 | ["var"] = "HatterNavigation"; 219 | ["tab"] = "Navigation"; 220 | ["display"] = "Dont turn this on, this is relic. Will improve some navigation for this Quest Profile."; 221 | --["tooltip"] = ""; 222 | }; 223 | }; 224 | ["misc"] = { 225 | [1] = { 226 | ["condition"] = { 227 | ["QuestCompleted(9999)"] = true; 228 | }; 229 | ["notes"] = { 230 | [1] = "Done"; 231 | }; 232 | ["type"] = "endprofile"; 233 | }; 234 | }; 235 | ["quests"] = { 236 | [0] = { 237 | ["level"] = 1; 238 | ["name"] = "Hatter's Supersede"; 239 | ["prereq"] = { 240 | }; 241 | ["steps"] = { 242 | [10] = { 243 | ["complete"] = { 244 | ["IsOnMap(131)"] = true; 245 | ["Player.pos.x >= 133 and Player.pos.x <= 137"] = true; 246 | ["Player.pos.y >= 2 and Player.pos.y <= 6"] = true; 247 | ["Player.pos.z >= -31 and Player.pos.z <= -27"] = true; 248 | }; 249 | ["condition"] = { 250 | ["Player.level >= 50"] = true; 251 | ["HatterNavigation"] = true; 252 | ["QuestCompleted(2576) == false and HasQuest(2576) == false"] = true; 253 | }; 254 | ["index"] = 0; 255 | ["mapid"] = 131; -- Ul'dah - Steps of Thal 256 | ["pos"] = { 257 | ["x"] = 135.17; 258 | ["y"] = 4.00; 259 | ["z"] = -29.64; 260 | }; 261 | ["prioritize"] = true; 262 | ["type"] = "nav"; 263 | }; 264 | }; 265 | }; 266 | [285] = { 267 | ["level"] = 10; 268 | ["name"] = "Way of the Gladiator"; 269 | ["prereq"] = { 270 | ["unlockEverything or unlockAllTanks or unlockGLD"] = true; 271 | ["Player.levels[FFXIV.JOBS.GLADIATOR] >= 1"] = false; 272 | }; 273 | ["steps"] = { 274 | [1] = { 275 | ["condition"] = { 276 | ["unlockEverything or unlockAllTanks or unlockGLD"] = true; 277 | }; 278 | ["id"] = 1002277; -- Lulutsu 279 | ["mapid"] = 131; -- Ul'dah - Steps of Thal 280 | ["pos"] = { 281 | ["x"] = -97.55; 282 | ["y"] = 7.05; 283 | ["z"] = 23.61; 284 | }; 285 | ["type"] = "start"; 286 | ["interactrange"] = 3; 287 | }; 288 | [20] = { 289 | ["condition"] = { 290 | ["unlockEverything or unlockAllTanks or unlockGLD"] = true; 291 | }; 292 | ["id"] = 1001739; -- Mylla 293 | ["mapid"] = 131; -- Ul'dah - Steps of Thal 294 | ["pos"] = { 295 | ["x"] = -94.53; 296 | ["y"] = 6.50; 297 | ["z"] = 39.81; 298 | }; 299 | ["type"] = "complete"; 300 | ["interactrange"] = 3; 301 | ["itemreward"] = true; 302 | }; 303 | }; 304 | }; 305 | [344] = { 306 | ["level"] = 10; 307 | ["name"] = "Way of the Thaumaturge"; 308 | ["prereq"] = { 309 | ["unlockEverything or unlockAllMagicalRange or unlockTHM"] = true; 310 | ["Player.levels[FFXIV.JOBS.THAUMATURGE] >= 1"] = false; 311 | }; 312 | ["steps"] = { 313 | [1] = { 314 | ["condition"] = { 315 | ["unlockEverything or unlockAllMagicalRange or unlockTHM"] = true; 316 | }; 317 | ["id"] = 1002279; -- Yayake 318 | ["mapid"] = 130; -- Ul'dah - Steps of Nald 319 | ["pos"] = { 320 | ["x"] = -196.89; 321 | ["y"] = 18.46; 322 | ["z"] = 59.95; 323 | }; 324 | ["type"] = "start"; 325 | ["interactrange"] = 3; 326 | }; 327 | [20] = { 328 | ["condition"] = { 329 | ["unlockEverything or unlockAllMagicalRange or unlockTHM"] = true; 330 | }; 331 | ["id"] = 1001709; -- Cocobygo 332 | ["mapid"] = 130; -- Ul'dah - Steps of Nald 333 | ["pos"] = { 334 | ["x"] = -240.50; 335 | ["y"] = 18.70; 336 | ["z"] = 85.59; 337 | }; 338 | ["type"] = "complete"; 339 | ["interactrange"] = 3; 340 | ["itemreward"] = true; 341 | }; 342 | }; 343 | }; 344 | [532] = { 345 | ["level"] = 10; 346 | ["name"] = "Way of the Pugilist"; 347 | ["prereq"] = { 348 | ["unlockEverything or unlockAllPhysicalMelee or unlockPGL"] = true; 349 | ["Player.levels[FFXIV.JOBS.PUGILIST] >= 1"] = false; 350 | }; 351 | ["steps"] = { 352 | [1] = { 353 | ["condition"] = { 354 | ["unlockEverything or unlockAllPhysicalMelee or unlockPGL"] = true; 355 | }; 356 | ["id"] = 1001286; -- Gagaruna 357 | ["mapid"] = 130; -- Ul'dah - Steps of Nald 358 | ["pos"] = { 359 | ["x"] = -88.98; 360 | ["y"] = 2.55; 361 | ["z"] = -51.16; 362 | }; 363 | ["type"] = "start"; 364 | ["interactrange"] = 3; 365 | }; 366 | [20] = { 367 | ["condition"] = { 368 | ["unlockEverything or unlockAllPhysicalMelee or unlockPGL"] = true; 369 | }; 370 | ["id"] = 1003817; -- Hamon 371 | ["mapid"] = 130; -- Ul'dah - Steps of Nald 372 | ["pos"] = { 373 | ["x"] = -74.57; 374 | ["y"] = 2.00; 375 | ["z"] = -42.40; 376 | }; 377 | ["type"] = "complete"; 378 | ["interactrange"] = 3; 379 | ["itemreward"] = true; 380 | }; 381 | }; 382 | }; 383 | [452] = { 384 | ["level"] = 10; 385 | ["name"] = "Way of the Arcanist"; 386 | ["prereq"] = { 387 | ["unlockEverything or unlockAllMagicalRange or unlockACN"] = true; 388 | ["Player.levels[FFXIV.JOBS.ARCANIST] >= 1"] = false; 389 | }; 390 | ["steps"] = { 391 | [1] = { 392 | ["condition"] = { 393 | ["unlockEverything or unlockAllMagicalRange or unlockACN"] = true; 394 | }; 395 | ["id"] = 1000895; -- Murie 396 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 397 | ["pos"] = { 398 | ["x"] = -335.74; 399 | ["y"] = 12.90; 400 | ["z"] = 1.39; 401 | }; 402 | ["type"] = "start"; 403 | ["interactrange"] = 3; 404 | }; 405 | [20] = { 406 | ["condition"] = { 407 | ["unlockEverything or unlockAllMagicalRange or unlockACN"] = true; 408 | }; 409 | ["id"] = 1000909; -- Thubyrgeim 410 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 411 | ["pos"] = { 412 | ["x"] = -326.38; 413 | ["y"] = 12.90; 414 | ["z"] = 9.99; 415 | }; 416 | ["type"] = "complete"; 417 | ["interactrange"] = 3; 418 | ["itemreward"] = true; 419 | }; 420 | }; 421 | }; 422 | [310] = { 423 | ["level"] = 10; 424 | ["name"] = "Way of the Marauder"; 425 | ["prereq"] = { 426 | ["unlockEverything or unlockAllTanks or unlockMRD"] = true; 427 | ["Player.levels[FFXIV.JOBS.MARAUDER] >= 1"] = false; 428 | }; 429 | ["steps"] = { 430 | [1] = { 431 | ["condition"] = { 432 | ["unlockEverything or unlockAllTanks or unlockMRD"] = true; 433 | }; 434 | ["id"] = 1000926; -- Blauthota 435 | ["mapid"] = 128; -- Limsa Lominsa Upper Decks 436 | ["pos"] = { 437 | ["x"] = -10.06; 438 | ["y"] = 45.00; 439 | ["z"] = -245.81; 440 | }; 441 | ["type"] = "start"; 442 | ["interactrange"] = 3; 443 | }; 444 | [20] = { 445 | ["condition"] = { 446 | ["unlockEverything or unlockAllTanks or unlockMRD"] = true; 447 | }; 448 | ["id"] = 1000927; -- Wyrnzoen 449 | ["mapid"] = 128; -- Limsa Lominsa Upper Decks 450 | ["pos"] = { 451 | ["x"] = -1.21; 452 | ["y"] = 45.00; 453 | ["z"] = -255.88; 454 | }; 455 | ["type"] = "complete"; 456 | ["interactrange"] = 3; 457 | ["itemreward"] = true; 458 | }; 459 | }; 460 | }; 461 | [102] = { 462 | ["level"] = 10; 463 | ["name"] = "My First Daggers"; 464 | ["prereq"] = { 465 | ["unlockEverything or unlockAllPhysicalMelee or unlockROG"] = true; 466 | ["Player.levels[FFXIV.JOBS.ROGUE] >= 1"] = false; 467 | }; 468 | ["steps"] = { 469 | [1] = { 470 | ["condition"] = { 471 | ["unlockEverything or unlockAllPhysicalMelee or unlockROG"] = true; 472 | }; 473 | ["id"] = 1009944; -- Lonwoerd 474 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 475 | ["pos"] = { 476 | ["x"] = -152.67; 477 | ["y"] = 2.86; 478 | ["z"] = 243.18; 479 | }; 480 | ["type"] = "start"; 481 | ["interactrange"] = 3; 482 | }; 483 | [20] = { 484 | ["condition"] = { 485 | ["unlockEverything or unlockAllPhysicalMelee or unlockROG"] = true; 486 | }; 487 | ["id"] = 1009943; -- Jacke 488 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 489 | ["pos"] = { 490 | ["x"] = -153.37; 491 | ["y"] = -129.44; 492 | ["z"] = 265.89; 493 | }; 494 | ["type"] = "complete"; 495 | ["nosprint"] = true; 496 | ["interactrange"] = 3; 497 | ["itemreward"] = true; 498 | }; 499 | }; 500 | }; 501 | [133] = { 502 | ["level"] = 10; 503 | ["name"] = "Way of the Conjurer"; 504 | ["prereq"] = { 505 | ["unlockEverything or unlockAllHealers or unlockCNJ"] = true; 506 | ["Player.levels[FFXIV.JOBS.CONJURER] >= 1"] = false; 507 | }; 508 | ["steps"] = { 509 | [1] = { 510 | ["condition"] = { 511 | ["unlockEverything or unlockAllHealers or unlockCNJ"] = true; 512 | }; 513 | ["id"] = 1000323; -- Madelle 514 | ["mapid"] = 133; -- Old Gridania 515 | ["pos"] = { 516 | ["x"] = -234.03; 517 | ["y"] = -4.00; 518 | ["z"] = -11.09; 519 | }; 520 | ["type"] = "start"; 521 | ["interactrange"] = 3; 522 | }; 523 | [20] = { 524 | ["condition"] = { 525 | ["unlockEverything or unlockAllHealers or unlockCNJ"] = true; 526 | }; 527 | ["id"] = 1000692; -- E-Sumi-Yan 528 | ["mapid"] = 133; -- Old Gridania 529 | ["pos"] = { 530 | ["x"] = -258.81; 531 | ["y"] = -5.77; 532 | ["z"] = -27.27; 533 | }; 534 | ["type"] = "complete"; 535 | ["interactrange"] = 3; 536 | ["itemreward"] = true; 537 | }; 538 | }; 539 | }; 540 | [131] = { 541 | ["level"] = 10; 542 | ["name"] = "Way of the Archer"; 543 | ["prereq"] = { 544 | ["unlockEverything or unlockAllPhysicalRange or unlockARC"] = true; 545 | ["Player.levels[FFXIV.JOBS.ARCHER] >= 1"] = false; 546 | }; 547 | ["steps"] = { 548 | [1] = { 549 | ["condition"] = { 550 | ["unlockEverything or unlockAllPhysicalRange or unlockARC"] = true; 551 | }; 552 | ["id"] = 1000197; -- Athelyna 553 | ["mapid"] = 132; -- New Gridania 554 | ["pos"] = { 555 | ["x"] = 201.31; 556 | ["y"] = -0.00; 557 | ["z"] = 43.90; 558 | }; 559 | ["type"] = "start"; 560 | ["interactrange"] = 3; 561 | }; 562 | [20] = { 563 | ["condition"] = { 564 | ["unlockEverything or unlockAllPhysicalRange or unlockARC"] = true; 565 | }; 566 | ["id"] = 1000200; -- Luciane 567 | ["mapid"] = 132; -- New Gridania 568 | ["pos"] = { 569 | ["x"] = 209.55; 570 | ["y"] = 1.00; 571 | ["z"] = 35.02; 572 | }; 573 | ["type"] = "complete"; 574 | ["interactrange"] = 3; 575 | ["itemreward"] = true; 576 | }; 577 | }; 578 | }; 579 | [132] = { 580 | ["level"] = 10; 581 | ["name"] = "Way of the Lancer"; 582 | ["prereq"] = { 583 | ["unlockEverything or unlockAllPhysicalMelee or unlockLNC"] = true; 584 | ["Player.levels[FFXIV.JOBS.LANCER] >= 1"] = false; 585 | }; 586 | ["steps"] = { 587 | [1] = { 588 | ["condition"] = { 589 | ["unlockEverything or unlockAllPhysicalMelee or unlockLNC"] = true; 590 | }; 591 | ["id"] = 1000251; -- Jillian 592 | ["mapid"] = 133; -- Old Gridania 593 | ["pos"] = { 594 | ["x"] = 147.08; 595 | ["y"] = 15.50; 596 | ["z"] = -267.99; 597 | }; 598 | ["type"] = "start"; 599 | ["interactrange"] = 3; 600 | }; 601 | [20] = { 602 | ["condition"] = { 603 | ["unlockEverything or unlockAllPhysicalMelee or unlockLNC"] = true; 604 | }; 605 | ["id"] = 1000254; -- Ywain 606 | ["mapid"] = 133; -- Old Gridania 607 | ["pos"] = { 608 | ["x"] = 157.70; 609 | ["y"] = 15.90; 610 | ["z"] = -270.34; 611 | }; 612 | ["type"] = "complete"; 613 | ["interactrange"] = 3; 614 | ["itemreward"] = true; 615 | }; 616 | }; 617 | }; 618 | [2559] = { 619 | ["level"] = 50; 620 | ["name"] = "The Way of the Samurai"; 621 | ["prereq"] = { 622 | ["unlockEverything or unlockAllPhysicalMelee or unlockSAM"] = true; 623 | ["Player.levels[FFXIV.JOBS.SAMURAI] >= 1"] = false; 624 | }; 625 | ["steps"] = { 626 | [1] = { 627 | ["condition"] = { 628 | ["unlockEverything or unlockAllPhysicalMelee or unlockSAM"] = true; 629 | }; 630 | ["id"] = 1021829; -- Ul'dahn Citizen 631 | ["mapid"] = 130; -- Ul'dah - Steps of Nald 632 | ["pos"] = { 633 | ["x"] = -98.44; 634 | ["y"] = 4.00; 635 | ["z"] = -105.00; 636 | }; 637 | ["type"] = "start"; 638 | ["interactrange"] = 3; 639 | }; 640 | [10] = { 641 | ["condition"] = { 642 | ["unlockEverything or unlockAllPhysicalMelee or unlockSAM"] = true; 643 | }; 644 | ["complete"] = { 645 | ["step"] = 255; 646 | }; 647 | ["index"] = 1; 648 | ["id"] = 1021830; -- Silver-tongued Showmaster 649 | ["mapid"] = 131; -- Ul'dah - Steps of Thal 650 | ["pos"] = { 651 | ["x"] = -102.07; 652 | ["y"] = 6.98; 653 | ["z"] = 12.01; 654 | }; 655 | ["type"] = "interact"; 656 | ["interactrange"] = 3; 657 | }; 658 | [20] = { 659 | ["condition"] = { 660 | ["unlockEverything or unlockAllPhysicalMelee or unlockSAM"] = true; 661 | }; 662 | ["id"] = 1021834; -- Far Eastern Elder 663 | ["mapid"] = 131; -- Ul'dah - Steps of Thal 664 | ["pos"] = { 665 | ["x"] = -89.28; 666 | ["y"] = 2.15; 667 | ["z"] = 59.74; 668 | }; 669 | ["type"] = "complete"; 670 | ["interactrange"] = 3; 671 | ["itemreward"] = true; 672 | }; 673 | }; 674 | }; 675 | [2576] = { 676 | ["level"] = 50; 677 | ["name"] = "Taking the Red"; 678 | ["prereq"] = { 679 | ["unlockEverything or unlockAllMagicalRange or unlockRDM"] = true; 680 | ["Player.levels[FFXIV.JOBS.REDMAGE] >= 1"] = false; 681 | }; 682 | ["steps"] = { 683 | [1] = { 684 | ["condition"] = { 685 | ["unlockEverything or unlockAllMagicalRange or unlockRDM"] = true; 686 | }; 687 | ["id"] = 1021425; -- Distraught Lass 688 | ["mapid"] = 131; -- Ul'dah - Steps of Thal 689 | ["pos"] = { 690 | ["x"] = 146.11; 691 | ["y"] = 4.00; 692 | ["z"] = 25.22; 693 | }; 694 | ["type"] = "start"; 695 | ["interactrange"] = 3; 696 | }; 697 | [10] = { 698 | ["condition"] = { 699 | ["unlockEverything or unlockAllMagicalRange or unlockRDM"] = true; 700 | }; 701 | ["complete"] = { 702 | ["step"] = 2; 703 | }; 704 | ["index"] = 1; 705 | ["id"] = 1021426; -- Well-dressed Lass 706 | ["mapid"] = 141; -- Central Thanalan 707 | ["pos"] = { 708 | ["x"] = 124.04; 709 | ["y"] = 5.29; 710 | ["z"] = 559.66; 711 | }; 712 | ["type"] = "interact"; 713 | ["dismountdistance"] = math.random(10,14); 714 | ["interactrange"] = 3; 715 | }; 716 | [20] = { 717 | ["condition"] = { 718 | ["unlockEverything or unlockAllMagicalRange or unlockRDM"] = true; 719 | }; 720 | ["complete"] = { 721 | ["step"] = 3; 722 | }; 723 | ["index"] = 2; 724 | ["id"] = 1021434; -- Red-garbed Traveler 725 | ["mapid"] = 141; -- Central Thanalan 726 | ["pos"] = { 727 | ["x"] = 125.72; 728 | ["y"] = 5.29; 729 | ["z"] = 558.95; 730 | }; 731 | ["type"] = "interact"; 732 | ["dismountdistance"] = math.random(10,14); 733 | ["interactrange"] = 3; 734 | }; 735 | [30] = { 736 | ["condition"] = { 737 | ["unlockEverything or unlockAllMagicalRange or unlockRDM"] = true; 738 | }; 739 | ["oncomplete"] = "Player:Teleport(53)"; 740 | ["complete"] = { 741 | ["step"] = 4; 742 | }; 743 | ["index"] = 3; 744 | ["id"] = 1021435; -- Distraught Lass 745 | ["mapid"] = 131; -- Ul'dah - Steps of Thal 746 | ["pos"] = { 747 | ["x"] = 145.74; 748 | ["y"] = 4.00; 749 | ["z"] = 25.22; 750 | }; 751 | ["type"] = "interact"; 752 | ["interactrange"] = 3; 753 | }; 754 | [40] = { 755 | ["condition"] = { 756 | ["unlockEverything or unlockAllMagicalRange or unlockRDM"] = true; 757 | }; 758 | ["complete"] = { 759 | ["step"] = 255; 760 | }; 761 | ["index"] = 4; 762 | ["id"] = 1021438; -- X'rhun Tia 763 | ["mapid"] = 141; -- Central Thanalan 764 | ["pos"] = { 765 | ["x"] = -96.85; 766 | ["y"] = -11.35; 767 | ["z"] = -47.32; 768 | }; 769 | ["type"] = "interact"; 770 | ["dismountdistance"] = math.random(10,14); 771 | ["interactrange"] = 3; 772 | }; 773 | [50] = { 774 | ["condition"] = { 775 | ["unlockEverything or unlockAllMagicalRange or unlockRDM"] = true; 776 | }; 777 | ["id"] = 1021438; -- X'rhun Tia 778 | ["mapid"] = 141; -- Central Thanalan 779 | ["pos"] = { 780 | ["x"] = -96.85; 781 | ["y"] = -11.35; 782 | ["z"] = -47.32; 783 | }; 784 | ["type"] = "complete"; 785 | ["dismountdistance"] = math.random(10,14); 786 | ["interactrange"] = 3; 787 | ["itemreward"] = true; 788 | }; 789 | }; 790 | }; 791 | [3192] = { 792 | ["level"] = 50; 793 | ["name"] = "Out of the Blue"; 794 | ["prereq"] = { 795 | ["unlockEverything or unlockAllMagicalRange or unlockBLU"] = true; 796 | ["Player.levels[FFXIV.JOBS.BLUEMAGE] >= 1"] = false; 797 | ["QuestCompleted(524)"] = true; 798 | }; 799 | ["steps"] = { 800 | [1] = { 801 | ["condition"] = { 802 | ["unlockEverything or unlockAllMagicalRange or unlockBLU"] = true; 803 | }; 804 | ["id"] = 1026928; -- Zealous Yellowjacket 805 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 806 | ["pos"] = { 807 | ["x"] = -64.35; 808 | ["y"] = 18.00; 809 | ["z"] = -11.03; 810 | }; 811 | ["type"] = "start"; 812 | ["interactrange"] = 3; 813 | }; 814 | [10] = { 815 | ["condition"] = { 816 | ["unlockEverything or unlockAllMagicalRange or unlockBLU"] = true; 817 | }; 818 | ["complete"] = { 819 | ["step"] = 2; 820 | }; 821 | ["index"] = 1; 822 | ["id"] = 1026929; -- Zealous Yellowjacket 823 | ["mapid"] = 134; -- Middle La Noscea 824 | ["pos"] = { 825 | ["x"] = -69.87; 826 | ["y"] = 43.84; 827 | ["z"] = -5.66; 828 | }; 829 | ["type"] = "interact"; 830 | ["dismountdistance"] = math.random(10,14); 831 | ["interactrange"] = 3; 832 | }; 833 | [20] = { 834 | ["condition"] = { 835 | ["unlockEverything or unlockAllMagicalRange or unlockBLU"] = true; 836 | }; 837 | ["complete"] = { 838 | ["step"] = 3; 839 | }; 840 | ["index"] = 2; 841 | ["id"] = 1026936; -- Zealous Yellowjacket 842 | ["mapid"] = 134; -- Middle La Noscea 843 | ["pos"] = { 844 | ["x"] = 170.86; 845 | ["y"] = 62.77; 846 | ["z"] = 275.26; 847 | }; 848 | ["type"] = "interact"; 849 | ["dismountdistance"] = math.random(10,14); 850 | ["interactrange"] = 3; 851 | }; 852 | [30] = { 853 | ["condition"] = { 854 | ["unlockEverything or unlockAllMagicalRange or unlockBLU"] = true; 855 | }; 856 | ["complete"] = { 857 | ["step"] = 4; 858 | }; 859 | ["index"] = 3; 860 | ["id"] = 1028430; -- Zealous Yellowjacket 861 | ["mapid"] = 134; -- Middle La Noscea 862 | ["pos"] = { 863 | ["x"] = 156.63; 864 | ["y"] = 12.13; 865 | ["z"] = 649.38; 866 | }; 867 | ["type"] = "interact"; 868 | ["dismountdistance"] = math.random(10,14); 869 | ["interactrange"] = 3; 870 | }; 871 | [40] = { 872 | ["condition"] = { 873 | ["unlockEverything or unlockAllMagicalRange or unlockBLU"] = true; 874 | }; 875 | ["complete"] = { 876 | ["step"] = 255; 877 | }; 878 | ["index"] = 4; 879 | ["id"] = 1026930; -- Zealous Yellowjacket 880 | ["mapid"] = 135; -- Lower La Noscea 881 | ["pos"] = { 882 | ["x"] = -85.40; 883 | ["y"] = 2.54; 884 | ["z"] = 728.54; 885 | }; 886 | ["type"] = "interact"; 887 | ["dismountdistance"] = math.random(10,14); 888 | ["interactrange"] = 3; 889 | }; 890 | [50] = { 891 | ["condition"] = { 892 | ["unlockEverything or unlockAllMagicalRange or unlockBLU"] = true; 893 | }; 894 | ["id"] = 1026932; -- Martyn 895 | ["mapid"] = 135; -- Lower La Noscea 896 | ["pos"] = { 897 | ["x"] = -105.91; 898 | ["y"] = 1.57; 899 | ["z"] = 750.06; 900 | }; 901 | ["type"] = "complete"; 902 | ["interactrange"] = 3; 903 | ["itemreward"] = true; 904 | }; 905 | }; 906 | }; 907 | [2053] = { 908 | ["level"] = 50; 909 | ["name"] = "Our End"; 910 | ["prereq"] = { 911 | ["unlockEverything or unlockAllTanks or unlockDRK"] = true; 912 | ["Player.levels[FFXIV.JOBS.DARKKNIGHT] >= 1"] = false; 913 | ["CanAccessMap(418)"] = true; 914 | }; 915 | ["steps"] = { 916 | [1] = { 917 | ["condition"] = { 918 | ["unlockEverything or unlockAllTanks or unlockDRK"] = true; 919 | }; 920 | ["id"] = 1014873; -- Ishgardian Citizen 921 | ["mapid"] = 419; -- The Pillars 922 | ["pos"] = { 923 | ["x"] = 101.58; 924 | ["y"] = 12.42; 925 | ["z"] = -117.60; 926 | }; 927 | ["type"] = "start"; 928 | ["interactrange"] = 3; 929 | }; 930 | [10] = { 931 | ["condition"] = { 932 | ["unlockEverything or unlockAllTanks or unlockDRK"] = true; 933 | }; 934 | ["complete"] = { 935 | ["step"] = 255; 936 | }; 937 | ["index"] = 1; 938 | ["id"] = 1014876; -- Punctilious Temple Knight 939 | ["mapid"] = 418; -- Foundation 940 | ["pos"] = { 941 | ["x"] = 5.78; 942 | ["y"] = -2.08; 943 | ["z"] = 45.40; 944 | }; 945 | ["type"] = "interact"; 946 | ["dismountdistance"] = math.random(10,14); 947 | ["interactrange"] = 3; 948 | }; 949 | [20] = { 950 | ["condition"] = { 951 | ["unlockEverything or unlockAllTanks or unlockDRK"] = true; 952 | }; 953 | ["id"] = 1014875; -- Fray 954 | ["mapid"] = 418; -- Foundation 955 | ["pos"] = { 956 | ["x"] = 6.91; 957 | ["y"] = -1.92; 958 | ["z"] = 47.29; 959 | }; 960 | ["type"] = "complete"; 961 | ["interactrange"] = 3; 962 | ["itemreward"] = true; 963 | }; 964 | }; 965 | }; 966 | [2012] = { 967 | ["level"] = 50; 968 | ["name"] = "Stairway to the Heavens"; 969 | ["prereq"] = { 970 | ["unlockEverything or unlockAllHealers or unlockAST"] = true; 971 | ["Player.levels[FFXIV.JOBS.ASTROLOGIAN] >= 1"] = false; 972 | ["CanAccessMap(418)"] = true; 973 | }; 974 | ["steps"] = { 975 | [1] = { 976 | ["condition"] = { 977 | ["unlockEverything or unlockAllHealers or unlockAST"] = true; 978 | }; 979 | ["id"] = 1012222; -- Jannequinard 980 | ["mapid"] = 419; -- The Pillars 981 | ["pos"] = { 982 | ["x"] = 202.38; 983 | ["y"] = -5.40; 984 | ["z"] = -58.92; 985 | }; 986 | ["type"] = "start"; 987 | ["interactrange"] = 3; 988 | }; 989 | [10] = { 990 | ["condition"] = { 991 | ["unlockEverything or unlockAllHealers or unlockAST"] = true; 992 | }; 993 | ["complete"] = { 994 | ["step"] = 2; 995 | }; 996 | ["index"] = 1; 997 | ["id"] = 1012222; -- Jannequinard 998 | ["mapid"] = 419; -- The Pillars 999 | ["pos"] = { 1000 | ["x"] = 202.38; 1001 | ["y"] = -5.40; 1002 | ["z"] = -58.92; 1003 | }; 1004 | ["type"] = "interact"; 1005 | ["interactrange"] = 3; 1006 | }; 1007 | [20] = { 1008 | ["complete"] = { 1009 | ["I8AL"] = 1; 1010 | }; 1011 | ["condition"] = { 1012 | ["unlockEverything or unlockAllHealers or unlockAST"] = true; 1013 | ["I8AL"] = 0; 1014 | }; 1015 | ["index"] = 2; 1016 | ["id"] = 1012221; -- Heurriette 1017 | ["mapid"] = 419; -- The Pillars 1018 | ["pos"] = { 1019 | ["x"] = 195.09; 1020 | ["y"] = -5.40; 1021 | ["z"] = -65.66; 1022 | }; 1023 | ["type"] = "interact"; 1024 | ["interactrange"] = 3; 1025 | }; 1026 | [30] = { 1027 | ["complete"] = { 1028 | ["I8AL"] = 2; 1029 | }; 1030 | ["condition"] = { 1031 | ["I8AL"] = 1; 1032 | ["unlockEverything or unlockAllHealers or unlockAST"] = true; 1033 | }; 1034 | ["index"] = 2; 1035 | ["id"] = 1012223; -- Mugueniel 1036 | ["mapid"] = 419; -- The Pillars 1037 | ["pos"] = { 1038 | ["x"] = 188.71; 1039 | ["y"] = -5.40; 1040 | ["z"] = -68.83; 1041 | }; 1042 | ["type"] = "interact"; 1043 | ["interactrange"] = 3; 1044 | }; 1045 | [40] = { 1046 | ["complete"] = { 1047 | ["step"] = 3; 1048 | }; 1049 | ["condition"] = { 1050 | ["unlockEverything or unlockAllHealers or unlockAST"] = true; 1051 | ["I8AL"] = 2; 1052 | }; 1053 | ["index"] = 2; 1054 | ["id"] = 1012224; -- Fleuraie 1055 | ["mapid"] = 419; -- The Pillars 1056 | ["pos"] = { 1057 | ["x"] = 175.13; 1058 | ["y"] = -5.43; 1059 | ["z"] = -57.94; 1060 | }; 1061 | ["type"] = "interact"; 1062 | ["interactrange"] = 3; 1063 | }; 1064 | [50] = { 1065 | ["condition"] = { 1066 | ["unlockEverything or unlockAllHealers or unlockAST"] = true; 1067 | }; 1068 | ["complete"] = { 1069 | ["step"] = 4; 1070 | }; 1071 | ["index"] = 3; 1072 | ["id"] = 1012222; -- Jannequinard 1073 | ["mapid"] = 419; -- The Pillars 1074 | ["pos"] = { 1075 | ["x"] = 202.38; 1076 | ["y"] = -5.40; 1077 | ["z"] = -58.92; 1078 | }; 1079 | ["type"] = "interact"; 1080 | ["interactrange"] = 3; 1081 | }; 1082 | [60] = { 1083 | ["condition"] = { 1084 | ["unlockEverything or unlockAllHealers or unlockAST"] = true; 1085 | }; 1086 | ["complete"] = { 1087 | ["step"] = 5; 1088 | }; 1089 | ["index"] = 4; 1090 | ["id"] = 1014980; -- Jannequinard 1091 | ["mapid"] = 155; -- Coerthas Central Highlands 1092 | ["pos"] = { 1093 | ["x"] = 198.66; 1094 | ["y"] = 293.33; 1095 | ["z"] = 418.57; 1096 | }; 1097 | ["type"] = "interact"; 1098 | ["dismountdistance"] = math.random(10,14); 1099 | ["interactrange"] = 3; 1100 | }; 1101 | [70] = { 1102 | ["condition"] = { 1103 | ["unlockEverything or unlockAllHealers or unlockAST"] = true; 1104 | }; 1105 | ["complete"] = { 1106 | ["step"] = 255; 1107 | }; 1108 | ["index"] = 5; 1109 | ["id"] = 1014931; -- Quimperain 1110 | ["mapid"] = 153; -- South Shroud 1111 | ["pos"] = { 1112 | ["x"] = 182.97; 1113 | ["y"] = 7.49; 1114 | ["z"] = -46.83; 1115 | }; 1116 | ["type"] = "interact"; 1117 | ["dismountdistance"] = math.random(10,14); 1118 | ["interactrange"] = 3; 1119 | }; 1120 | [80] = { 1121 | ["id"] = 1014925; -- Quimperain 1122 | ["mapid"] = 153; -- South Shroud 1123 | ["pos"] = { 1124 | ["x"] = 184.50; 1125 | ["y"] = 14.12; 1126 | ["z"] = 51.93; 1127 | }; 1128 | ["type"] = "complete"; 1129 | ["interactrange"] = 3; 1130 | ["itemreward"] = true; 1131 | }; 1132 | }; 1133 | }; 1134 | [1696] = { 1135 | ["level"] = 50; 1136 | ["name"] = "Savior of Skysteel"; 1137 | ["prereq"] = { 1138 | ["unlockEverything or unlockAllPhysicalRange or unlockMCH"] = true; 1139 | ["Player.levels[FFXIV.JOBS.MACHINIST] >= 1"] = false; 1140 | ["CanAccessMap(418)"] = true; 1141 | }; 1142 | ["steps"] = { 1143 | [1] = { 1144 | ["condition"] = { 1145 | ["unlockEverything or unlockAllPhysicalRange or unlockMCH"] = true; 1146 | }; 1147 | ["id"] = 1014577; -- Stephanivien 1148 | ["mapid"] = 418; -- Foundation 1149 | ["pos"] = { 1150 | ["x"] = -154.31; 1151 | ["y"] = 17.00; 1152 | ["z"] = -53.36; 1153 | }; 1154 | ["type"] = "start"; 1155 | ["interactrange"] = 3; 1156 | }; 1157 | [10] = { 1158 | ["condition"] = { 1159 | ["unlockEverything or unlockAllPhysicalRange or unlockMCH"] = true; 1160 | }; 1161 | ["complete"] = { 1162 | ["step"] = 2; 1163 | }; 1164 | ["index"] = 1; 1165 | ["id"] = 1014577; -- Stephanivien 1166 | ["mapid"] = 418; -- Foundation 1167 | ["pos"] = { 1168 | ["x"] = -154.31; 1169 | ["y"] = 17.00; 1170 | ["z"] = -53.36; 1171 | }; 1172 | ["type"] = "interact"; 1173 | ["interactrange"] = 3; 1174 | ["conversationindex"] = 2; 1175 | }; 1176 | [20] = { 1177 | ["condition"] = { 1178 | ["unlockEverything or unlockAllPhysicalRange or unlockMCH"] = true; 1179 | }; 1180 | ["complete"] = { 1181 | ["step"] = 3; 1182 | }; 1183 | ["index"] = 2; 1184 | ["id"] = 1014731; -- Stephanivien 1185 | ["mapid"] = 180; -- Outer La Noscea 1186 | ["pos"] = { 1187 | ["x"] = -73.17; 1188 | ["y"] = 64.61; 1189 | ["z"] = -248.10; 1190 | }; 1191 | ["type"] = "interact"; 1192 | ["dismountdistance"] = math.random(10,14); 1193 | ["interactrange"] = 3; 1194 | }; 1195 | [30] = { 1196 | ["condition"] = { 1197 | ["I8AL"] = 0; 1198 | ["unlockEverything or unlockAllPhysicalRange or unlockMCH"] = true; 1199 | }; 1200 | ["complete"] = { 1201 | ["I8AL"] = 1; 1202 | }; 1203 | ["index"] = 3; 1204 | ["id"] = 1014733; -- Grinning Private 1205 | ["mapid"] = 180; -- Outer La Noscea 1206 | ["pos"] = { 1207 | ["x"] = -98.44; 1208 | ["y"] = 64.49; 1209 | ["z"] = -215.56; 1210 | }; 1211 | ["dismountdistance"] = math.random(10,14); 1212 | ["type"] = "interact"; 1213 | ["interactrange"] = 3; 1214 | }; 1215 | [40] = { 1216 | ["condition"] = { 1217 | ["I8AL"] = 1; 1218 | ["unlockEverything or unlockAllPhysicalRange or unlockMCH"] = true; 1219 | }; 1220 | ["complete"] = { 1221 | ["I8AL"] = 2; 1222 | }; 1223 | ["index"] = 3; 1224 | ["id"] = 1014735; -- Scrutinizing Private 1225 | ["mapid"] = 180; -- Outer La Noscea 1226 | ["pos"] = { 1227 | ["x"] = -112.63; 1228 | ["y"] = 64.39; 1229 | ["z"] = -200.12; 1230 | }; 1231 | ["dismountdistance"] = math.random(10,14); 1232 | ["type"] = "interact"; 1233 | ["interactrange"] = 3; 1234 | }; 1235 | [50] = { 1236 | ["condition"] = { 1237 | ["I8AL"] = 2; 1238 | ["unlockEverything or unlockAllPhysicalRange or unlockMCH"] = true; 1239 | }; 1240 | ["complete"] = { 1241 | ["step"] = 4; 1242 | }; 1243 | ["index"] = 3; 1244 | ["id"] = 1014734; -- Scowling Private 1245 | ["mapid"] = 180; -- Outer La Noscea 1246 | ["pos"] = { 1247 | ["x"] = -147.81; 1248 | ["y"] = 64.38; 1249 | ["z"] = -220.57; 1250 | }; 1251 | ["dismountdistance"] = math.random(10,14); 1252 | ["type"] = "interact"; 1253 | ["interactrange"] = 3; 1254 | }; 1255 | [60] = { 1256 | ["condition"] = { 1257 | ["unlockEverything or unlockAllPhysicalRange or unlockMCH"] = true; 1258 | }; 1259 | ["complete"] = { 1260 | ["step"] = 255; 1261 | }; 1262 | ["index"] = 4; 1263 | ["id"] = 1014731; -- Stephanivien 1264 | ["mapid"] = 180; -- Outer La Noscea 1265 | ["pos"] = { 1266 | ["x"] = -73.17; 1267 | ["y"] = 64.61; 1268 | ["z"] = -248.10; 1269 | }; 1270 | ["type"] = "interact"; 1271 | ["dismountdistance"] = math.random(10,14); 1272 | ["interactrange"] = 3; 1273 | }; 1274 | [70] = { 1275 | ["condition"] = { 1276 | ["unlockEverything or unlockAllPhysicalRange or unlockMCH"] = true; 1277 | }; 1278 | ["id"] = 1014736; -- Stephanivien 1279 | ["mapid"] = 180; -- Outer La Noscea 1280 | ["pos"] = { 1281 | ["x"] = -99.26; 1282 | ["y"] = 62.38; 1283 | ["z"] = -182.79; 1284 | }; 1285 | ["type"] = "complete"; 1286 | ["interactrange"] = 3; 1287 | ["itemreward"] = true; 1288 | }; 1289 | }; 1290 | }; 1291 | [3249] = { 1292 | ["level"] = 60; 1293 | ["name"] = "Shall We Dance"; 1294 | ["prereq"] = { 1295 | ["unlockEverything or unlockAllPhysicalRange or unlockDNC"] = true; 1296 | ["Player.levels[FFXIV.JOBS.DANCER] >= 1"] = false; 1297 | }; 1298 | ["steps"] = { 1299 | [1] = { 1300 | ["condition"] = { 1301 | ["unlockEverything or unlockAllPhysicalRange or unlockDNC"] = true; 1302 | }; 1303 | ["id"] = 1028721; -- Eager Lominsan 1304 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 1305 | ["pos"] = { 1306 | ["x"] = -70.54; 1307 | ["y"] = 20.00; 1308 | ["z"] = 42.16; 1309 | }; 1310 | ["type"] = "start"; 1311 | ["interactrange"] = 3; 1312 | }; 1313 | [5] = { 1314 | ["condition"] = { 1315 | ["unlockEverything or unlockAllPhysicalRange or unlockDNC"] = true; 1316 | }; 1317 | ["index"] = 1; 1318 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 1319 | ["pos"] = { 1320 | ["x"] = -82.63; 1321 | ["y"] = 18.59; 1322 | ["z"] = 104.72; 1323 | }; 1324 | ["type"] = "nav"; 1325 | }; 1326 | [10] = { 1327 | ["condition"] = { 1328 | ["unlockEverything or unlockAllPhysicalRange or unlockDNC"] = true; 1329 | }; 1330 | ["complete"] = { 1331 | ["step"] = 2; 1332 | }; 1333 | ["index"] = 1; 1334 | ["id"] = 1028723; -- Ranaa Mihgo 1335 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 1336 | ["pos"] = { 1337 | ["x"] = -112.14; 1338 | ["y"] = 6.00; 1339 | ["z"] = 189.68; 1340 | }; 1341 | ["type"] = "interact"; 1342 | ["interactrange"] = 3; 1343 | }; 1344 | [20] = { 1345 | ["condition"] = { 1346 | ["unlockEverything or unlockAllPhysicalRange or unlockDNC"] = true; 1347 | }; 1348 | ["complete"] = { 1349 | ["step"] = 255; 1350 | }; 1351 | ["index"] = 2; 1352 | ["id"] = 2009763; -- Destination 1353 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 1354 | ["pos"] = { 1355 | ["x"] = -112.02; 1356 | ["y"] = 6.03; 1357 | ["z"] = 184.86; 1358 | }; 1359 | ["type"] = "interact"; 1360 | ["interactrange"] = 3; 1361 | }; 1362 | [30] = { 1363 | ["condition"] = { 1364 | ["unlockEverything or unlockAllPhysicalRange or unlockDNC"] = true; 1365 | }; 1366 | ["id"] = 1028724; -- Nashmeira 1367 | ["mapid"] = 129; -- Limsa Lominsa Lower Decks 1368 | ["pos"] = { 1369 | ["x"] = -104.33; 1370 | ["y"] = 6.00; 1371 | ["z"] = 195.94; 1372 | }; 1373 | ["type"] = "complete"; 1374 | ["interactrange"] = 3; 1375 | ["itemreward"] = true; 1376 | }; 1377 | }; 1378 | }; 1379 | [3261] = { 1380 | ["level"] = 60; 1381 | ["name"] = "The Makings of a Gunbreaker"; 1382 | ["prereq"] = { 1383 | ["unlockEverything or unlockAllTanks or unlockGNB"] = true; 1384 | ["Player.levels[FFXIV.JOBS.GUNBREAKER] >= 1"] = false; 1385 | }; 1386 | ["steps"] = { 1387 | [1] = { 1388 | ["condition"] = { 1389 | ["unlockEverything or unlockAllTanks or unlockGNB"] = true; 1390 | }; 1391 | ["id"] = 1029028; -- Gods' Quiver Bow 1392 | ["mapid"] = 132; -- New Gridania 1393 | ["pos"] = { 1394 | ["x"] = 15.67; 1395 | ["y"] = -1.59; 1396 | ["z"] = 37.70; 1397 | }; 1398 | ["type"] = "start"; 1399 | ["interactrange"] = 3; 1400 | }; 1401 | [10] = { 1402 | ["condition"] = { 1403 | ["unlockEverything or unlockAllTanks or unlockGNB"] = true; 1404 | }; 1405 | ["complete"] = { 1406 | ["step"] = 2; 1407 | }; 1408 | ["index"] = 1; 1409 | ["id"] = 2010237; -- Destination 1410 | ["mapid"] = 152; -- East Shroud 1411 | ["pos"] = { 1412 | ["x"] = -244.16; 1413 | ["y"] = 5.94; 1414 | ["z"] = 80.03; 1415 | }; 1416 | ["type"] = "interact"; 1417 | ["dismountdistance"] = math.random(10,14); 1418 | ["interactrange"] = 3; 1419 | }; 1420 | [20] = { 1421 | ["condition"] = { 1422 | ["unlockEverything or unlockAllTanks or unlockGNB"] = true; 1423 | }; 1424 | ["complete"] = { 1425 | ["step"] = 3; 1426 | }; 1427 | ["index"] = 2; 1428 | ["mapid"] = 152; -- East Shroud 1429 | ["pos"] = { 1430 | ["x"] = -217.99; 1431 | ["y"] = 11.77; 1432 | ["z"] = 17.91; 1433 | }; 1434 | ["type"] = "nav"; 1435 | ["killaggro"] = true; 1436 | ["dismountdistance"] = math.random(10,14); 1437 | ["interactrange"] = 3; 1438 | }; 1439 | [30] = { 1440 | ["condition"] = { 1441 | ["unlockEverything or unlockAllTanks or unlockGNB"] = true; 1442 | }; 1443 | ["complete"] = { 1444 | ["step"] = 255; 1445 | }; 1446 | ["index"] = 3; 1447 | ["id"] = 1029029; -- Weary Swordsman 1448 | ["mapid"] = 152; -- East Shroud 1449 | ["pos"] = { 1450 | ["x"] = -214.65; 1451 | ["y"] = 11.98; 1452 | ["z"] = 25.41; 1453 | }; 1454 | ["type"] = "interact"; 1455 | ["dismountdistance"] = math.random(10,14); 1456 | ["interactrange"] = 3; 1457 | }; 1458 | [40] = { 1459 | ["condition"] = { 1460 | ["unlockEverything or unlockAllTanks or unlockGNB"] = true; 1461 | }; 1462 | ["id"] = 1029033; -- Radovan 1463 | ["mapid"] = 152; -- East Shroud 1464 | ["pos"] = { 1465 | ["x"] = -214.68; 1466 | ["y"] = 11.97; 1467 | ["z"] = 25.19; 1468 | }; 1469 | ["type"] = "complete"; 1470 | ["interactrange"] = 3; 1471 | ["itemreward"] = true; 1472 | }; 1473 | }; 1474 | }; 1475 | [4067] = { 1476 | ["level"] = 70; 1477 | ["name"] = "Sages Path"; 1478 | ["prereq"] = { 1479 | ["unlockEverything or unlockAllHealers or unlockSGE"] = true; 1480 | ["Player.levels[FFXIV.JOBS.SAGE] >= 1"] = false; 1481 | }; 1482 | ["steps"] = { 1483 | [1] = { 1484 | ["condition"] = { 1485 | ["unlockEverything or unlockAllHealers or unlockSGE"] = true; 1486 | }; 1487 | ["id"] = 1039243; -- Sharlayan Maiden 1488 | ["mapid"] = 129; 1489 | ["pos"] = { 1490 | ["x"] = -90.29; 1491 | ["y"] = 20.00; 1492 | ["z"] = 85.56; 1493 | }; 1494 | ["type"] = "start"; 1495 | ["interactrange"] = 3; 1496 | }; 1497 | [2] = { 1498 | ["condition"] = { 1499 | ["unlockEverything or unlockAllHealers or unlockSGE"] = true; 1500 | }; 1501 | ["complete"] = { 1502 | ["step"] = 255; 1503 | }; 1504 | ["id"] = 1039265; -- Lalah Jinjahl 1505 | ["index"] = 1; 1506 | ["mapid"] = 134; 1507 | ["pos"] = { 1508 | ["x"] = -27.54; 1509 | ["y"] = 42.60; 1510 | ["z"] = 163.74; 1511 | }; 1512 | ["type"] = "interact"; 1513 | ["interactrange"] = 3; 1514 | }; 1515 | [3] = { 1516 | ["condition"] = { 1517 | ["unlockEverything or unlockAllHealers or unlockSGE"] = true; 1518 | }; 1519 | ["delay"] = 0; 1520 | ["id"] = 1039265; -- Lalah Jinjahl 1521 | ["mapid"] = 134; 1522 | ["pos"] = { 1523 | ["x"] = -27.54; 1524 | ["y"] = 42.60; 1525 | ["z"] = 163.74; 1526 | }; 1527 | ["type"] = "complete"; 1528 | ["interactrange"] = 3; 1529 | ["itemreward"] = true; 1530 | }; 1531 | }; 1532 | }; 1533 | [4073] = { 1534 | ["level"] = 70; 1535 | ["name"] = "The Killer Instinct"; 1536 | ["prereq"] = { 1537 | ["unlockEverything or unlockAllPhysicalMelee or unlockRPR"] = true; 1538 | ["Player.levels[FFXIV.JOBS.REAPER] >= 1"] = false; 1539 | }; 1540 | ["steps"] = { 1541 | [1] = { 1542 | ["condition"] = { 1543 | ["unlockEverything or unlockAllPhysicalMelee or unlockRPR"] = true; 1544 | }; 1545 | ["id"] = 1036633; -- Flustered Attendant 1546 | ["mapid"] = 130; 1547 | ["pos"] = { 1548 | ["x"] = 82.87; 1549 | ["y"] = 4.10; 1550 | ["z"] = -131.30; 1551 | }; 1552 | ["type"] = "start"; 1553 | ["interactrange"] = 3; 1554 | }; 1555 | [2] = { 1556 | ["condition"] = { 1557 | ["unlockEverything or unlockAllPhysicalMelee or unlockRPR"] = true; 1558 | }; 1559 | ["complete"] = { 1560 | ["step"] = 2; 1561 | }; 1562 | ["id"] = 1036634; -- Jijilyo 1563 | ["index"] = 1; 1564 | ["mapid"] = 131; 1565 | ["pos"] = { 1566 | ["x"] = 134.05; 1567 | ["y"] = 4.00; 1568 | ["z"] = 11.43; 1569 | }; 1570 | ["type"] = "interact"; 1571 | ["interactrange"] = 3; 1572 | }; 1573 | [3] = { 1574 | ["complete"] = { 1575 | ["IsOnMap(971)"] = true; 1576 | }; 1577 | ["condition"] = { 1578 | ["IsOnMap(971)"] = false; 1579 | ["unlockEverything or unlockAllPhysicalMelee or unlockRPR"] = true; 1580 | }; 1581 | ["id"] = 1036632; -- Loyal Lemure 1582 | ["index"] = 2; 1583 | ["mapid"] = 131; 1584 | ["pos"] = { 1585 | ["x"] = 115.10; 1586 | ["y"] = 8.00; 1587 | ["z"] = 15.40; 1588 | }; 1589 | ["type"] = "interact"; 1590 | ["interactrange"] = 3; 1591 | }; 1592 | [4] = { 1593 | ["delay"] = 3; 1594 | ["condition"] = { 1595 | ["IsOnMap(971)"] = true; 1596 | ["step"] = 255; 1597 | ["unlockEverything or unlockAllPhysicalMelee or unlockRPR"] = true; 1598 | }; 1599 | ["id"] = 1037014; -- Drusilla 1600 | ["mapid"] = 971; 1601 | ["pos"] = { 1602 | ["x"] = 0.90; 1603 | ["y"] = 0.01; 1604 | ["z"] = -4.38; 1605 | }; 1606 | ["type"] = "complete"; 1607 | ["conversationindex"] = 1; 1608 | ["interactrange"] = 2; 1609 | ["itemreward"] = true; 1610 | }; 1611 | }; 1612 | }; 1613 | }; 1614 | } 1615 | return obj1 --------------------------------------------------------------------------------