From 11d33ca0284383ee6ebf532b88528b8da7f353e3 Mon Sep 17 00:00:00 2001 From: MrSent Date: Sun, 21 Jun 2020 21:46:24 +0100 Subject: [PATCH] Big update Added new pathing options for entity's First up: pathfind.lua, probly quicker to look at the commenting than me explain that, changed amost npc's that use pathing to use either basicPath or advancedPath, the advancedPath is the one that stands out as this allows the entity to pass id text and npc id's to automatically look at or speak at a a point in the path, and each point can have a delay. Added random pathing for the bunnies in Khazam, as they just sat there. I kept everything the same where i could, but i did have to redo some paths, but that let me cut down on path points also. --- scripts/globals/pathfind.lua | 305 ++- scripts/globals/transport.lua | 15 +- .../Bostaunieux_Oubliette/npcs/Novalmauge.lua | 33 +- scripts/zones/Davoi/npcs/Quemaricond.lua | 72 +- scripts/zones/Ilrusi_Atoll/npcs/Excaliace.lua | 2 +- scripts/zones/Kazham/npcs/Kukupp.lua | 141 +- scripts/zones/Kazham/npcs/Lalapp.lua | 83 +- scripts/zones/Kazham/npcs/Lulupp.lua | 133 +- scripts/zones/Kazham/npcs/Mumupp.lua | 116 +- scripts/zones/Kazham/npcs/Nenepp.lua | 97 +- scripts/zones/Kazham/npcs/Roropp.lua | 345 ++- scripts/zones/Kazham/npcs/Tatapp.lua | 332 +-- scripts/zones/Kazham/npcs/Thali_Mhobrum.lua | 46 +- scripts/zones/Kazham/npcs/bunny01.lua | 25 + scripts/zones/Kazham/npcs/bunny02.lua | 25 + scripts/zones/Kazham/npcs/bunny03.lua | 25 + scripts/zones/Lower_Jeuno/IDs.lua | 1 + scripts/zones/Lower_Jeuno/Zone.lua | 12 +- scripts/zones/Lower_Jeuno/globals.lua | 91 +- scripts/zones/Lower_Jeuno/npcs/Navisse.lua | 141 +- .../Lower_Jeuno/npcs/Vhana_Ehgaklywha.lua | 69 +- scripts/zones/Metalworks/npcs/Fariel.lua | 62 +- scripts/zones/Mhaura/npcs/Dieh_Yamilsiah.lua | 54 +- scripts/zones/Norg/npcs/Deigoff.lua | 91 +- scripts/zones/Norg/npcs/Keal.lua | 122 +- scripts/zones/Norg/npcs/Louartain.lua | 40 +- scripts/zones/Norg/npcs/Oruga.lua | 94 +- scripts/zones/Norg/npcs/Paito-Maito.lua | 75 +- scripts/zones/Norg/npcs/Parlemaille.lua | 54 +- scripts/zones/Norg/npcs/Shivivi.lua | 93 +- scripts/zones/Port_Jeuno/npcs/Red_Ghost.lua | 66 +- .../zones/Southern_San_dOria/npcs/Glenne.lua | 112 +- .../zones/Southern_San_dOria/npcs/Raminel.lua | 147 +- scripts/zones/West_Ronfaure/IDs.lua | 1 + .../zones/West_Ronfaure/npcs/Palcomondau.lua | 356 +-- scripts/zones/West_Ronfaure/npcs/Zovriace.lua | 1997 ++++++++--------- sql/npc_list.sql | 8 +- src/map/ai/helpers/pathfind.h | 3 +- src/map/lua/lua_baseentity.cpp | 170 +- src/map/lua/lua_baseentity.h | 8 +- 40 files changed, 2636 insertions(+), 3026 deletions(-) create mode 100644 scripts/zones/Kazham/npcs/bunny01.lua create mode 100644 scripts/zones/Kazham/npcs/bunny02.lua create mode 100644 scripts/zones/Kazham/npcs/bunny03.lua diff --git a/scripts/globals/pathfind.lua b/scripts/globals/pathfind.lua index a6523bb09f8..e5e182feb36 100644 --- a/scripts/globals/pathfind.lua +++ b/scripts/globals/pathfind.lua @@ -127,31 +127,298 @@ tpz.path = end end, - npcBasicPath = function(npc, points, flags) - local pathPoints = {} - local pathPoint = npc:getPathPoint() - local pos = npc:getPos() + -- run a basic path from start to end and repeat, the path will need to be linked back to start to loop correctly. + basicPath = function(entity, points, run) + local path = points or {} + local point = entity:getPathPoint() + local pos = entity:getPos() - pathPoints = points + if entity:atPoint(path[point]) then + if path[point][4] ~= 0 then + entity:setLocalVar("[PATHDELAY]", os.time() + path[point][4]) + else + if entity:getLocalVar("[PATHDELAY]") ~= 0 then + entity:setLocalVar("[PATHDELAY]", 0) + end + end + + if point == #path then + entity:setPathPoint(1) + else + entity:setPathPoint(point +1) + end + end + + local np = + { + path[point][1], + path[point][2], + path[point][3] + } + + if os.time() >= entity:getLocalVar("[PATHDELAY]") then + entity:stepTo(np[1], np[2], np[3], run) + end + end, + + -- run an advanced path from start to end and repeat, the path will need to be linked back to start to loop correctly. + -- can be delayed with a wait at a point and have the entity use a showText at a point also. + -- entity will look at a target if one is added to the 6th column in the table, but must be an npc. + -- example path point {x, y, z, text id, delay in seconds, npc id} + advancedPath = function(entity, points, run) + local path = points or {} + local point = entity:getPathPoint() + local pos = entity:getPos() + local debugPath = false -- change to true to show debug info + + if entity:atPoint(path[point]) then + if path[point][4] ~= 0 then -- speak at this point if available (only use showText as the speaker needs to not be a player) + entity:showText(entity, path[point][4]) + end + + if path[point][5] ~= 0 then + entity:setLocalVar("[PATHDELAY]", os.time() + path[point][5]) + else + if entity:getLocalVar("[PATHDELAY]") ~= 0 then + entity:setLocalVar("[PATHDELAY]", 0) + end + end + + if point == #path then + entity:setPathPoint(1) + else + entity:setPathPoint(point +1) + end + end + + if os.time() >= entity:getLocalVar("[PATHDELAY]") then + entity:stepTo(path[point][1], path[point][2], path[point][3], run) + else + local lastPoint = point -1 + if lastPoint > 1 and lastPoint < #path and path[lastPoint][6] ~= 0 then + if GetNPCByID(path[lastPoint][6]) ~= nil then + entity:lookAt(GetNPCByID(path[lastPoint][6]):getPos()) + if debugPath then + printf("looking at an npc: %u", tonumber(path[lastPoint][6])) -- un comment to debug + printf("lastPoint was %u, and this point is %u", lastPoint, point) + end + end + end + end + end, + + -- entity will move to last point then set the last position in the path + toPoint = function(entity, points, run) + local path = points or {} + local point = entity:getPathPoint() + local pos = entity:getPos() + local canPath = true + + if path == {} then + return + end + + if entity:atPoint(path[point]) then + if point == #path then + canPath = false + else + entity:setPathPoint(point +1) + canPath = true + end + end + + if canPath then + entity:stepTo(path[point][1], path[point][2], path[point][3], run) + end + end, + + -- entity will move between two points + pingPong = function(entity, points, flags) + local path = points or {} + local point = entity:getPathPoint() + local pos = entity:getPos() + + if entity:atPoint(path[1]) then + entity:setPathPoint(2) + elseif entity:atPoint(path[2]) then + entity:setPathPoint(1) + end + + entity:pathTo(path[point][1], path[point][2], path[point][3], 0, flags) + end, - local dx = pos.x - pathPoints[pathPoint][1] - local dy = pos.y - pathPoints[pathPoint][2] - local distance = math.sqrt ( dx * dx + dy * dy ) + -- pick a random point in the path and set random delay. + randomPoint = function(entity, points, flags) + local path = points or {} + local point = entity:getPathPoint() + local pos = entity:getPos() - if distance == 0 then - if pathPoint == #pathPoints then - npc:setPathPoint(1) + if entity:atPoint(path[point]) then + if path[point][5] ~= 0 then + entity:setLocalVar("[PATHDELAY]", os.time() + path[point][5]) else - npc:setPathPoint(pathPoint +1) + entity:setLocalVar("[PATHDELAY]", os.time() + math.random(4, 8)) end + entity:setPathPoint(math.random(1, #path)) + end + + local np = + { + path[point][1], + path[point][2], + path[point][3], + path[point][4] + } + + local rotation = 0 + + if np[4] == 0 then + rotation = pos.rot end - local pointX = pathPoints[pathPoint][1] - local pointY = pathPoints[pathPoint][2] - local pointZ = pathPoints[pathPoint][3] - local rotation = pathPoints[pathPoint][4] - - npc:pathTo(pointX, pointY, pointZ, rotation) - npc:lookAt(pointX, pointY, pointZ) + if os.time() >= entity:getLocalVar("[PATHDELAY]") then + entity:pathTo(np[1], np[2], np[3], rotation, flags) + if path[point][4] == 0 then + entity:lookAt(np[1], np[2], np[3]) + end + end + end, + + -- basic move to a position, uses a run bool, default is false + moveToPosition = function(entity, newPos, run) + local point = newPos or {0,0,0} + + entity:stepTo(point[1], point[2], point[3], run) + end, + + -- move or keep entity behind a target. + behindTarget = function(entity, target) + local pos = entity:getPos() + local tPos = target:getPos() + local offset = target:getModelSize() +5 + + local rotation = (tPos.rot/256) * 2 * math.pi + + rotation = rotation + math.pi + + local newX = tPos.x + math.cos((2 * math.pi - rotation)) * offset + local newZ = tPos.z + math.sin((2 * math.pi - rotation)) * offset + + entity:pathTo(newX, tPos.y, newZ, 0, 8, true) + entity:lookAt(tPos) + end, + + -- move or keep entity infront of a target. + infrontTarget = function(entity, target) + local pos = entity:getPos() + local tPos = target:getPos() + local offset = target:getModelSize() +5 + + local rotation = (tPos.rot/256) * 2 * math.pi + + local newX = tPos.x + math.cos((2 * math.pi - rotation)) * offset + local newZ = tPos.z + math.sin((2 * math.pi - rotation)) * offset + + entity:pathTo(newX, tPos.y, newZ, 0, 8, true) + entity:lookAt(tPos) + end, + + --- move or keep entity out of incomming casting range from target. + safeDistance = function(entity, target) + local pos = entity:getPos() + local tPos = target:getPos() + local offset = target:getModelSize() + 22 + + local newX = tPos.x + math.cos((2 * math.pi)) * offset + local newZ = tPos.z + math.sin((2 * math.pi)) * offset + + entity:pathTo(newX, tPos.y, newZ, 0, 8, true) + entity:lookAt(tPos) + end, + + -- move or keep entity in meele range of target. + meeleRange = function(entity, target) + local pos = entity:getPos() + local tPos = target:getPos() + local offset = target:getModelSize() + 3 + + local newX = tPos.x + math.cos((2 * math.pi)) * offset + local newZ = tPos.z + math.sin((2 * math.pi)) * offset + + entity:pathTo(newX, tPos.y, newZ, 0, 8, true) + entity:lookAt(tPos) + end, + + -- move or keep entity in casting range of target. + castingRange = function(enity, target) + local pos = entity:getPos() + local tPos = target:getPos() + local offset = target:getModelSize() + 18 + + local newX = tPos.x + math.cos((2 * math.pi)) * offset + local newZ = tPos.z + math.sin((2 * math.pi)) * offset + + entity:pathTo(newX, tPos.y, newZ, 0, 8, true) + entity:lookAt(tPos) + end, + + -- move or keep entity in range of target to use a song or cor roll. + songRollRange = function(entity, target) + local pos = entity:getPos() + local tPos = target:getPos() + local offset = target:getModelSize() + 2 + + local newX = tPos.x + math.cos((2 * math.pi)) * offset + local newZ = tPos.z + math.sin((2 * math.pi)) * offset + + entity:pathTo(newX, tPos.y, newZ, 0, 8, true) + entity:lookAt(tPos) + end, + + -- move or keep entity in ranged attack range. + rangedRange = function(entity, target) + local pos = entity:getPos() + local tPos = target:getPos() + local offset = target:getModelSize() + 15 + + local newX = tPos.x + math.cos((2 * math.pi)) * offset + local newZ = tPos.z + math.sin((2 * math.pi)) * offset + + entity:pathTo(newX, tPos.y, newZ, 0, 8, true) + entity:lookAt(tPos) + end, + + -- move or keep entity at a certain distance using a range passed to function. + wantedRange = function(entity, target, range) + local pos = entity:getPos() + local tPos = target:getPos() + local offset = target:getModelSize() + range + + local newX = tPos.x + math.cos((2 * math.pi)) * offset + local newZ = tPos.z + math.sin((2 * math.pi)) * offset + + entity:pathTo(newX, tPos.y, newZ, 0, 8, true) + entity:lookAt(tPos) + end, + + + -- move or keep entity between cover target and cover target, needs both passed to function. + coverTarget = function(entity, coverTarget, target) + local pos = entity:getPos() + local tPos = target:getPos() + local cTPos = coverTarget:getPos() + + local rotation = (tPos.rot/256) * 2 * math.pi + + local dx = tPos.x - cTPos.x + local dz = tPos.z - cTPos.z + + local midpoint = math.sqrt( dx * dx + dz * dz )/2 + + local newX = tPos.x + math.cos((2 * math.pi - rotation)) * midpoint + local newZ = tPos.z + math.sin((2 * math.pi - rotation)) * midpoint + + entity:pathTo(newX, tPos.y, newZ, 0, 8, true) + entity:lookAt(tPos) end } diff --git a/scripts/globals/transport.lua b/scripts/globals/transport.lua index 272fc1eee8c..b0d6e786e8f 100644 --- a/scripts/globals/transport.lua +++ b/scripts/globals/transport.lua @@ -2,6 +2,7 @@ -- Transport ------------------------------------ require("scripts/globals/zone") +require("scripts/globals/pathfind") ------------------------------------ tpz = tpz or {} @@ -59,8 +60,8 @@ tpz.transport.pos = { mhaura = { - ARRIVING = {7.06, -1.36, 2.20}, - DEPARTING = {8.26, -1.36, 2.20} + ARRIVING = {{7.06, -1.36, 2.48}, {7.07, -1.36, 2.58}}, + DEPARTING = {{8.26, -1.36, 2.20}, {8.26, -1.36, 2.30}}, } } @@ -78,8 +79,14 @@ end tpz.transport.dockMessage = function(npc, triggerID, messages, dock) npc:showText(npc, messages[triggerID]) if (triggerID % 2) == 0 then - npc:pathThrough(tpz.transport.pos[dock].ARRIVING, PATHFLAG_WALLHACK) + npc:setLocalVar("[PATHING]DEPARTING", 2) + npc:setPathPoint(1) + npc:pathResume() + --tpz.path.toPoint(npc, tpz.transport.pos[dock].ARRIVING, false) else - npc:pathThrough(tpz.transport.pos[dock].DEPARTING, PATHFLAG_WALLHACK) + npc:setLocalVar("[PATHING]DEPARTING", 1) + npc:setPathPoint(1) + npc:pathResume() + --tpz.path.toPoint(npc, tpz.transport.pos[dock].DEPARTING, false) end end diff --git a/scripts/zones/Bostaunieux_Oubliette/npcs/Novalmauge.lua b/scripts/zones/Bostaunieux_Oubliette/npcs/Novalmauge.lua index 54cb6526ff4..510408f3971 100644 --- a/scripts/zones/Bostaunieux_Oubliette/npcs/Novalmauge.lua +++ b/scripts/zones/Bostaunieux_Oubliette/npcs/Novalmauge.lua @@ -15,24 +15,19 @@ require("scripts/globals/quests") local path = { - [1] = {20.000, -24.000, 20.000, 0}, - [2] = {50.000, -24.000, 20.000, 0}, - [3] = {75.000, -24.000, 20.000, 0}, - [2] = {50.000, -24.000, 20.000, 0} + {20.000, -24.032, 20.000, 2}, + {75.000, -24.032, 20.000, 2}, } local wsQuest = tpz.wsquest.spiral_hell function onSpawn(npc) - npc:initNpcAi() - npc:setPos(path[1][1], path[1][2], path[1][3], 0) - npc:speed(12) - npc:setPathPoint(1) + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) onPath(npc) end function onPath(npc) - tpz.path.npcBasicPath(npc, path, 0) + tpz.path.basicPath(npc, path, false) end function onTrade(player, npc, trade) @@ -40,13 +35,13 @@ function onTrade(player, npc, trade) if player:getCharVar("troubleAtTheSluiceVar") == 2 and npcUtil.tradeHas(trade, 959) then -- Dahlia player:startEvent(17) - npc:speed(0) + npc:pathStop() elseif player:getQuestStatus(SANDORIA, tpz.quest.id.sandoria.THE_RUMOR) == QUEST_ACCEPTED and npcUtil.tradeHas(trade, 930) then -- Beastman Blood player:startEvent(12) - npc:speed(0) + npc:pathStop() elseif wsQuestEvent ~= nil then player:startEvent(wsQuestEvent) - npc:speed(0) + npc:pathStop() end end @@ -57,32 +52,39 @@ function onTrigger(player, npc) local theHolyCrestStat = player:getCharVar("TheHolyCrest_Event") local theRumor = player:getQuestStatus(SANDORIA, tpz.quest.id.sandoria.THE_RUMOR) - npc:speed(0) - if wsQuestEvent ~= nil then player:startEvent(wsQuestEvent) + npc:pathStop() -- THE HOLY CREST elseif theHolyCrestStat == 1 then player:startEvent(6) + npc:pathStop() elseif theHolyCrestStat == 2 and player:getCharVar("theHolyCrestCheck") == 0 then player:startEvent(7) + npc:pathStop() -- TROUBLE AT THE SLUICE elseif troubleAtTheSluiceStat == 1 then player:startEvent(15) + npc:pathStop() elseif troubleAtTheSluiceStat == 2 then player:startEvent(16) + npc:pathStop() -- THE RUMOR elseif theRumor == QUEST_AVAILABLE and player:getFameLevel(SANDORIA) >= 3 and player:getMainLvl() >= 10 then player:startEvent(13) + npc:pathStop() elseif theRumor == QUEST_ACCEPTED then player:startEvent(11) + npc:pathStop() elseif theRumor == QUEST_COMPLETED then player:startEvent(14) -- Standard dialog after "The Rumor" + npc:pathStop() else player:startEvent(10) -- Standard dialog + npc:pathStop() end end @@ -108,6 +110,5 @@ function onEventFinish(player, csid, option, npc) tpz.wsquest.handleEventFinish(wsQuest, player, csid, option, ID.text.SPIRAL_HELL_LEARNED) end - npc:speed(12) - tpz.path.npcBasicPath(npc, path, 0) + npc:pathResume() end diff --git a/scripts/zones/Davoi/npcs/Quemaricond.lua b/scripts/zones/Davoi/npcs/Quemaricond.lua index 8bd6e723582..584a1cb2ef8 100644 --- a/scripts/zones/Davoi/npcs/Quemaricond.lua +++ b/scripts/zones/Davoi/npcs/Quemaricond.lua @@ -4,58 +4,56 @@ -- Involved in Mission: Infiltrate Davoi -- !pos 23 0.1 -23 149 ----------------------------------- -require("scripts/globals/missions"); -require("scripts/globals/keyitems"); -local ID = require("scripts/zones/Davoi/IDs"); -require("scripts/globals/pathfind"); +local ID = require("scripts/zones/Davoi/IDs") +require("scripts/globals/missions") +require("scripts/globals/keyitems") +require("scripts/globals/pathfind") ----------------------------------- local path = { - 20.6, 0, -23, - 46, 0, -19, - 53.5, -1.8, -19, - 61, -1.1, -18.6, - 67.3, -1.5, -18.6, - 90, -0.5, -19 -}; + {20.600, 0.000, -23.000, 0, 5, 0}, + {50.000, -1.500, -19.000, 0, 0, 0}, + {53.500, -1.800, -19.000, 0, 0, 0}, + {58.000, -1.000, -19.000, 0, 0, 0}, + {65.500, -1.800, -19.000, 0, 0, 0}, + {91.000, -0.500, -16.500, 0, 5, 0}, + {65.500, -1.800, -19.000, 0, 0, 0}, + {58.000, -1.000, -19.000, 0, 0, 0}, + {53.500, -1.800, -19.000, 0, 0, 0}, + {50.000, -1.500, -19.000, 0, 0, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) + tpz.path.advancedPath(npc, path, false) +end - tpz.path.patrol(npc, path); -end; - -function onTrade(player,npc,trade) -end; - -function onTrigger(player,npc) +function onTrade(player, npc, trade) +end +function onTrigger(player, npc) if (player:getCurrentMission(SANDORIA) == tpz.mission.id.sandoria.INFILTRATE_DAVOI and player:getCharVar("MissionStatus") == 3) then - player:startEvent(117); - npc:wait(); + player:startEvent(117) + npc:pathStop() else - player:showText(npc, ID.text.QUEMARICOND_DIALOG); - npc:wait(2000); + player:showText(npc, ID.text.QUEMARICOND_DIALOG) end +end -end; - -function onEventUpdate(player,csid,option) -end; - -function onEventFinish(player,csid,option,npc) +function onEventUpdate(player, csid, option) +end +function onEventFinish(player, csid, option, npc) if (csid == 117) then - player:setCharVar("MissionStatus",4); - player:addKeyItem(tpz.ki.ROYAL_KNIGHTS_DAVOI_REPORT); - player:messageSpecial(ID.text.KEYITEM_OBTAINED,tpz.ki.ROYAL_KNIGHTS_DAVOI_REPORT); + player:setCharVar("MissionStatus",4) + player:addKeyItem(tpz.ki.ROYAL_KNIGHTS_DAVOI_REPORT) + player:messageSpecial(ID.text.KEYITEM_OBTAINED,tpz.ki.ROYAL_KNIGHTS_DAVOI_REPORT) end - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Ilrusi_Atoll/npcs/Excaliace.lua b/scripts/zones/Ilrusi_Atoll/npcs/Excaliace.lua index 09a64fbb735..a8a08472a7b 100644 --- a/scripts/zones/Ilrusi_Atoll/npcs/Excaliace.lua +++ b/scripts/zones/Ilrusi_Atoll/npcs/Excaliace.lua @@ -77,7 +77,7 @@ local startToChoice1 = { }; function onSpawn(npc) - npc:initNpcAi(); + npc:initNpcPathing(); npc:pathThrough(start, PATHFLAG_REPEAT); end; diff --git a/scripts/zones/Kazham/npcs/Kukupp.lua b/scripts/zones/Kazham/npcs/Kukupp.lua index 08cbae17ad1..2f39023bb39 100644 --- a/scripts/zones/Kazham/npcs/Kukupp.lua +++ b/scripts/zones/Kazham/npcs/Kukupp.lua @@ -3,75 +3,30 @@ -- NPC: Kukupp -- Standard Info NPC ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") local path = { - 43.067505, -11.000000, -177.214966, - 43.583324, -11.000000, -178.104263, - 44.581100, -11.000000, -178.253067, - 45.459488, -11.000000, -177.616653, - 44.988266, -11.000000, -176.728577, - 43.920345, -11.000000, -176.549469, - 42.843422, -11.000000, -176.469452, - 41.840969, -11.000000, -176.413971, - 41.849968, -11.000000, -177.460236, - 42.699162, -11.000000, -178.046478, - 41.800228, -11.000000, -177.440720, - 40.896564, -11.000000, -176.834793, - 41.800350, -11.000000, -177.440704, - 43.494385, -11.000000, -178.577087, - 44.525345, -11.000000, -178.332214, - 45.382175, -11.000000, -177.664185, - 44.612972, -11.000000, -178.457062, - 43.574627, -11.000000, -178.455185, - 42.603222, -11.000000, -177.950760, - 41.747925, -11.000000, -177.402481, - 40.826141, -11.000000, -176.787674, - 41.709877, -11.000000, -177.380173, - 42.570263, -11.000000, -177.957306, - 43.600094, -11.000000, -178.648087, - 44.603924, -11.000000, -178.268082, - 45.453266, -11.000000, -177.590103, - 44.892513, -11.000000, -176.698730, - 43.765514, -11.000000, -176.532211, - 42.616215, -11.000000, -176.454498, - 41.549683, -11.000000, -176.399078, - 42.671898, -11.000000, -176.463196, - 43.670380, -11.000000, -176.518692, - 45.595409, -11.000000, -176.626129, - 44.485180, -11.000000, -176.564041, - 43.398880, -11.000000, -176.503586, - 40.778934, -11.000000, -176.357834, - 41.781410, -11.000000, -176.413223, - 42.799843, -11.000000, -176.469894, - 45.758560, -11.000000, -176.782486, - 45.296803, -11.000000, -177.683472, - 44.568489, -11.000000, -178.516357, - 45.321579, -11.000000, -177.759048, - 45.199261, -11.000000, -176.765274, - 44.072094, -11.000000, -176.558044, - 43.054935, -11.000000, -176.482895, - 41.952633, -11.000000, -176.421570, - 43.014915, -11.000000, -176.482178, - 45.664345, -11.000000, -176.790253, - 45.225407, -11.000000, -177.712463, - 44.465252, -11.000000, -178.519577, - 43.388020, -11.000000, -178.364532, - 42.406048, -11.000000, -177.838013, - 41.515419, -11.000000, -177.255875, - 40.609776, -11.000000, -176.645706 -}; + {44.000, -11.000, -176.000, 0, 0}, + {47.000, -11.000, -179.500, 0, 0}, + {44.000, -11.000, -177.000, 0, 0}, + {40.500, -11.000, -179.500, 0, 0}, + {39.500, -11.000, -176.500, 0, 0}, + {41.300, -11.000, -172.300, 0, 0}, + {45.000, -11.000, -171.300, 0, 0}, + {46.000, -11.000, -173.600, 0, 0}, + {42.700, -11.000, -174.300, 0, 0}, + {44.000, -11.000, -179.800, 0, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.randomPoint(npc, path, 0) +end function onTrade(player,npc,trade) -- item IDs @@ -85,61 +40,65 @@ function onTrade(player,npc,trade) -- 905 Wyvern Skull -- 1147 Ancient Salt -- 4600 Lucky Egg - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local goodtrade = trade:hasItemQty(22,1); - local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local goodtrade = trade:hasItemQty(22,1) + local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)) if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if progress == 1 or failed == 2 then if goodtrade then - player:startEvent(220); + player:startEvent(220) + npc:pathStop() elseif badtrade then - player:startEvent(230); + player:startEvent(230) + npc:pathStop() end end end -end; +end function onTrigger(player,npc) - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local retry = player:getCharVar("OPO_OPO_RETRY"); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local retry = player:getCharVar("OPO_OPO_RETRY") if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if retry >= 1 then -- has failed on future npc so disregard previous successful trade - player:startEvent(198); - npc:wait(); + player:startEvent(198) + npc:pathStop() elseif (progress == 1 or failed == 2) then - player:startEvent(208); -- asking for workbench + player:startEvent(208) -- asking for workbench + npc:pathStop() elseif (progress >= 2 or failed >= 3) then - player:startEvent(243); -- happy with workbench + player:startEvent(243) -- happy with workbench + npc:pathStop() end else - player:startEvent(198); - npc:wait(); + player:startEvent(198) + npc:pathStop() end -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 220) then -- correct trade, onto next opo if player:getCharVar("OPO_OPO_PROGRESS") == 1 then - player:tradeComplete(); - player:setCharVar("OPO_OPO_PROGRESS",2); - player:setCharVar("OPO_OPO_FAILED",0); + player:tradeComplete() + player:setCharVar("OPO_OPO_PROGRESS",2) + player:setCharVar("OPO_OPO_FAILED",0) else - player:setCharVar("OPO_OPO_FAILED",3); + player:setCharVar("OPO_OPO_FAILED",3) end elseif (csid == 230) then -- wrong trade, restart at first opo - player:setCharVar("OPO_OPO_FAILED",1); - player:setCharVar("OPO_OPO_RETRY",2); - else - npc:wait(0); + player:setCharVar("OPO_OPO_FAILED",1) + player:setCharVar("OPO_OPO_RETRY",2) end -end; + + npc:pathResume() +end diff --git a/scripts/zones/Kazham/npcs/Lalapp.lua b/scripts/zones/Kazham/npcs/Lalapp.lua index 045ca4e617a..6eeefdb0f46 100644 --- a/scripts/zones/Kazham/npcs/Lalapp.lua +++ b/scripts/zones/Kazham/npcs/Lalapp.lua @@ -1,6 +1,6 @@ ----------------------------------- -- Area: Kazham --- NPC: Lalapp +-- NPC: Lalapp -- Standard Info NPC ----------------------------------- require("scripts/globals/pathfind"); @@ -8,20 +8,19 @@ require("scripts/globals/pathfind"); local path = { - -63.243702, -11.000023, -97.916130, - -63.970551, -11.000027, -97.229286, - -64.771614, -11.000030, -96.499062 -}; + {-63.243, -11.000, -97.916, 0, 0}, + {-63.970, -11.000, -97.229, 0, 0}, + {-64.771, -11.000, -96.499, 0, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.randomPoint(npc, path, 0) +end function onTrade(player,npc,trade) -- item IDs @@ -35,61 +34,65 @@ function onTrade(player,npc,trade) -- 905 Wyvern Skull -- 1147 Ancient Salt -- 4600 Lucky Egg - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local goodtrade = trade:hasItemQty(1147,1); - local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(905,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(4600,1)); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local goodtrade = trade:hasItemQty(1147,1) + local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(905,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(4600,1)) if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if progress == 8 or failed == 9 then if goodtrade then - player:startEvent(227); + player:startEvent(227) + npc:pathStop() elseif badtrade then - player:startEvent(237); + player:startEvent(237) + npc:pathStop() end end end -end; +end function onTrigger(player,npc) - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local retry = player:getCharVar("OPO_OPO_RETRY"); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local retry = player:getCharVar("OPO_OPO_RETRY") if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if retry >= 1 then -- has failed on future npc so disregard previous successful trade - player:startEvent(205); - npc:wait(); + player:startEvent(205) + npc:pathStop() elseif (progress == 8 or failed == 9) then - player:startEvent(214); -- asking for ancient salt + player:startEvent(214) -- asking for ancient salt + npc:pathStop() elseif (progress >= 9 or failed >= 10) then - player:startEvent(250); -- happy with ancient salt + player:startEvent(250) -- happy with ancient salt + npc:pathStop() end else - player:startEvent(205); - npc:wait(); + player:startEvent(205) + npc:pathStop() end -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 227) then -- correct trade, onto next opo if player:getCharVar("OPO_OPO_PROGRESS") == 8 then - player:tradeComplete(); - player:setCharVar("OPO_OPO_PROGRESS",9); - player:setCharVar("OPO_OPO_FAILED",0); + player:tradeComplete() + player:setCharVar("OPO_OPO_PROGRESS",9) + player:setCharVar("OPO_OPO_FAILED",0) else - player:setCharVar("OPO_OPO_FAILED",10); + player:setCharVar("OPO_OPO_FAILED",10) end elseif (csid == 237) then -- wrong trade, restart at first opo - player:setCharVar("OPO_OPO_FAILED",1); - player:setCharVar("OPO_OPO_RETRY",9); - else - npc:wait(0); + player:setCharVar("OPO_OPO_FAILED",1) + player:setCharVar("OPO_OPO_RETRY",9) end -end; + + npc:pathResume() +end diff --git a/scripts/zones/Kazham/npcs/Lulupp.lua b/scripts/zones/Kazham/npcs/Lulupp.lua index d3c8d1a21ef..8489728cac3 100644 --- a/scripts/zones/Kazham/npcs/Lulupp.lua +++ b/scripts/zones/Kazham/npcs/Lulupp.lua @@ -1,42 +1,29 @@ ----------------------------------- -- Area: Kazham --- NPC: Lulupp +-- NPC: Lulupp -- Type: Standard NPC -- !pos -26.567 -3.5 -3.544 250 ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") local path = { - -27.457125, -3.043032, -22.057966, - -27.373426, -2.772481, -20.974442, - -27.103289, -2.500000, -17.846378, - -26.864126, -2.500000, -15.667570, - -26.532335, -2.500000, -16.636086, - -26.505196, -2.500000, -15.471632, - -26.509424, -2.500000, -14.359641, - -26.564587, -2.500000, -4.499783, - -26.574417, -2.500000, -5.523735, - -26.580530, -2.500000, -6.591716, - -26.583765, -2.500000, -8.555706, - -26.501217, -2.500000, -16.563267, - -26.504532, -2.500000, -15.427269, - -26.509769, -2.500000, -14.327281, - -26.565643, -2.500000, -4.247434, - -26.573967, -2.500000, -5.299402, - -26.579763, -2.500000, -6.379386, - -26.580465, -2.500000, -8.155381 -}; + {-27.000, -3.300, -23.000, 5}, + {-27.000, -2.500, -18.500, 0}, + {-27.000, -2.500, -9.000, 0}, + {-27.000, -2.500, 2.000, 5}, + {-27.000, -2.500, -9.000, 0}, + {-27.000, -2.500, -18.500, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -- item IDs @@ -50,83 +37,99 @@ function onTrade(player,npc,trade) -- 905 Wyvern Skull -- 1147 Ancient Salt -- 4600 Lucky Egg - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local goodtrade = trade:hasItemQty(483,1); - local badtrade = (trade:hasItemQty(22,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local goodtrade = trade:hasItemQty(483,1) + local badtrade = (trade:hasItemQty(22,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)) if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if progress == 0 or failed == 1 then if goodtrade then -- first or second time trading correctly - player:startEvent(219); + player:startEvent(219) + npc:pathStop() elseif badtrade then - player:startEvent(229); + player:startEvent(229) + npc:pathStop() end end end -end; +end function onTrigger(player,npc) - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local retry = player:getCharVar("OPO_OPO_RETRY"); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local retry = player:getCharVar("OPO_OPO_RETRY") + + npc:pathStop() if (player:getCharVar("BathedInScent") == 1 and OpoOpoAndIStatus == QUEST_AVAILABLE) then player:startEvent(217, 0, 483) -- 483 broken mithran fishing rod - npc:wait(); + npc:pathStop() elseif (OpoOpoAndIStatus == QUEST_ACCEPTED) then if retry == 1 then - player:startEvent(239); -- gave 1st NPC wrong item instead of "Broken Mithran Fishing Rod" + player:startEvent(239) -- gave 1st NPC wrong item instead of "Broken Mithran Fishing Rod" + npc:pathStop() elseif retry == 2 then - player:startEvent(239, 0, 0, 1); -- gave 2nd NPC wrong item instead of "Workbench" + player:startEvent(239, 0, 0, 1) -- gave 2nd NPC wrong item instead of "Workbench" + npc:pathStop() elseif retry == 3 then - player:startEvent(239, 0, 0, 2); -- gave 3rd NPC wrong item instead of "Ten of Coins" + player:startEvent(239, 0, 0, 2) -- gave 3rd NPC wrong item instead of "Ten of Coins" + npc:pathStop() elseif retry == 4 then - player:startEvent(239, 0, 0, 3); -- gave 4th NPC wrong item instead of "Sands of silence" + player:startEvent(239, 0, 0, 3) -- gave 4th NPC wrong item instead of "Sands of silence" + npc:pathStop() elseif retry == 5 then - player:startEvent(239, 0, 0, 4); -- gave 5th NPC wrong item instead of "Wandering Bulb" + player:startEvent(239, 0, 0, 4) -- gave 5th NPC wrong item instead of "Wandering Bulb" + npc:pathStop() elseif retry == 6 then - player:startEvent(239, 0, 0, 5); -- gave 6th NPC wrong item instead of "Giant Fish Bones" + player:startEvent(239, 0, 0, 5) -- gave 6th NPC wrong item instead of "Giant Fish Bones" + npc:pathStop() elseif retry == 7 then - player:startEvent(239, 0, 0, 6); -- gave 7th NPC wrong item instead of "Blackened Toad" + player:startEvent(239, 0, 0, 6) -- gave 7th NPC wrong item instead of "Blackened Toad" + npc:pathStop() elseif retry == 8 then - player:startEvent(239, 0, 0, 7); -- gave 8th NPC wrong item instead of "Wyvern Skull" + player:startEvent(239, 0, 0, 7) -- gave 8th NPC wrong item instead of "Wyvern Skull" + npc:pathStop() elseif retry == 9 then - player:startEvent(239, 0, 0, 8); -- gave 9th NPC wrong item instead of "Ancient Salt" + player:startEvent(239, 0, 0, 8) -- gave 9th NPC wrong item instead of "Ancient Salt" + npc:pathStop() elseif retry == 10 then - player:startEvent(239, 0, 0, 9); -- gave 10th NPC wrong item instead of "Lucky Egg" ... uwot + player:startEvent(239, 0, 0, 9) -- gave 10th NPC wrong item instead of "Lucky Egg" ... uwot + npc:pathStop() elseif (progress == 0 or failed == 1) then - player:startEvent(207); -- asking for rod with Opoppo + player:startEvent(207) -- asking for rod with Opoppo + npc:pathStop() elseif (progress >= 1 or failed >= 2) then - player:startEvent(242); -- happy with rod + player:startEvent(242) -- happy with rod + npc:pathStop() end else - player:startEvent(197); -- not sure why but this cs has no text - npc:wait(); + player:startEvent(197) -- not sure why but this cs has no text + npc:pathStop() end -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 217 and option == 1) then -- Opo Opo and I quest start CS - player:addQuest(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); + player:addQuest(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) elseif (csid == 219) then if (player:getCharVar("OPO_OPO_PROGRESS") == 0) then player:tradeComplete(); - player:setCharVar("OPO_OPO_PROGRESS",1); + player:setCharVar("OPO_OPO_PROGRESS",1) else - player:setCharVar("OPO_OPO_FAILED",2); + player:setCharVar("OPO_OPO_FAILED",2) end elseif (csid == 229) then -- Traded wrong item, saving current progress to not take item up to this point - player:setCharVar("OPO_OPO_RETRY",1); + player:setCharVar("OPO_OPO_RETRY",1) elseif (csid == 239 and option == 1) then -- Traded wrong to another NPC, give a clue - player:setCharVar("OPO_OPO_RETRY",0); - player:setCharVar("OPO_OPO_FAILED",1); - else - npc:wait(0); + player:setCharVar("OPO_OPO_RETRY",0) + player:setCharVar("OPO_OPO_FAILED",1) end -end; + + npc:pathResume() +end diff --git a/scripts/zones/Kazham/npcs/Mumupp.lua b/scripts/zones/Kazham/npcs/Mumupp.lua index 815777a8c0e..45903bb99aa 100644 --- a/scripts/zones/Kazham/npcs/Mumupp.lua +++ b/scripts/zones/Kazham/npcs/Mumupp.lua @@ -1,43 +1,41 @@ ----------------------------------- -- Area: Kazham --- NPC: Mumupp +-- NPC: Mumupp -- Standard Info NPC ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") ----------------------------------- local path = { - 94.732452, -15.000000, -114.034622, - 94.210846, -15.000000, -114.989388, - 93.508865, -15.000000, -116.274101, - 94.584877, -15.000000, -116.522118, - 95.646988, -15.000000, -116.468452, - 94.613518, -15.000000, -116.616562, - 93.791100, -15.000000, -115.858505, - 94.841835, -15.000000, -116.108437, - 93.823380, -15.000000, -116.712860, - 94.986847, -15.000000, -116.571831, - 94.165512, -15.000000, -115.965698, - 95.005806, -15.000000, -116.519707, - 93.935555, -15.000000, -116.706291, - 94.943497, -15.000000, -116.578346, - 93.996826, -15.000000, -115.932816, - 95.060165, -15.000000, -116.180840, - 94.081062, -15.000000, -115.923836, - 95.246490, -15.000000, -116.215691, - 94.234077, -15.000000, -115.960793 -}; + {94.732452, -15.000000, -114.034622, 0, 0}, + {94.210846, -15.000000, -114.989388, 0, 0}, + {93.508865, -15.000000, -116.274101, 0, 0}, + {94.584877, -15.000000, -116.522118, 0, 0}, + {95.646988, -15.000000, -116.468452, 0, 0}, + {94.613518, -15.000000, -116.616562, 0, 0}, + {93.791100, -15.000000, -115.858505, 0, 0}, + {94.841835, -15.000000, -116.108437, 0, 0}, + {93.823380, -15.000000, -116.712860, 0, 0}, + {94.986847, -15.000000, -116.571831, 0, 0}, + {94.165512, -15.000000, -115.965698, 0, 0}, + {95.005806, -15.000000, -116.519707, 0, 0}, + {93.935555, -15.000000, -116.706291, 0, 0}, + {94.943497, -15.000000, -116.578346, 0, 0}, + {93.996826, -15.000000, -115.932816, 0, 0}, + {95.060165, -15.000000, -116.180840, 0, 0}, + {94.081062, -15.000000, -115.923836, 0, 0}, + {95.246490, -15.000000, -116.215691, 0, 0}, + {94.234077, -15.000000, -115.960793, 0, 0} +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.randomPoint(npc, path, 0) +end function onTrade(player,npc,trade) @@ -52,61 +50,65 @@ function onTrade(player,npc,trade) -- 905 Wyvern Skull -- 1147 Ancient Salt -- 4600 Lucky Egg - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local goodtrade = trade:hasItemQty(1008,1); - local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local goodtrade = trade:hasItemQty(1008,1) + local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)) if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if progress == 2 or failed == 3 then if goodtrade then - player:startEvent(221); + player:startEvent(221) + npc:pathStop() elseif badtrade then - player:startEvent(231); + player:startEvent(231) + npc:pathStop() end end end -end; +end function onTrigger(player,npc) - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local retry = player:getCharVar("OPO_OPO_RETRY"); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local retry = player:getCharVar("OPO_OPO_RETRY") if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if retry >= 1 then -- has failed on future npc so disregard previous successful trade - player:startEvent(199); - npc:wait(); + player:startEvent(199) + npc:pathStop() elseif (progress == 2 or failed == 3) then - player:startEvent(209); -- asking for ten of coins + player:startEvent(209) -- asking for ten of coins + npc:pathStop() elseif (progress >= 3 or failed >= 4) then - player:startEvent(244); -- happy with ten of coins + player:startEvent(244) -- happy with ten of coins + npc:pathStop() end else - player:startEvent(199); - npc:wait(); + player:startEvent(199) + npc:pathStop() end -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 221) then -- correct trade, onto next opo if player:getCharVar("OPO_OPO_PROGRESS") == 2 then - player:tradeComplete(); - player:setCharVar("OPO_OPO_PROGRESS",3); - player:setCharVar("OPO_OPO_FAILED",0); + player:tradeComplete() + player:setCharVar("OPO_OPO_PROGRESS",3) + player:setCharVar("OPO_OPO_FAILED",0) else - player:setCharVar("OPO_OPO_FAILED",4); + player:setCharVar("OPO_OPO_FAILED",4) end elseif (csid == 231) then -- wrong trade, restart at first opo - player:setCharVar("OPO_OPO_FAILED",1); - player:setCharVar("OPO_OPO_RETRY",3); - else - npc:wait(0); + player:setCharVar("OPO_OPO_FAILED",1) + player:setCharVar("OPO_OPO_RETRY",3) end -end; + + npc:pathResume() +end diff --git a/scripts/zones/Kazham/npcs/Nenepp.lua b/scripts/zones/Kazham/npcs/Nenepp.lua index f951bdb9558..c2833bfa4db 100644 --- a/scripts/zones/Kazham/npcs/Nenepp.lua +++ b/scripts/zones/Kazham/npcs/Nenepp.lua @@ -1,30 +1,29 @@ ----------------------------------- -- Area: Kazham --- NPC: Nenepp +-- NPC: Nenepp -- Standard Info NPC ----------------------------------- -local ID = require("scripts/zones/Kazham/IDs"); -require("scripts/globals/pathfind"); +local ID = require("scripts/zones/Kazham/IDs") +require("scripts/globals/pathfind") require("scripts/globals/quests") require("scripts/globals/titles") ----------------------------------- local path = { - 29.014000, -11.00000, -183.884000, - 31.023000, -11.00000, -183.538000, - 33.091000, -11.00000, -183.738000 -}; + {29.014, -11.000, -183.884, 0, 0}, + {31.023, -11.000, -183.538, 0, 0}, + {33.091, -11.000, -183.738, 0, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.randomPoint(npc, path, 0) +end function onTrade(player,npc,trade) @@ -39,22 +38,24 @@ function onTrade(player,npc,trade) -- 905 Wyvern Skull -- 1147 Ancient Salt -- 4600 Lucky Egg - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local goodtrade = trade:hasItemQty(4600,1); - local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(905,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(1147,1)); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local goodtrade = trade:hasItemQty(4600,1) + local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(905,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(1147,1)) if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if progress == 9 or failed == 10 then if goodtrade then - player:startEvent(241); + player:startEvent(241) + npc:pathStop() elseif badtrade then - player:startEvent(238); + player:startEvent(238) + npc:pathStop() end end end -end; +end function onTrigger(player,npc) local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); @@ -64,45 +65,47 @@ function onTrigger(player,npc) if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if retry >= 1 then -- has failed on future npc so disregard previous successful trade - player:startEvent(206); - npc:wait(); + player:startEvent(206) + npc:pathStop() elseif (progress == 9 or failed == 10) then - player:startEvent(212); -- asking for lucky egg + player:startEvent(212) -- asking for lucky egg + npc:pathStop() elseif (progress >= 10 or failed >= 11) then - player:startEvent(250); -- happy with lucky egg + player:startEvent(250) -- happy with lucky egg + npc:pathStop() end else - player:startEvent(206); - npc:wait(); + player:startEvent(206) + npc:pathStop() end -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 241) then -- correct trade, finished quest and receive opo opo crown and 3 pamamas - local FreeSlots = player:getFreeSlotsCount(); + local FreeSlots = player:getFreeSlotsCount() if (FreeSlots >= 4) then - player:tradeComplete(); - player:addFame(KAZHAM, 75); - player:completeQuest(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - player:addItem(13870); -- opo opo crown - player:messageSpecial(ID.text.ITEM_OBTAINED,13870); - player:addItem(4468,3); -- 3 pamamas - player:messageSpecial(ID.text.ITEM_OBTAINED,4468,3); - player:setCharVar("OPO_OPO_PROGRESS",0); - player:setCharVar("OPO_OPO_FAILED", 0); - player:setCharVar("OPO_OPO_RETRY", 0); - player:setTitle(tpz.title.KING_OF_THE_OPOOPOS); + player:tradeComplete() + player:addFame(KAZHAM, 75) + player:completeQuest(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + player:addItem(13870) -- opo opo crown + player:messageSpecial(ID.text.ITEM_OBTAINED,13870) + player:addItem(4468,3) -- 3 pamamas + player:messageSpecial(ID.text.ITEM_OBTAINED,4468,3) + player:setCharVar("OPO_OPO_PROGRESS",0) + player:setCharVar("OPO_OPO_FAILED", 0) + player:setCharVar("OPO_OPO_RETRY", 0) + player:setTitle(tpz.title.KING_OF_THE_OPOOPOS) else - player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED); + player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED) end elseif (csid == 238) then -- wrong trade, restart at first opo - player:setCharVar("OPO_OPO_FAILED",1); - player:setCharVar("OPO_OPO_RETRY",10); - else - npc:wait(0); + player:setCharVar("OPO_OPO_FAILED",1) + player:setCharVar("OPO_OPO_RETRY",10) end -end; + + npc:pathResume() +end diff --git a/scripts/zones/Kazham/npcs/Roropp.lua b/scripts/zones/Kazham/npcs/Roropp.lua index 76222998897..133cd8ff230 100644 --- a/scripts/zones/Kazham/npcs/Roropp.lua +++ b/scripts/zones/Kazham/npcs/Roropp.lua @@ -1,161 +1,152 @@ ----------------------------------- -- Area: Kazham --- NPC: Roropp +-- NPC: Roropp -- Standard Info NPC ----------------------------------- require("scripts/globals/pathfind"); local path = { - 16.031977, -8.000000, -106.132980, - 16.257568, -8.000000, -105.056381, - 16.488544, -8.000000, -103.993233, - 16.736769, -8.000000, -102.925789, - 16.683693, -8.000000, -103.979767, - 16.548674, -8.000000, -105.063362, - 16.395681, -8.000000, -106.140511, - 16.232897, -8.000000, -107.264717, - 15.467215, -8.000000, -111.498398, - 14.589552, -8.000000, -110.994324, - 15.159187, -8.000000, -111.843941, - 14.467873, -8.000000, -110.962730, - 15.174071, -8.000000, -111.862633, - 14.541949, -8.000000, -111.057007, - 14.902087, -8.000000, -110.084839, - 16.047390, -8.000000, -109.979256, - 15.778022, -8.000000, -111.043304, - 14.890110, -8.000000, -111.671753, - 14.021555, -8.000000, -112.251015, - 14.686207, -8.000000, -111.499725, - 14.093862, -8.000000, -110.499420, - 13.680259, -8.000000, -109.391823, - 13.557489, -8.000000, -108.379669, - 13.505498, -8.000000, -107.381012, - 13.459559, -8.000000, -106.253922, - 13.316416, -8.000000, -103.526192, - 13.187886, -8.000000, -104.739197, - 13.107801, -8.000000, -105.800117, - 12.796517, -8.000000, -112.526253, - 13.832601, -8.000000, -112.296143, - 14.750398, -8.000000, -111.783379, - 15.670343, -8.000000, -111.165863, - 16.603874, -8.000000, -110.633209, - 16.092684, -8.000000, -111.518547, - 14.989306, -8.000000, -111.488846, - 14.200422, -8.000000, -110.700859, - 13.893030, -8.000000, -109.573753, - 14.125311, -8.000000, -108.444000, - 14.459513, -8.000000, -107.450630, - 14.801712, -8.000000, -106.489639, - 17.003086, -8.000000, -99.881256, - 16.131863, -8.000000, -100.382454, - 15.278582, -8.000000, -101.082420, - 14.444073, -8.000000, -101.823395, - 13.716499, -8.000000, -102.551468, - 13.602413, -8.000000, -103.671387, - 13.773719, -8.000000, -104.753410, - 14.019071, -8.000000, -105.842079, - 14.275101, -8.000000, -106.944748, - 15.256051, -8.000000, -111.604820, - 14.447664, -8.000000, -110.851128, - 15.032362, -8.000000, -111.679832, - 14.342421, -8.000000, -110.802597, - 13.347830, -8.000000, -111.075569, - 12.911378, -8.000000, -112.149437, - 13.853123, -8.000000, -112.719269, - 14.862821, -8.000000, -112.491272, - 14.661202, -8.000000, -111.423317, - 14.026034, -8.000000, -110.421486, - 13.683197, -8.000000, -109.474442, - 13.565609, -8.000000, -108.425598, - 13.508922, -8.000000, -107.411247, - 13.463074, -8.000000, -106.340248, - 13.314778, -8.000000, -103.679779, - 13.196125, -8.000000, -104.712784, - 13.107168, -8.000000, -105.817261, - 12.642462, -8.000000, -112.284569, - 12.722448, -8.000000, -111.167519, - 12.800394, -8.000000, -110.082321, - 13.358773, -8.000000, -103.535522, - 13.700077, -8.000000, -104.534401, - 13.968060, -8.000000, -105.588699, - 14.196942, -8.000000, -106.594994, - 14.446990, -8.000000, -107.686691, - 14.850841, -8.000000, -109.436707, - 15.239276, -8.000000, -111.548279, - 14.406080, -8.000000, -110.805321, - 15.076430, -8.000000, -111.739746, - 14.353576, -8.000000, -110.817177, - 13.903994, -8.000000, -109.854828, - 14.002557, -8.000000, -108.838097, - 14.350549, -8.000000, -107.686317, - 14.707720, -8.000000, -106.730751, - 15.101375, -8.000000, -105.648056, - 16.961918, -8.000000, -99.919090, - 15.985752, -8.000000, -100.501892, - 15.192271, -8.000000, -101.161407, - 14.369474, -8.000000, -101.891479, - 13.749530, -8.000000, -102.797821, - 13.968772, -8.000000, -103.829323, - 14.469959, -8.000000, -104.888268, - 14.964800, -8.000000, -105.802879, - 16.955986, -8.000000, -109.414169, - 16.776617, -8.000000, -110.478836, - 16.263479, -8.000000, -111.339577, - 15.200941, -8.000000, -111.526329, - 14.352178, -8.000000, -110.754326, - 15.190737, -8.000000, -110.001801, - 16.302240, -8.000000, -110.005722, - 15.815475, -8.000000, -111.014900, - 14.911292, -8.000000, -111.661888, - 14.005045, -8.000000, -112.263855, - 14.883535, -8.000000, -111.781982, - 14.404255, -8.000000, -110.876640, - 15.071056, -8.000000, -111.731522, - 14.335340, -8.000000, -110.793587, - 13.342915, -8.000000, -111.184967, - 12.869198, -8.000000, -112.210732, - 13.971279, -8.000000, -112.223083, - 14.902745, -8.000000, -111.661880, - 15.813969, -8.000000, -111.060051, - 16.728361, -8.000000, -110.402679, - 16.754343, -8.000000, -109.357780, - 16.393435, -8.000000, -108.410202, - 15.880263, -8.000000, -107.455299, - 15.362660, -8.000000, -106.521095, - 13.593607, -8.000000, -103.312202, - 14.028812, -8.000000, -102.335686, - 14.836555, -8.000000, -101.487602, - 15.656289, -8.000000, -100.748199, - 16.544455, -8.000000, -99.965248, - 15.712431, -8.000000, -100.702980, - 14.859239, -8.000000, -101.459091, - 13.961225, -8.000000, -102.255051, - 14.754376, -8.000000, -101.551842, - 15.574628, -8.000000, -100.824944, - 16.913191, -8.000000, -99.639374, - 16.158613, -8.000000, -100.307716, - 15.371163, -8.000000, -101.005310, - 13.802610, -8.000000, -102.395645, - 13.852294, -8.000000, -103.601982, - 14.296268, -8.000000, -104.610878, - 14.826925, -8.000000, -105.560638, - 15.320851, -8.000000, -106.448463, - 15.858366, -8.000000, -107.421883, - 17.018456, -8.000000, -109.527451, - 16.734596, -8.000000, -110.580498, - 16.095715, -8.000000, -111.542282 -}; + {16.031977, -8.000000, -106.132980, 0, 0}, + {16.257568, -8.000000, -105.056381, 0, 0}, + {16.488544, -8.000000, -103.993233, 0, 0}, + {16.736769, -8.000000, -102.925789, 0, 0}, + {16.683693, -8.000000, -103.979767, 0, 0}, + {16.548674, -8.000000, -105.063362, 0, 0}, + {16.395681, -8.000000, -106.140511, 0, 0}, + {16.232897, -8.000000, -107.264717, 0, 0}, + {15.467215, -8.000000, -111.498398, 0, 0}, + {14.589552, -8.000000, -110.994324, 0, 0}, + {15.159187, -8.000000, -111.843941, 0, 0}, + {14.467873, -8.000000, -110.962730, 0, 0}, + {15.174071, -8.000000, -111.862633, 0, 0}, + {14.541949, -8.000000, -111.057007, 0, 0}, + {14.902087, -8.000000, -110.084839, 0, 0}, + {16.047390, -8.000000, -109.979256, 0, 0}, + {15.778022, -8.000000, -111.043304, 0, 0}, + {14.890110, -8.000000, -111.671753, 0, 0}, + {14.021555, -8.000000, -112.251015, 0, 0}, + {14.686207, -8.000000, -111.499725, 0, 0}, + {14.093862, -8.000000, -110.499420, 0, 0}, + {13.680259, -8.000000, -109.391823, 0, 0}, + {13.557489, -8.000000, -108.379669, 0, 0}, + {13.505498, -8.000000, -107.381012, 0, 0}, + {13.459559, -8.000000, -106.253922, 0, 0}, + {13.316416, -8.000000, -103.526192, 0, 0}, + {13.187886, -8.000000, -104.739197, 0, 0}, + {13.107801, -8.000000, -105.800117, 0, 0}, + {12.796517, -8.000000, -112.526253, 0, 0}, + {13.832601, -8.000000, -112.296143, 0, 0}, + {14.750398, -8.000000, -111.783379, 0, 0}, + {15.670343, -8.000000, -111.165863, 0, 0}, + {16.603874, -8.000000, -110.633209, 0, 0}, + {16.092684, -8.000000, -111.518547, 0, 0}, + {14.989306, -8.000000, -111.488846, 0, 0}, + {14.200422, -8.000000, -110.700859, 0, 0}, + {13.893030, -8.000000, -109.573753, 0, 0}, + {14.125311, -8.000000, -108.444000, 0, 0}, + {14.459513, -8.000000, -107.450630, 0, 0}, + {14.801712, -8.000000, -106.489639, 0, 0}, + {15.278582, -8.000000, -101.082420, 0, 0}, + {14.444073, -8.000000, -101.823395, 0, 0}, + {13.716499, -8.000000, -102.551468, 0, 0}, + {13.602413, -8.000000, -103.671387, 0, 0}, + {13.773719, -8.000000, -104.753410, 0, 0}, + {14.019071, -8.000000, -105.842079, 0, 0}, + {14.275101, -8.000000, -106.944748, 0, 0}, + {15.256051, -8.000000, -111.604820, 0, 0}, + {14.447664, -8.000000, -110.851128, 0, 0}, + {15.032362, -8.000000, -111.679832, 0, 0}, + {14.342421, -8.000000, -110.802597, 0, 0}, + {13.347830, -8.000000, -111.075569, 0, 0}, + {12.911378, -8.000000, -112.149437, 0, 0}, + {13.853123, -8.000000, -112.719269, 0, 0}, + {14.862821, -8.000000, -112.491272, 0, 0}, + {14.661202, -8.000000, -111.423317, 0, 0}, + {14.026034, -8.000000, -110.421486, 0, 0}, + {13.683197, -8.000000, -109.474442, 0, 0}, + {13.565609, -8.000000, -108.425598, 0, 0}, + {13.508922, -8.000000, -107.411247, 0, 0}, + {13.463074, -8.000000, -106.340248, 0, 0}, + {13.314778, -8.000000, -103.679779, 0, 0}, + {13.196125, -8.000000, -104.712784, 0, 0}, + {13.107168, -8.000000, -105.817261, 0, 0}, + {12.642462, -8.000000, -112.284569, 0, 0}, + {12.722448, -8.000000, -111.167519, 0, 0}, + {12.800394, -8.000000, -110.082321, 0, 0}, + {13.358773, -8.000000, -103.535522, 0, 0}, + {13.700077, -8.000000, -104.534401, 0, 0}, + {13.968060, -8.000000, -105.588699, 0, 0}, + {14.196942, -8.000000, -106.594994, 0, 0}, + {14.446990, -8.000000, -107.686691, 0, 0}, + {14.850841, -8.000000, -109.436707, 0, 0}, + {15.239276, -8.000000, -111.548279, 0, 0}, + {14.406080, -8.000000, -110.805321, 0, 0}, + {15.076430, -8.000000, -111.739746, 0, 0}, + {14.353576, -8.000000, -110.817177, 0, 0}, + {13.903994, -8.000000, -109.854828, 0, 0}, + {14.002557, -8.000000, -108.838097, 0, 0}, + {14.350549, -8.000000, -107.686317, 0, 0}, + {14.707720, -8.000000, -106.730751, 0, 0}, + {15.101375, -8.000000, -105.648056, 0, 0}, + {15.192271, -8.000000, -101.161407, 0, 0}, + {14.369474, -8.000000, -101.891479, 0, 0}, + {13.749530, -8.000000, -102.797821, 0, 0}, + {13.968772, -8.000000, -103.829323, 0, 0}, + {14.469959, -8.000000, -104.888268, 0, 0}, + {14.964800, -8.000000, -105.802879, 0, 0}, + {16.955986, -8.000000, -109.414169, 0, 0}, + {16.776617, -8.000000, -110.478836, 0, 0}, + {16.263479, -8.000000, -111.339577, 0, 0}, + {15.200941, -8.000000, -111.526329, 0, 0}, + {14.352178, -8.000000, -110.754326, 0, 0}, + {15.190737, -8.000000, -110.001801, 0, 0}, + {16.302240, -8.000000, -110.005722, 0, 0}, + {15.815475, -8.000000, -111.014900, 0, 0}, + {14.911292, -8.000000, -111.661888, 0, 0}, + {14.005045, -8.000000, -112.263855, 0, 0}, + {14.883535, -8.000000, -111.781982, 0, 0}, + {14.404255, -8.000000, -110.876640, 0, 0}, + {15.071056, -8.000000, -111.731522, 0, 0}, + {14.335340, -8.000000, -110.793587, 0, 0}, + {13.342915, -8.000000, -111.184967, 0, 0}, + {12.869198, -8.000000, -112.210732, 0, 0}, + {13.971279, -8.000000, -112.223083, 0, 0}, + {14.902745, -8.000000, -111.661880, 0, 0}, + {15.813969, -8.000000, -111.060051, 0, 0}, + {16.728361, -8.000000, -110.402679, 0, 0}, + {16.754343, -8.000000, -109.357780, 0, 0}, + {16.393435, -8.000000, -108.410202, 0, 0}, + {15.880263, -8.000000, -107.455299, 0, 0}, + {15.362660, -8.000000, -106.521095, 0, 0}, + {13.593607, -8.000000, -103.312202, 0, 0}, + {14.028812, -8.000000, -102.335686, 0, 0}, + {14.836555, -8.000000, -101.487602, 0, 0}, + {15.656289, -8.000000, -100.748199, 0, 0}, + {14.859239, -8.000000, -101.459091, 0, 0}, + {13.961225, -8.000000, -102.255051, 0, 0}, + {14.754376, -8.000000, -101.551842, 0, 0}, + {15.574628, -8.000000, -100.824944, 0, 0}, + {15.371163, -8.000000, -101.005310, 0, 0}, + {13.802610, -8.000000, -102.395645, 0, 0}, + {13.852294, -8.000000, -103.601982, 0, 0}, + {14.296268, -8.000000, -104.610878, 0, 0}, + {14.826925, -8.000000, -105.560638, 0, 0}, + {15.320851, -8.000000, -106.448463, 0, 0}, + {15.858366, -8.000000, -107.421883, 0, 0}, + {17.018456, -8.000000, -109.527451, 0, 0}, + {16.734596, -8.000000, -110.580498, 0, 0}, + {16.095715, -8.000000, -111.542282, 0, 0} +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.randomPoint(npc, path, 0) +end function onTrade(player,npc,trade) @@ -170,61 +161,65 @@ function onTrade(player,npc,trade) -- 905 Wyvern Skull -- 1147 Ancient Salt -- 4600 Lucky Egg - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local goodtrade = trade:hasItemQty(1157,1); - local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local goodtrade = trade:hasItemQty(1157,1) + local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(4599,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)) if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if progress == 3 or failed == 4 then if goodtrade then - player:startEvent(222); + player:startEvent(222) + npc:pathStop() elseif badtrade then - player:startEvent(232); + player:startEvent(232) + npc:pathStop() end end end -end; +end function onTrigger(player,npc) - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local retry = player:getCharVar("OPO_OPO_RETRY"); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local retry = player:getCharVar("OPO_OPO_RETRY") if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if retry >= 1 then -- has failed on future npc so disregard previous successful trade - player:startEvent(200); - npc:wait(); + player:startEvent(200) + npc:pathStop() elseif (progress == 3 or failed == 4) then - player:startEvent(210); -- asking for sands of silence + player:startEvent(210) -- asking for sands of silence + npc:pathStop() elseif (progress >= 4 or failed >= 5) then - player:startEvent(245); -- happy with sands of silence + player:startEvent(245) -- happy with sands of silence + npc:pathStop() end else - player:startEvent(200); - npc:wait(); + player:startEvent(200) + npc:pathStop() end -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 222) then -- correct trade, onto next opo if player:getCharVar("OPO_OPO_PROGRESS") == 3 then - player:tradeComplete(); - player:setCharVar("OPO_OPO_PROGRESS",4); - player:setCharVar("OPO_OPO_FAILED",0); + player:tradeComplete() + player:setCharVar("OPO_OPO_PROGRESS",4) + player:setCharVar("OPO_OPO_FAILED",0) else - player:setCharVar("OPO_OPO_FAILED",5); + player:setCharVar("OPO_OPO_FAILED",5) end elseif (csid == 232) then -- wrong trade, restart at first opo - player:setCharVar("OPO_OPO_FAILED",1); - player:setCharVar("OPO_OPO_RETRY",4); - else - npc:wait(0); + player:setCharVar("OPO_OPO_FAILED",1) + player:setCharVar("OPO_OPO_RETRY",4) end -end; + + npc:pathResume() +end diff --git a/scripts/zones/Kazham/npcs/Tatapp.lua b/scripts/zones/Kazham/npcs/Tatapp.lua index e9b44c7acf1..c366637c646 100644 --- a/scripts/zones/Kazham/npcs/Tatapp.lua +++ b/scripts/zones/Kazham/npcs/Tatapp.lua @@ -1,249 +1,49 @@ ----------------------------------- -- Area: Kazham --- NPC: Tatapp +-- NPC: Tatapp -- Standard Merchant NPC ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") local path = { - 15.005042, -8.000000, -104.349953, - 14.694142, -8.000000, -103.382622, - 14.346356, -8.000000, -102.330627, - 14.005146, -8.000000, -101.348183, - 13.907293, -8.000000, -102.474396, - 14.114091, -8.000000, -103.460907, - 14.343062, -8.000000, -104.536835, - 16.370546, -8.000000, -114.304893, - 16.544558, -8.000000, -115.297646, - 16.652084, -8.000000, -116.295631, - 16.694906, -8.000000, -117.434761, - 16.700508, -8.000000, -118.538452, - 16.685726, -8.362834, -119.635414, - 16.455936, -10.261567, -127.570595, - 16.371193, -9.956211, -128.653427, - 16.192312, -9.927615, -129.725876, - 15.949818, -9.899237, -130.790192, - 15.680015, -9.930383, -131.843597, - 15.395848, -10.029854, -132.888367, - 14.880146, -10.260068, -134.708633, - 13.940835, -10.664452, -137.954254, - 13.683217, -10.835240, -139.065842, - 13.595861, -11.003948, -140.093765, - 13.651946, -10.705299, -141.201477, - 13.773430, -10.458088, -142.220947, - 14.041121, -10.295064, -143.333069, - 14.663477, -10.000000, -144.295776, - 15.515604, -10.000000, -144.964035, - 16.314928, -10.223488, -145.605728, - 17.261440, -10.345286, -145.936386, - 18.434967, -10.496312, -146.235184, - 19.626635, -10.649672, -146.574966, - 20.636623, -10.779653, -146.885742, - 21.810431, -10.930738, -147.245026, - 41.037498, -11.000000, -152.868652, - 42.064869, -11.000000, -153.066666, - 43.181644, -11.000000, -153.059830, - 44.193981, -11.000000, -152.844086, - 45.204891, -11.000000, -152.476288, - 46.130001, -11.000000, -152.076340, - 47.101921, -11.000000, -151.605576, - 48.074062, -11.000000, -151.108200, - 49.085625, -11.000000, -150.573853, - 55.112835, -11.000000, -147.289734, - 56.009495, -11.000000, -146.733871, - 56.723618, -11.000000, -146.025116, - 57.321293, -11.000000, -145.142792, - 57.783585, -11.250000, -144.098206, - 58.165600, -11.250000, -143.024185, - 58.480083, -11.250000, -141.965988, - 58.835060, -11.250000, -140.942154, - 59.320435, -11.250000, -139.902725, - 59.870998, -11.250000, -138.959778, - 60.482498, -11.250000, -138.040649, - 61.132069, -11.250000, -137.153336, - 61.798748, -11.250000, -136.296631, - 62.513489, -11.253850, -135.406036, - 64.148376, -12.006388, -133.421356, - 64.926682, -12.153858, -132.702820, - 65.840607, -12.510786, -132.062790, - 66.760040, -12.850430, -131.556686, - 67.768539, -13.011412, -131.048050, - 68.677528, -13.136667, -130.481155, - 69.450928, -13.120115, -129.589920, - 69.925560, -13.070724, -128.676956, - 70.264328, -13.240794, -127.551498, - 70.502907, -13.378080, -126.483635, - 70.705933, -13.531213, -125.293793, - 70.882706, -13.690935, -124.047539, - 71.007774, -13.819379, -123.054787, - 71.813164, -14.000000, -115.726456, - 71.988968, -14.000000, -114.665138, - 72.230286, -14.000000, -113.546974, - 72.525734, -14.000000, -112.400444, - 72.942375, -14.000000, -110.917877, - 74.564720, -14.000000, -105.528885, - 75.467377, -14.000000, -102.580017, - 75.725372, -14.000000, -101.585197, - 75.908707, -14.000000, -100.514595, - 75.981133, -14.064396, -99.500229, - 75.993034, -13.697124, -98.463615, - 75.958984, -13.337876, -97.450668, - 75.439690, -13.000000, -96.557312, - 74.492599, -13.000000, -96.034950, - 73.435051, -13.000000, -95.784882, - 72.353867, -13.000000, -95.664864, - 71.268593, -13.000000, -95.589096, - 70.181816, -13.000000, -95.537849, - 68.965187, -13.000000, -95.492210, - 60.461643, -13.250000, -95.250732, - 59.414639, -12.953995, -95.134903, - 58.399261, -12.920672, -94.753174, - 57.527779, -12.879326, -94.108803, - 56.795231, -12.798801, -93.310188, - 56.127377, -12.812515, -92.454437, - 55.491707, -12.990035, -91.585983, - 54.795376, -13.249212, -90.797066, - 54.252510, -12.983392, -89.899582, - 54.132359, -12.779223, -88.818153, - 54.292336, -12.663321, -87.758110, - 54.607620, -12.449183, -86.740074, - 54.999432, -12.244100, -85.728279, - 55.398830, -12.050034, -84.796448, - 55.820442, -11.853561, -83.867172, - 56.245693, -11.707920, -82.949188, - 58.531525, -11.078259, -78.130013, - 58.908638, -11.050494, -77.106491, - 59.153393, -11.021585, -76.017838, - 59.275970, -11.250000, -75.024338, - 59.367874, -11.250000, -73.940254, - 59.443375, -11.250000, -72.854927, - 59.727821, -11.250000, -68.099014, - 59.515472, -11.131024, -67.009804, - 58.715290, -11.000000, -66.276749, - 57.635883, -11.000000, -65.920776, - 56.549988, -11.000000, -65.748093, - 55.454430, -11.000000, -65.649788, - 54.368942, -11.000000, -65.575890, - 52.775639, -11.000000, -65.483658, - 35.187672, -11.000000, -64.736359, - 34.152725, -11.000000, -64.423264, - 33.359825, -11.000000, -63.605267, - 33.025291, -11.000000, -62.495285, - 32.889660, -11.000000, -61.400379, - 32.882694, -11.000000, -60.344677, - 32.944283, -11.000000, -59.294544, - 34.963348, -11.000000, -32.325993, - 35.024708, -11.000000, -31.239758, - 35.051041, -11.000000, -30.152113, - 35.035801, -11.181029, -27.749542, - 34.564014, -9.388963, -10.956874, - 34.451149, -9.053110, -9.945900, - 34.184814, -8.729055, -8.961948, - 33.568962, -8.434683, -8.141036, - 32.623096, -8.252226, -7.640914, - 31.593727, -8.137144, -7.356905, - 30.534199, -7.809586, -7.204587, - 29.420414, -7.471941, -7.213962, - 28.339115, -7.149956, -7.356305, - 27.256750, -6.833501, -7.566097, - 26.243299, -6.545853, -7.817299, - 25.281912, -6.280404, -8.231814, - 24.409597, -6.016464, -8.768848, - 23.535141, -5.619351, -9.442095, - 22.741117, -5.384661, -10.105258, - 21.927807, -5.245367, -10.821128, - 21.147293, -5.161991, -11.526694, - 15.214082, -4.000000, -17.004297, - 14.419584, -4.000000, -17.636061, - 13.458961, -4.000000, -18.158779, - 12.455530, -4.000000, -18.521858, - 11.330347, -4.250000, -18.780651, - 10.118030, -4.250000, -18.975561, - 8.942653, -4.250000, -19.117884, - 7.923566, -4.250000, -19.218039, - 6.593585, -4.250000, -19.344227, - 5.469834, -4.250000, -19.533274, - 4.261790, -4.250000, -19.896381, - 3.177907, -4.250000, -20.382805, - 2.187856, -4.000000, -20.905220, - 1.298735, -4.000000, -21.413086, - -0.011548, -4.000000, -22.191364, - -5.672250, -4.000000, -25.692520, - -24.440950, -4.000000, -37.443745, - -25.189728, -4.000000, -38.183887, - -25.629408, -4.168334, -39.141701, - -25.873989, -4.250000, -40.238976, - -26.007105, -4.500000, -41.236519, - -26.112728, -4.500000, -42.301708, - -26.201090, -4.750000, -43.444443, - -26.277060, -4.750000, -44.609795, - -26.462490, -5.250000, -47.949528, - -27.021929, -6.750000, -59.005863, - -27.139404, -6.750000, -60.127247, - -27.386074, -6.750000, -61.138996, - -27.748066, -6.641468, -62.113667, - -28.185287, -6.693056, -63.126755, - -28.636660, -6.778347, -64.072296, - -29.371180, -7.060127, -65.535736, - -31.809622, -8.382057, -70.179474, - -33.889652, -9.009554, -74.086304, - -34.283657, -9.000000, -75.072922, - -34.216805, -9.000000, -76.089775, - -33.508991, -9.000000, -76.828690, - -32.570038, -9.000000, -77.407265, - -31.597225, -9.000000, -77.894348, - -29.741163, -9.000000, -78.769386, - -13.837473, -10.000000, -86.055939, - -12.835108, -10.000000, -86.434494, - -11.747759, -10.000000, -86.703239, - -10.752914, -10.201037, -86.867828, - -9.672615, -9.914025, -87.007553, - -8.582029, -9.631344, -87.116394, - -7.441304, -9.332726, -87.219048, - -5.552025, -8.838206, -87.367615, - -4.547285, -8.572382, -87.423958, - -3.346037, -8.261422, -87.471710, - 4.405046, -8.000000, -87.651627, - 5.635734, -8.000000, -87.808228, - 6.702496, -8.000000, -88.253403, - 7.648390, -8.000000, -88.907516, - 8.469624, -8.000000, -89.650696, - 9.230433, -8.000000, -90.433952, - 9.939404, -8.000000, -91.216515, - 10.661294, -8.000000, -92.072548, - 11.280815, -8.000000, -92.960518, - 11.743221, -8.000000, -93.913345, - 12.131981, -8.000000, -94.980522, - 12.424179, -8.000000, -95.957581, - 12.685654, -8.000000, -96.955795, - 12.925197, -8.000000, -97.934807, - 13.195507, -8.000000, -99.116234, - 13.618339, -8.000000, -101.062759, - 16.298618, -8.000000, -113.958519, - 16.479734, -8.000000, -115.108047, - 16.590515, -8.000000, -116.226395, - 16.636118, -8.000000, -117.229286, - 16.654623, -8.000000, -118.265091, - 16.656944, -8.268586, -119.274567, - 16.635212, -8.722824, -121.010933, - 16.467291, -10.342713, -127.198563, - 16.389027, -9.964745, -128.333374, - 16.238678, -9.936684, -129.385773, - 16.029503, -9.910077, -130.383621, - 15.774967, -9.887359, -131.428879, - 15.502593, -9.975748, -132.462845 -}; + {15.000, -8.000, -104.349, 0}, + {16.260, -8.000, -119.000, 0}, + {16.000, -10.350, -127.260, 0}, + {12.118, -10.630, -141.100, 0}, + {15.210, -10.000, -147.000, 0}, + {24.320, -11.250, -147.880, 0}, + {35.100, -11.000, -149.550, 0}, + {43.380, -11.000, -155.180, 0}, + {55.000, -11.000, -151.000, 0}, + {58.500, -11.250, -144.500, 0}, + {59.700, -11.250, -136.570, 0}, + {67.590, -12.800, -132.000, 0}, + {72.000, -13.235, -127.600, 0}, + {72.000, -14.260, -119.600, 0}, + {75.200, -14.000, -103.800, 0}, + {75.850, -14.220, -100.000, 0}, + {74.880, -13.000, -95.500, 0}, + {58.520, -12.956, -95.260, 0}, + {54.000, -12.700, -88.400, 0}, + {59.370, -11.250, -75.500, 0}, + {60.200, -11.250, -67.697, 0}, + {55.000, -11.000, -64.000, 0}, + {35.000, -11.000, -64.000, 0}, + {32.500, -11.300, -67.750, 0}, + {31.735, -10.242, -72.271, 0}, + {31.800, -8.000, -81.500, 0}, + {16.770, -8.000, -92.200, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) @@ -258,61 +58,65 @@ function onTrade(player,npc,trade) -- 905 Wyvern Skull -- 1147 Ancient Salt -- 4600 Lucky Egg - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local goodtrade = trade:hasItemQty(4599,1); - local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local goodtrade = trade:hasItemQty(4599,1) + local badtrade = (trade:hasItemQty(483,1) or trade:hasItemQty(22,1) or trade:hasItemQty(1157,1) or trade:hasItemQty(1158,1) or trade:hasItemQty(904,1) or trade:hasItemQty(1008,1) or trade:hasItemQty(905,1) or trade:hasItemQty(1147,1) or trade:hasItemQty(4600,1)) if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if progress == 6 or failed == 7 then if goodtrade then - player:startEvent(225); + player:startEvent(225) + npc:pathStop() elseif badtrade then - player:startEvent(235); + player:startEvent(235) + npc:pathStop() end end end -end; +end function onTrigger(player,npc) - local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I); - local progress = player:getCharVar("OPO_OPO_PROGRESS"); - local failed = player:getCharVar("OPO_OPO_FAILED"); - local retry = player:getCharVar("OPO_OPO_RETRY"); + local OpoOpoAndIStatus = player:getQuestStatus(OUTLANDS, tpz.quest.id.outlands.THE_OPO_OPO_AND_I) + local progress = player:getCharVar("OPO_OPO_PROGRESS") + local failed = player:getCharVar("OPO_OPO_FAILED") + local retry = player:getCharVar("OPO_OPO_RETRY") if (OpoOpoAndIStatus == QUEST_ACCEPTED) then if retry >= 1 then -- has failed on future npc so disregard previous successful trade - player:startEvent(203); - npc:wait(); + player:startEvent(203) + npc:pathStop() elseif (progress == 6 or failed == 7) then - player:startEvent(212); -- asking for blackened toad + player:startEvent(212) -- asking for blackened toad + npc:pathStop() elseif (progress >= 7 or failed >= 8) then - player:startEvent(248); -- happy with blackened toad + player:startEvent(248) -- happy with blackened toad + npc:pathStop() end else - player:startEvent(203); - npc:wait(); + player:startEvent(203) + npc:pathStop() end -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 225) then -- correct trade, onto next opo if player:getCharVar("OPO_OPO_PROGRESS") == 6 then - player:tradeComplete(); - player:setCharVar("OPO_OPO_PROGRESS",7); - player:setCharVar("OPO_OPO_FAILED",0); + player:tradeComplete() + player:setCharVar("OPO_OPO_PROGRESS",7) + player:setCharVar("OPO_OPO_FAILED",0) else - player:setCharVar("OPO_OPO_FAILED",8); + player:setCharVar("OPO_OPO_FAILED",8) end elseif (csid == 235) then -- wrong trade, restart at first opo - player:setCharVar("OPO_OPO_FAILED",1); - player:setCharVar("OPO_OPO_RETRY",7); - else - npc:wait(0); + player:setCharVar("OPO_OPO_FAILED",1) + player:setCharVar("OPO_OPO_RETRY",7) end -end; + + npc:pathResume() +end diff --git a/scripts/zones/Kazham/npcs/Thali_Mhobrum.lua b/scripts/zones/Kazham/npcs/Thali_Mhobrum.lua index fdd512d42bd..5a559ee2a9c 100644 --- a/scripts/zones/Kazham/npcs/Thali_Mhobrum.lua +++ b/scripts/zones/Kazham/npcs/Thali_Mhobrum.lua @@ -3,47 +3,41 @@ -- NPC: Thali Mhobrum -- Standard Info NPC ----------------------------------- +require("scripts/globals/pathfind") local path = { -55.816410, -11.000000, -43.992680, -54.761787, -11.000000, -44.046181, -51.805824, -11.000000, -44.200321, -52.922001, -11.000000, -44.186420, -51.890709, -11.000000, -44.224312, -47.689358, -11.000000, -44.374969, -52.826096, -11.000000, -44.191029, -47.709465, -11.000000, -44.374393, -52.782181, -11.000000, -44.192482, -47.469643, -11.000000, -44.383091 -}; + {56.000, -11.000, -44.000, 5}, + {52.000, -11.000, -44.000, 0}, + {47.000, -11.000, -44.000, 5}, + {52.000, -11.000, -44.000, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) if (player:getCharVar("BathedInScent") == 1) then - player:startEvent(163); -- scent from Blue Rafflesias - npc:wait(); + player:startEvent(163) -- scent from Blue Rafflesias + npc:pathStop() else - player:startEvent(190); - npc:wait(); + player:startEvent(190) + npc:pathStop() end -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Kazham/npcs/bunny01.lua b/scripts/zones/Kazham/npcs/bunny01.lua new file mode 100644 index 00000000000..8ea4b42f192 --- /dev/null +++ b/scripts/zones/Kazham/npcs/bunny01.lua @@ -0,0 +1,25 @@ +----------------------------------- +-- Area: Kazham +-- NPC: Bunny in the pen +-- Non interactable NPC +----------------------------------- +require("scripts/globals/pathfind") + +local path = +{ + {103.000, -14.000, -100.000, 0, 0}, + {102.000, -14.000, -103.600, 0, 0}, + {101.000, -14.000, -101.000, 0, 0}, + { 97.000, -14.000, -103.500, 0, 0}, + { 97.500, -14.000, -100.000, 0, 0}, + { 95.500, -14.000, -100.000, 0, 0}, +} + +function onSpawn(npc) + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end + +function onPath(npc) + tpz.path.randomPoint(npc, path, 0) +end diff --git a/scripts/zones/Kazham/npcs/bunny02.lua b/scripts/zones/Kazham/npcs/bunny02.lua new file mode 100644 index 00000000000..ab21e610611 --- /dev/null +++ b/scripts/zones/Kazham/npcs/bunny02.lua @@ -0,0 +1,25 @@ +----------------------------------- +-- Area: Kazham +-- NPC: Bunny in the pen +-- Non interactable NPC +----------------------------------- +require("scripts/globals/pathfind") + +local path = +{ + {103.500, -14.000, -99.500, 0, 0}, + {103.800, -14.000, -101.600, 0, 0}, + {101.400, -14.000, -100.000, 0, 0}, + { 99.000, -14.000, -101.700, 0, 0}, + { 97.200, -14.000, -101.800, 0, 0}, + { 95.500, -14.000, -100.000, 0, 0}, +} + +function onSpawn(npc) + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end + +function onPath(npc) + tpz.path.randomPoint(npc, path, 0) +end diff --git a/scripts/zones/Kazham/npcs/bunny03.lua b/scripts/zones/Kazham/npcs/bunny03.lua new file mode 100644 index 00000000000..b3e79213cac --- /dev/null +++ b/scripts/zones/Kazham/npcs/bunny03.lua @@ -0,0 +1,25 @@ +----------------------------------- +-- Area: Kazham +-- NPC: Bunny in the pen +-- Non interactable NPC +----------------------------------- +require("scripts/globals/pathfind") + +local path = +{ + {103.800, -14.000, -99.500, 0, 0}, + {103.400, -14.000, -102.200, 0, 0}, + {101.500, -14.000, -101.000, 0, 0}, + { 98.000, -14.000, -102.500, 0, 0}, + { 97.500, -14.000, -102.000, 0, 0}, + { 95.500, -14.000, -101.000, 0, 0}, +} + +function onSpawn(npc) + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end + +function onPath(npc) + tpz.path.randomPoint(npc, path, 0) +end diff --git a/scripts/zones/Lower_Jeuno/IDs.lua b/scripts/zones/Lower_Jeuno/IDs.lua index 485d5566134..7f9b200e982 100644 --- a/scripts/zones/Lower_Jeuno/IDs.lua +++ b/scripts/zones/Lower_Jeuno/IDs.lua @@ -35,6 +35,7 @@ zones[tpz.zone.LOWER_JEUNO] = RHIMONNE_SHOP_DIALOG = 7135, -- Howdy! Thanks for visiting the Chocobo Shop! GUIDE_STONE = 7137, -- Up: Upper Jeuno (facing San d'Oria) Down: Port Jeuno (facing Windurst) ALDO_DIALOG = 7142, -- Hi. I'm Aldo, head of Tenshodo. We deal in things you can't buy anywhere else. Take your time and have a look around. + VHANA_TEXT = 7240, -- Ahh, there's nothing like city streets lit up at night. LAMP_MSG_OFFSET = 7246, -- All the lamps are lit. ZAUKO_IS_RECRUITING = 7254, -- Zauko is recruiting an adventurer to light the lamps. CHOCOBO_DIALOG = 7316, -- Hmph. diff --git a/scripts/zones/Lower_Jeuno/Zone.lua b/scripts/zones/Lower_Jeuno/Zone.lua index 9dacfcf50c8..e66708e987e 100644 --- a/scripts/zones/Lower_Jeuno/Zone.lua +++ b/scripts/zones/Lower_Jeuno/Zone.lua @@ -97,13 +97,13 @@ function onGameHour(zone) elseif VanadielHour == 1 then if playerOnQuestId == 0 then local npc = GetNPCByID(ID.npc.VHANA_EHGAKLYWHA) - npc:clearPath() - npc:setStatus(0) - npc:initNpcAi() - npc:setPos(tpz.path.first(LOWER_JEUNO.lampPath)) - npc:pathThrough(tpz.path.fromStart(LOWER_JEUNO.lampPath), bit.bor(tpz.path.flag.RUN, tpz.path.flag.WALLHACK)) + npc:setStatus(tpz.status.NORMAL) + npc:initNpcPathing() + npc:setPos(LOWER_JEUNO.lampPath[1][1], LOWER_JEUNO.lampPath[1][2], LOWER_JEUNO.lampPath[1][3]) + npc:setPathPoint(1) + npc:pathResume() + tpz.path.advancedPath(npc, LOWER_JEUNO.lampPath, false) end - end end diff --git a/scripts/zones/Lower_Jeuno/globals.lua b/scripts/zones/Lower_Jeuno/globals.lua index 3461a54ec1d..7cbc25006bc 100644 --- a/scripts/zones/Lower_Jeuno/globals.lua +++ b/scripts/zones/Lower_Jeuno/globals.lua @@ -69,61 +69,52 @@ LOWER_JEUNO = { ..............................................................................................]] lampPath = { - 0,0,19, - -2,0,13, - -5,0,13, - -7,0,12, - -9,0,12, -- lamp 12 path 5 - -10,0,11, - -18,0,15, - -25,0,3, - -19,0,-1, - -17,0,-2, - -18,0,-5, - -19,0,-4, -- lamp 11 path 12 - -19,0,-8, - -30,0,-27, - -32,0,-29, - -33,0,-29, - -33,0,-29, -- lamp 10 path 17 - -32,0,-39, - -35,0,-43, - -45,0,-47, -- lamp 9 path 20 - -53,0,-61, -- lamp 8 path 21 - -42,0,-49, - -41,0,-49, - -40,0,-49, - -40,0,-49, - -40,0,-50, - -46,6,-63, - -50,6,-70, - -58,6,-75, - -61,6,-75, -- lamp 7 path 30 - -61,6,-83, - -66,6,-93, - -73,6,-96, -- lamp 6 path 33 - -75,6,-112, - -77,6,-116, - -83,1,-125, - -84,0,-127, - -86,0,-126, - -81,0,-111, -- lamp 5 path 39 - -89,0,-123, -- lamp 4 path 40 - -88,0,-134, - -88,0,-135, - -93,0,-143, - -100,0,-144, -- lamp 3 path 44 - -109,0,-158, -- lamp 2 path 45 - -117,0,-172, -- lamp 1 path 46 - -115,0,-182, - -122,0,-196, -- clear path 48 - -123,0,-196 -- end path 49 + { 1.531, 0.000, 34.090, 0, 0, 0}, -- start + { 6.080, 0.000, 31.542, 0, 0, 0}, + { 6.470, 0.000, 25.144, 0, 0, 0}, + { -4.600, 0.000, 15.493, 0, 0, 0}, + { -8.833, 0.000, 13.122, 0, 4, ID.npc.STREETLAMP_OFFSET +11}, -- lamp 1 + { -10.526, 0.000, 2.396, 0, 0, 0}, + { -18.941, 0.000, -4.309, 0, 4, ID.npc.STREETLAMP_OFFSET +10}, -- lamp 2 + { -19.931, 0.000, -8.269, 0, 0, 0}, + { -30.713, 0.000, -27.756, 0, 0, 0}, + { -32.974, 0.000, -28.554, 0, 4, ID.npc.STREETLAMP_OFFSET +9}, -- lamp 3 + { -32.252, 0.000, -38.309, 0, 0, 0}, + { -36.578, 0.000, -45.455, 0, 0, 0}, + { -45.047, 0.000, -47.151, 0, 4, ID.npc.STREETLAMP_OFFSET +8}, -- lamp 4 + { -45.731, 0.000, -52.497, 0, 0, 0}, + { -52.494, 0.000, -60.238, 0, 4, ID.npc.STREETLAMP_OFFSET +7}, -- lamp 5 + { -41.209, 0.000, -47.596, 0, 0, 0}, + { -37.514, 0.000, -51.935, 0, 0, 0}, + { -43.825, 6.000, -62.458, 0, 0, 0}, + { -55.446, 6.000, -75.588, 0, 0, 0}, + { -60.904, 6.000, -74.785, 0, 4, ID.npc.STREETLAMP_OFFSET + 6}, -- lamp 6 + { -61.146, 6.000, -83.961, 0, 0, 0}, + { -67.435, 6.000, -94.883, 0, 0, 0}, + { -73.020, 6.000, -95.701, 0, 4, ID.npc.STREETLAMP_OFFSET + 5}, -- lamp 7 + { -75.648, 6.000, -112.960, 0, 0, 0}, + { -76.083, 6.000, -116.388, 0, 0, 0}, + { -78.459, 3.750, -120.090, 0, 0, 0}, + { -83.408, 0.000, -126.294, 0, 0, 0}, + { -86.027, 0.000, -126.946, 0, 0, 0}, + { -81.627, 0.000, -110.110, 0, 4, ID.npc.STREETLAMP_OFFSET + 4}, -- lamp 8 + { -86.615, 0.000, -118.916, 0, 0, 0}, + { -89.185, 0.000, -123.232, 0, 4, ID.npc.STREETLAMP_OFFSET + 3}, -- lamp 9 + { -88.330, 0.000, -135.539, 0, 0, 0}, + { -94.206, 0.000, -145.839, 0, 0, 0}, + {-101.215, 0.000, -144.035, 0, 4, ID.npc.STREETLAMP_OFFSET + 2}, -- lamp 10 + {-109.137, 0.000, -158.031, 0, 4, ID.npc.STREETLAMP_OFFSET + 1}, -- lamp 11 + {-117.165, 0.000, -171.811, 0, 4, ID.npc.STREETLAMP_OFFSET}, -- lamp 12 + {-114.751, 0.000, -182.867, 0, 0, 0}, + {-119.651, 0.000, -191.165, 0, 0, 0}, + {-120.659, 0.000, -199.247, 0, 0, 0}, + {-200.000, 0.000, -250.000, 0, 0, 0}, -- end }, --[[.............................................................................................. indices within lampPath that contain lamps ..............................................................................................]] - lampPoints = {5, 12, 17, 20, 21, 30, 33, 39, 40, 44, 45, 46} + lampPoints = {6, 8, 11, 14, 16, 21, 24, 30, 32, 35, 36, 37} } return LOWER_JEUNO; diff --git a/scripts/zones/Lower_Jeuno/npcs/Navisse.lua b/scripts/zones/Lower_Jeuno/npcs/Navisse.lua index c3d5e2a4b2d..0722b3d193f 100644 --- a/scripts/zones/Lower_Jeuno/npcs/Navisse.lua +++ b/scripts/zones/Lower_Jeuno/npcs/Navisse.lua @@ -3,138 +3,41 @@ -- NPC: Navisse -- Standard Info NPC ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") ----------------------------------- local path = { --- -59.562683, 6.000051, -90.890404, --58.791367, 6.000050, -91.663391, --58.021465, 6.000049, -92.432144, --58.729881, 6.000051, -91.577568, --60.351879, 6.000053, -89.835815, --61.099354, 6.000054, -89.034248, --61.841427, 5.999946, -88.238564, --62.769325, 5.999948, -87.244301, --61.750378, 5.999948, -87.684868, --60.796600, 5.999947, -88.208214, --55.475166, 5.999943, -91.271210, --56.590668, 5.999943, -91.245201, --57.651192, 6.000052, -91.002350, --64.134392, 6.000052, -89.460915, --63.261021, 6.000051, -90.107605, --62.330879, 6.000051, -90.679604, --61.395359, 6.000050, -91.235107, --56.591644, 6.000047, -94.066406, --57.208908, 6.000048, -93.245895, --57.934330, 6.000049, -92.435081, --59.788624, 6.000052, -90.439583, --61.832211, 5.999946, -88.248795, --62.574249, 5.999948, -87.453148, --61.832058, 5.999946, -88.248627, --61.089920, 6.000054, -89.044273, --60.348049, 6.000053, -89.840111, --59.043877, 6.000051, -91.238251, --58.301846, 6.000050, -92.033958, --57.467026, 6.000048, -92.929070, --56.536987, 6.000047, -93.926826, --57.528469, 6.000047, -93.482582, --58.476944, 6.000048, -92.949654, --59.416409, 6.000049, -92.400879, --64.235306, 6.000051, -89.563835, --64.000816, 6.000054, -88.482338, --63.516331, 5.999947, -87.539917, --62.444843, 5.999948, -87.352570, --61.468765, 5.999947, -87.831436, --60.520329, 5.999947, -88.364532, --55.100037, 5.999943, -91.488144, --56.063160, 5.999944, -90.932312, --62.719467, 5.999948, -87.093468, --62.064899, 5.999947, -87.960884, --61.338562, 5.999946, -88.770836, --59.579746, 6.000052, -90.663826, --58.177391, 6.000050, -92.167343, --57.435341, 6.000048, -92.963005, --56.734436, 6.000047, -93.714989, --57.492855, 6.000049, -92.901787, --58.251190, 6.000050, -92.088486, --59.364170, 6.000051, -90.894829, --61.039413, 6.000054, -89.098907, --61.784184, 5.999946, -88.300293, --62.804745, 5.999948, -87.206451, --60.463631, 6.000053, -89.715942, --59.721657, 6.000052, -90.511711, --58.974190, 6.000051, -91.313248, --58.232239, 6.000050, -92.109024, --56.840717, 6.000047, -93.600716, --57.914623, 6.000048, -93.276276, --58.855755, 6.000048, -92.730408, --64.140175, 6.000051, -89.619812, --63.025597, 6.000052, -89.751106, --61.954758, 6.000052, -89.984474, --60.887684, 6.000052, -90.234573, --55.190853, 5.999943, -91.590721, --55.368877, 6.000050, -92.667923, --55.841885, 6.000048, -93.664970, --56.916370, 6.000048, -93.400879, --57.705578, 6.000049, -92.652748, --58.456089, 6.000050, -91.865067, --60.405739, 6.000053, -89.778008, --61.147854, 6.000054, -88.982376, --61.889904, 5.999946, -88.186691, --62.637497, 5.999948, -87.385239, --63.643429, 6.000055, -87.880524, --64.248825, 6.000053, -88.784004, --63.455921, 6.000052, -89.526733, --62.418514, 6.000052, -89.852493, --61.363335, 6.000052, -90.117607, --55.142048, 5.999943, -91.602325, --55.358624, 6.000050, -92.679016, --55.842934, 6.000048, -93.675148, --56.919590, 6.000048, -93.408241, --57.710354, 6.000049, -92.649918, --58.459896, 6.000050, -91.861336, --60.409424, 6.000053, -89.774185, --61.151508, 6.000054, -88.978500, --62.848709, 5.999948, -87.159264, --61.829231, 5.999948, -87.629791, --60.951675, 5.999947, -88.117493, --55.395309, 5.999943, -91.317513, --56.522537, 5.999943, -91.263893, --57.586517, 6.000052, -91.018196, --64.081299, 6.000052, -89.473526, --63.209583, 6.000051, -90.135269, --62.270042, 6.000050, -90.714821, --61.334797, 6.000050, -91.270729, --56.586208, 6.000047, -94.069595, --64.130554, 6.000051, -89.625450, --56.496498, 6.000047, -94.122322, --57.173595, 6.000048, -93.271568, --57.904095, 6.000049, -92.465279, --59.571453, 6.000052, -90.672951, -}; + {-53.714, 6.000, -91.500, 25, 0}, + {-63.367, 6.000, -86.700, 150, 0}, + {-58.000, 6.000, -94.770, 0, 0}, + {-53.500, 6.000, -87.632, 0, 0}, + {-61.099, 6.000, -89.034, 0, 0}, + {-61.841, 6.000, -88.238, 0, 0}, + {-60.796, 6.000, -88.208, 0, 0}, + {-56.590, 6.000, -91.245, 0, 0} +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.randomPoint(npc, path, 0) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - player:startEvent(153); - npc:wait(); -end; + player:startEvent(153) + npc:pathStop() +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Lower_Jeuno/npcs/Vhana_Ehgaklywha.lua b/scripts/zones/Lower_Jeuno/npcs/Vhana_Ehgaklywha.lua index bcc3ced7a8d..7b2398dbc2c 100644 --- a/scripts/zones/Lower_Jeuno/npcs/Vhana_Ehgaklywha.lua +++ b/scripts/zones/Lower_Jeuno/npcs/Vhana_Ehgaklywha.lua @@ -4,55 +4,56 @@ -- Lights lamps in Lower Jeuno if nobody accepts Community Service by 1AM. -- !pos -122.853 0.000 -195.605 245 ----------------------------------- -require("scripts/zones/Lower_Jeuno/globals"); -local ID = require("scripts/zones/Lower_Jeuno/IDs"); -require("scripts/globals/pathfind"); -require("scripts/globals/status"); +require("scripts/zones/Lower_Jeuno/globals") +local ID = require("scripts/zones/Lower_Jeuno/IDs") +require("scripts/globals/pathfind") +require("scripts/globals/status") ----------------------------------- +function onSpawn(npc) + if VanadielHour() ~= 1 then + if npc:getStatus() == tpz.status.NORMAL then + npc:setStatus(tpz.status.DISAPPEAR) + end + end + npc:pathStop() +end + function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - -- speaking to pathing NPCs stops their progress, and they never resume - -- so let's comment this out - - -- player:showText(npc, 7160); -end; + player:showText(npc, ID.text.VHANA_TEXT) + npc:clearTargID() +end function onPath(npc) - if (npc:isFollowingPath()) then + local point = npc:getPathPoint() + if npc:getStatus() == tpz.status.NORMAL then -- if vasha reaches the end node, halt and disappear her. - -- do this at node 48 instead of 49 because isFollowingPath will be false by 49. - -- if we remove the isFollowingPath check, this code runs every second forever. - -- once a pathThrough begins, there doesn't seem to be a clean way to stop onPath - -- from being called forever. - - if (npc:atPoint(tpz.path.get(LOWER_JEUNO.lampPath,48))) then - npc:clearPath(); - npc:setStatus(2); - - -- if vasha is at one of the lamp points, turn on that lamp. - -- she reaches the lamps in reverse order of their npcIds, hence (12 - i). - + if point == #LOWER_JEUNO.lampPath then + npc:clearPath() + npc:setStatus(tpz.status.DISAPPEAR) + npc:pathStop() else - for i, v in ipairs(LOWER_JEUNO.lampPoints) do - local lampPos = tpz.path.get(LOWER_JEUNO.lampPath,v); - if (npc:atPoint(lampPos)) then - -- Vhana is at a lamp (she reaches them in reverse order) - local lampId = ID.npc.STREETLAMP_OFFSET + (12 - i); - GetNPCByID(lampId):setAnimation(tpz.anim.OPEN_DOOR); - break; + -- if vasha is at one of the lamp points, turn on that lamp. + -- she reaches the lamps in reverse order of their npcIds, hence (12 - i). + for i = 1, #LOWER_JEUNO.lampPoints do + if LOWER_JEUNO.lampPoints[i] == point then + local lamp = GetNPCByID(ID.npc.STREETLAMP_OFFSET + (12 -i)) + lamp:setAnimation(tpz.anim.OPEN_DOOR) + break end end - end + tpz.path.advancedPath(npc, LOWER_JEUNO.lampPath, false) end -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option) -end; + npc:pathResume() +end diff --git a/scripts/zones/Metalworks/npcs/Fariel.lua b/scripts/zones/Metalworks/npcs/Fariel.lua index 5b9ca65ac3d..84d63eba208 100644 --- a/scripts/zones/Metalworks/npcs/Fariel.lua +++ b/scripts/zones/Metalworks/npcs/Fariel.lua @@ -1,63 +1,39 @@ ----------------------------------- -- Area: Metalworks --- NPC: Fariel +-- NPC: Fariel -- Type: Standard Info NPC ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") ----------------------------------- local path = { -53.551208, -14.000000, -7.162227, -54.111534, -14.000000, -6.227105, -54.075279, -14.000000, -5.139729, -53.565350, -14.000000, 6.000605, -52.636345, -14.000000, 6.521872, -51.561535, -14.000000, 6.710593, -50.436523, -14.000000, 6.835652, -41.754219, -14.000000, 7.686310, -41.409531, -14.000000, 6.635177, -41.351002, -14.000000, 5.549131, -41.341057, -14.000000, 4.461191, -41.338020, -14.000000, -9.138797, -42.356136, -14.000000, -9.449953, -43.442558, -14.000000, -9.409095, -44.524868, -14.000000, -9.298069, -53.718494, -14.000000, -8.260445, -54.082706, -14.000000, -7.257769, -54.110283, -14.000000, -6.170790, -54.073116, -14.000000, -5.083439, -53.556625, -14.000000, 6.192736, -52.545383, -14.000000, 6.570893, -51.441212, -14.000000, 6.730487, -50.430820, -14.000000, 6.836911, -41.680725, -14.000000, 7.693455, -41.396103, -14.000000, 6.599321, -41.349224, -14.000000, 5.512603, -41.340771, -14.000000, 4.424644 -}; + {56.000, -14.000, -13.000, 1}, + {56.000, -14.000, 14.000, 1}, + {37.000, -14.000, 14.000, 1}, + {37.000, -14.000, -13.000, 1} +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - player:startEvent(706); - npc:wait(); -end; + player:startEvent(706) + npc:pathStop() +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Mhaura/npcs/Dieh_Yamilsiah.lua b/scripts/zones/Mhaura/npcs/Dieh_Yamilsiah.lua index d96f2f6aeef..661dd545dd5 100644 --- a/scripts/zones/Mhaura/npcs/Dieh_Yamilsiah.lua +++ b/scripts/zones/Mhaura/npcs/Dieh_Yamilsiah.lua @@ -17,8 +17,9 @@ local messages = } function onSpawn(npc) - npc:initNpcAi() - -- TODO: NPC needs to rotate after finishing walking. + npc:initNpcPathing() + onPath(npc) + npc:addPeriodicTrigger(tpz.transport.trigger.mhaura.FERRY_ARRIVING_FROM_ALZAHBI, tpz.transport.interval.mhaura.FROM_TO_ALZAHBI, tpz.transport.offset.mhaura.FERRY_ARRIVING_FROM_ALZAHBI) @@ -33,37 +34,58 @@ function onSpawn(npc) tpz.transport.offset.mhaura.FERRY_DEPARTING_TO_SELBINA) end +function onPath(npc) + local pos = npc:getPos() + local point = npc:getPathPoint() + + if npc:getLocalVar("[PATHING]DEPARTING") == 1 then + local departPath = tpz.transport.pos['mhaura'].DEPARTING + tpz.path.toPoint(npc, departPath, false) + if point == #departPath then + npc:setPos(pos.x, pos.y, pos.z, 191) + npc:setLocalVar("[PATHING]DEPARTING", 0) + end + elseif npc:getLocalVar("[PATHING]DEPARTING") == 2 then + local arrivePath = tpz.transport.pos['mhaura'].ARRIVING + tpz.path.toPoint(npc, arrivePath, false) + if point == #arrivePath then + npc:setPos(pos.x, pos.y, pos.z, 211) + npc:setLocalVar("[PATHING]DEPARTING", 0) + end + end +end + function onTimeTrigger(npc, triggerID) tpz.transport.dockMessage(npc, triggerID, messages, 'mhaura') end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) -- Each boat comes every 1152 seconds/8 game hours, 4 hour offset between Selbina and Aht Urghan -- Original timer: local timer = 1152 - ((os.time() - 1009810584)%1152); - local timer = 1152 - ((os.time() - 1009810802)%1152); - local destination = 0; -- Selbina, set to 1 for Al Zhabi - local direction = 0; -- Arrive, 1 for depart - local waiting = 216; -- Offset for Selbina + local timer = 1152 - ((os.time() - 1009810802)%1152) + local destination = 0 -- Selbina, set to 1 for Al Zhabi + local direction = 0 -- Arrive, 1 for depart + local waiting = 216 -- Offset for Selbina -- Next ferry is Al Zhabi for higher values. if (timer >= 576) then - destination = 1; - timer = timer - 576; - waiting = 193; + destination = 1 + timer = timer - 576 + waiting = 193 end -- Logic to manipulate cutscene results. if (timer <= waiting) then - direction = 1; -- Ship arrived, switch dialog from "arrive" to "depart" + direction = 1 -- Ship arrived, switch dialog from "arrive" to "depart" else - timer = timer - waiting; -- Ship hasn't arrived, subtract waiting time to get time to arrival + timer = timer - waiting -- Ship hasn't arrived, subtract waiting time to get time to arrival end - player:startEvent(231,timer,direction,0,destination); -- timer arriving/departing ??? destination + player:startEvent(231,timer,direction,0,destination) -- timer arriving/departing ??? destination --[[Other cutscenes: 233 "This ship is headed for Selbina." @@ -72,10 +94,10 @@ function onTrigger(player,npc) Can't find a way to toggle the destination on 233 or 234, so they are not used. Users knowing which ferry is which > using all CSs.]] -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option) -end; +end diff --git a/scripts/zones/Norg/npcs/Deigoff.lua b/scripts/zones/Norg/npcs/Deigoff.lua index dd253677199..88e24106ee3 100644 --- a/scripts/zones/Norg/npcs/Deigoff.lua +++ b/scripts/zones/Norg/npcs/Deigoff.lua @@ -1,6 +1,6 @@ ----------------------------------- -- Area: Norg --- NPC: Deigoff +-- NPC: Deigoff -- Standard Info NPC ----------------------------------- require("scripts/globals/pathfind"); @@ -8,87 +8,32 @@ require("scripts/globals/pathfind"); local path = { - -15.048376, -1.476800, 30.425398, - -15.526757, -1.225124, 29.480957, - -14.723476, -1.423349, 30.104301, - -13.893593, -1.648318, 30.828171, - -12.975020, -1.871566, 31.517338, - -12.044265, -2.053941, 31.966581, - -11.003557, -2.393157, 32.302952, - -9.985520, -2.708733, 32.557224, - -8.916955, -3.017504, 32.716526, - -7.803241, -3.231221, 32.842529, - -6.703550, -3.548066, 32.933296, - -2.621637, -4.728867, 33.234219, - -3.692678, -4.392691, 33.156784, - -4.784571, -4.086610, 33.078362, - -7.672429, -3.273804, 32.870365, - -8.728366, -3.020066, 32.775761, - -9.767247, -2.778361, 32.601532, - -10.786559, -2.469297, 32.379894, - -11.791664, -2.154150, 32.110737, - -12.739241, -1.916063, 31.632357, - -13.613935, -1.713264, 31.018566, - -14.453866, -1.501245, 30.353886, - -15.187916, -1.273126, 29.586229, - -15.810313, -1.031864, 28.727566, - -16.338600, -0.821452, 27.804821, - -16.721289, -0.631609, 26.800562, - -17.015059, -0.430842, 25.772522, - -17.276829, -0.226373, 24.724413, - -17.057823, -0.418425, 25.708294, - -16.776665, -0.621304, 26.739079, - -16.362362, -0.804862, 27.727364, - -15.858993, -1.014936, 28.676291, - -15.207123, -1.261934, 29.550617, - -14.408654, -1.502193, 30.350636, - -13.596487, -1.725003, 31.070555, - -12.709093, -1.926028, 31.662998, - -11.711613, -2.167211, 32.087074, - -10.711581, -2.485834, 32.386322, - -9.675041, -2.801156, 32.616379, - -8.606792, -3.039549, 32.759628, - -7.521237, -3.312841, 32.868916, - -6.463308, -3.617169, 32.952408, - -2.352002, -4.875265, 33.252991, - -3.373222, -4.489793, 33.181557, - -8.309618, -3.099132, 32.823685, - -9.346218, -2.897947, 32.683289, - -10.356988, -2.596533, 32.481487, - -11.362209, -2.289157, 32.248039, - -12.344488, -1.993539, 31.858101, - -13.248831, -1.799422, 31.288286, - -14.096587, -1.592161, 30.646973, - -14.883204, -1.374069, 29.931999, - -15.547549, -1.137073, 29.104630, - -16.128418, -0.943367, 28.213142, - -16.578665, -0.713513, 27.230043, - -16.879889, -0.529637, 26.273342, - -17.146322, -0.330673, 25.258379, - -17.403625, -0.115268, 24.211039 -}; + { 0.875, -4.885, 30.388, 5}, + {-16.000, -1.100, 29.000, 0}, + {-18.721, 0.039, 19.500, 5}, + {-16.000, -1.100, 29.000, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - -- onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - player:startEvent(86); - npc:wait(); -end; + player:startEvent(86) + npc:pathStop() +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Norg/npcs/Keal.lua b/scripts/zones/Norg/npcs/Keal.lua index d22bbd7e68e..9fe012c9951 100644 --- a/scripts/zones/Norg/npcs/Keal.lua +++ b/scripts/zones/Norg/npcs/Keal.lua @@ -3,118 +3,74 @@ -- NPC: Keal -- Starts and Ends Quest: It's Not Your Vault ----------------------------------- -local ID = require("scripts/zones/Norg/IDs"); -require("scripts/globals/settings"); -require("scripts/globals/keyitems"); -require("scripts/globals/quests"); +local ID = require("scripts/zones/Norg/IDs") +require("scripts/globals/pathfind") +require("scripts/globals/settings") +require("scripts/globals/keyitems") +require("scripts/globals/quests") local path = { - -5.453587, 0.151494, -16.361458, - -5.997250, 0.229052, -15.475480, - -6.582538, 0.317294, -14.524694, - -7.573528, 0.365118, -12.941586, - -7.069273, 0.384884, -13.867216, - -6.565747, 0.311785, -14.741985, - -5.676943, 0.173223, -16.241194, - -5.162223, 0.020922, -17.108603, - -4.725273, -0.022554, -18.175083, - -4.882753, -0.041670, -19.252790, - -5.294413, 0.020847, -20.336269, - -5.632565, 0.112649, -21.417961, - -5.905818, 0.202903, -22.541668, - -5.657803, 0.116744, -21.445057, - -5.273734, 0.023316, -20.410303, - -4.831870, -0.049031, -19.478870, - -4.749702, -0.024804, -18.311924, - -5.152854, 0.002354, -17.248878, - -5.639069, 0.185855, -16.335281, - -6.158780, 0.247668, -15.445805, - -7.253261, 0.405026, -13.567613, - -7.803670, 0.348802, -12.626184, - -8.375298, 0.223101, -11.645775, - -8.895057, 0.076541, -10.770375, - -9.384287, 0.015579, -9.884774, - -9.939011, 0.143451, -8.935238, - -9.422630, -0.025280, -9.816562, - -8.589481, 0.151451, -11.248314, - -8.095008, 0.275576, -12.123538, - -7.561854, 0.373715, -13.045633, - -5.644930, 0.185392, -16.292952, - -5.058481, -0.014674, -17.285294, - -4.724863, -0.024709, -18.265087, - -4.923457, -0.042915, -19.378429, - -5.293544, 0.020505, -20.338196, - -5.606711, 0.104830, -21.323364, - -5.849701, 0.183865, -22.302536, - -5.586438, 0.097169, -21.222555, - -5.214560, 0.046522, -20.280220, - -4.779529, -0.048305, -19.351633, - -4.757209, -0.021693, -18.194023, - -5.138152, -0.000450, -17.254173, - -5.685457, 0.173866, -16.248564, - -6.275849, 0.266052, -15.243981, - -7.196375, 0.403362, -13.666089, - -7.766060, 0.352119, -12.689950, - -8.280642, 0.241637, -11.799251, - -8.828505, 0.098458, -10.895535, - -9.351592, 0.039748, -9.948843, - -9.856394, 0.036026, -9.068656 -}; + {-9.856, 0.036, -9.068, 0}, + {-4.500, -0.037, -18.389, 0}, + {-5.913, 0.107, -27.368, 0}, + {-4.500, -0.037, -18.389, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - -- onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - local Vault = player:getQuestStatus(OUTLANDS,tpz.quest.id.outlands.ITS_NOT_YOUR_VAULT); - local mLvl = player:getMainLvl(); - local IronBox = player:hasKeyItem(tpz.ki.SEALED_IRON_BOX); + local Vault = player:getQuestStatus(OUTLANDS,tpz.quest.id.outlands.ITS_NOT_YOUR_VAULT) + local mLvl = player:getMainLvl() + local IronBox = player:hasKeyItem(tpz.ki.SEALED_IRON_BOX) if (Vault == QUEST_AVAILABLE and player:getFameLevel(NORG) >= 3 and mLvl >= 5) then - player:startEvent(36,tpz.ki.SEALED_IRON_BOX); -- Start quest + player:startEvent(36,tpz.ki.SEALED_IRON_BOX) -- Start quest + npc:pathStop() elseif (Vault == QUEST_ACCEPTED) then if (IronBox == true) then - player:startEvent(38); -- Finish quest + player:startEvent(38) -- Finish quest + npc:pathStop() else - player:startEvent(37,tpz.ki.MAP_OF_THE_SEA_SERPENT_GROTTO); -- Reminder/Directions Dialogue + player:startEvent(37,tpz.ki.MAP_OF_THE_SEA_SERPENT_GROTTO) -- Reminder/Directions Dialogue end elseif (Vault == QUEST_COMPLETED) then - player:startEvent(39); -- New Standard Dialogue for everyone who has completed the quest + player:startEvent(39) -- New Standard Dialogue for everyone who has completed the quest + npc:pathStop() else - player:startEvent(89); -- Standard Conversation + player:startEvent(89) -- Standard Conversation + npc:pathStop() end - - npc:wait(); -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 36 and option == 1) then - player:addQuest(OUTLANDS,tpz.quest.id.outlands.ITS_NOT_YOUR_VAULT); + player:addQuest(OUTLANDS,tpz.quest.id.outlands.ITS_NOT_YOUR_VAULT) elseif (csid == 38) then if (player:getFreeSlotsCount() == 0) then - player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED,4961); + player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED,4961) else - player:delKeyItem(tpz.ki.SEALED_IRON_BOX); - player:addItem(4961); -- Scroll of Tonko: Ichi - player:messageSpecial(ID.text.ITEM_OBTAINED, 4961); - player:addFame(NORG,50); - player:completeQuest(OUTLANDS,tpz.quest.id.outlands.ITS_NOT_YOUR_VAULT); + player:delKeyItem(tpz.ki.SEALED_IRON_BOX) + player:addItem(4961) -- Scroll of Tonko: Ichi + player:messageSpecial(ID.text.ITEM_OBTAINED, 4961) + player:addFame(NORG,50) + player:completeQuest(OUTLANDS,tpz.quest.id.outlands.ITS_NOT_YOUR_VAULT) end end - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Norg/npcs/Louartain.lua b/scripts/zones/Norg/npcs/Louartain.lua index 6891e367a22..f83f8b7bf66 100644 --- a/scripts/zones/Norg/npcs/Louartain.lua +++ b/scripts/zones/Norg/npcs/Louartain.lua @@ -3,43 +3,35 @@ -- NPC: Louartain -- Standard Info NPC ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") ----------------------------------- local path = { - 41.878349, -6.282223, 10.820915, - 42.088036, -6.282223, 11.867051, - 42.096603, -6.282223, 12.939011, - 42.104187, -6.282223, 17.270992, - 42.126625, -6.282223, 14.951096, - 42.097260, -6.282223, 10.187170, - 42.104218, -6.282223, 17.303179, - 42.128235, -6.282223, 14.767291, - 42.097534, -6.282223, 10.223410 -}; + {42.200, -6.282223, 7.717, 6}, + {41.570, -6.282223, 18.748, 6}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - -- onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - player:startEvent(84); - npc:wait(); -end; + player:startEvent(84) + npc:pathStop() +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Norg/npcs/Oruga.lua b/scripts/zones/Norg/npcs/Oruga.lua index 6ff36ed127f..5c146b1354d 100644 --- a/scripts/zones/Norg/npcs/Oruga.lua +++ b/scripts/zones/Norg/npcs/Oruga.lua @@ -3,89 +3,43 @@ -- NPC: Oruga -- Standard Info NPC ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") ----------------------------------- local path = { - -0.016294, -1.251156, -30.703135, - 1.135162, -1.295192, -30.737705, - 2.267773, -1.620833, -30.756174, - 3.344393, -1.879029, -30.778761, - 5.049327, -2.361731, -30.823250, - 6.117022, -2.563100, -30.886162, - 7.181621, -2.772666, -30.972755, - 8.245983, -2.954788, -31.051538, - 9.328338, -3.061133, -31.039093, - 10.409624, -3.143949, -30.961086, - 11.492971, -3.171996, -30.865526, - 15.815061, -3.447035, -30.455658, - 16.874792, -3.526491, -30.227465, - 17.896387, -3.708385, -29.895599, - 18.898493, -3.908274, -29.532429, - 19.895685, -4.079228, -29.134384, - 20.737349, -4.216307, -28.413183, - 21.407436, -4.330055, -27.513542, - 22.016415, -4.434795, -26.589983, - 22.619663, -4.506055, -25.649052, - 23.082552, -4.733766, -24.577311, - 23.317366, -4.843967, -23.488529, - 23.503233, -4.784823, -22.336891, - 23.579830, -4.873768, -21.227167, - 23.595615, -4.955327, -20.067602, - 23.604248, -4.673836, -15.539319, - 23.576544, -4.747251, -14.438788, - 23.589468, -4.701037, -15.602610, - 23.583118, -4.819503, -16.757050, - 23.603765, -4.955882, -20.001656, - 23.589598, -4.852837, -21.216965, - 23.512104, -4.780120, -22.266308, - 23.371975, -4.846354, -23.286993, - 23.154896, -4.779443, -24.363916, - 22.713276, -4.551100, -25.401381, - 22.164385, -4.452671, -26.342907, - 21.586670, -4.363403, -27.264763, - 21.003744, -4.252445, -28.176605, - 20.161383, -4.131409, -28.924875, - 19.176140, -3.957754, -29.401279, - 18.169416, -3.773172, -29.799803, - 17.226116, -3.551686, -30.132439, - 16.238331, -3.480612, -30.356184, - 15.180473, -3.392950, -30.503290, - 14.115976, -3.279427, -30.617214, - 9.767619, -3.120346, -31.023869, - 8.737691, -3.001644, -31.048111, - 7.659624, -2.875193, -30.995384, - 6.561257, -2.650589, -30.911077, - 5.400178, -2.428268, -30.843111, - 4.195887, -2.202940, -30.804506, - 1.013752, -1.273776, -30.729916, - -0.022560, -1.251507, -30.706329, - -2.217780, -1.106099, -30.654016, - -1.043870, -1.248653, -30.678118 -}; + {25.750, -4.900, -14.000, 0}, + {25.170, -5.050, -23.775, 0}, + {20.550, -4.115, -29.890, 0}, + {12.000, -3.213, -31.700, 0}, + { 7.950, -2.950, -31.685, 0}, + {-5.050, -0.690, -31.465, 0}, + { 7.950, -2.950, -31.685, 0}, + {12.000, -3.213, -31.700, 0}, + {20.550, -4.115, -29.890, 0}, + {25.170, -5.050, -23.775, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - -- onPath(npc); -end; + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - player:startEvent(87); - npc:wait(); -end; + player:startEvent(87) + npc:pathStop() +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Norg/npcs/Paito-Maito.lua b/scripts/zones/Norg/npcs/Paito-Maito.lua index 0a3cdcdad86..005325a9e4c 100644 --- a/scripts/zones/Norg/npcs/Paito-Maito.lua +++ b/scripts/zones/Norg/npcs/Paito-Maito.lua @@ -3,77 +3,38 @@ -- NPC: Paito-Maito -- Standard Info NPC ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") ----------------------------------- local path = { - -71.189713, -9.413510, 74.024879, - -71.674171, -9.317029, 73.054794, - -72.516525, -9.298064, 72.363213, - -73.432983, -9.220915, 71.773857, - -74.358955, -9.142115, 71.163277, - -75.199585, -9.069098, 70.583145, - -76.184708, -9.006280, 70.261375, - -77.093193, -9.000236, 70.852921, - -77.987053, -9.037421, 71.464264, - -79.008476, -9.123112, 71.825165, - -80.083740, -9.169785, 72.087944, - -79.577698, -9.295252, 73.087708, - -78.816307, -9.365192, 73.861855, - -77.949852, -9.323165, 74.500496, - -76.868950, -9.301287, 74.783707, - -75.754913, -9.294973, 74.927345, - -74.637566, -9.341335, 74.902016, - -73.521400, -9.382154, 74.747322, - -72.420792, -9.415255, 74.426178, - -71.401161, -9.413510, 74.035446, - -70.392426, -9.413510, 73.627884, - -69.237152, -9.413510, 73.155815, - -70.317207, -9.413510, 73.034027, - -71.371315, -9.279585, 72.798569, - -72.378838, -9.306310, 72.392982, - -73.315544, -9.230491, 71.843933, - -74.225883, -9.153550, 71.253113, - -75.120522, -9.076024, 70.638908, - -76.054642, -9.019394, 70.204910, - -76.981323, -8.999838, 70.762978, - -77.856903, -9.024825, 71.403915, - -78.876686, -9.115798, 71.789764, - -79.930756, -9.171277, 72.053635, - -79.572502, -9.295024, 73.087646, - -78.807686, -9.364762, 73.869614, - -77.916420, -9.321617, 74.516357, - -76.824738, -9.300390, 74.790466, - -75.738380, -9.295794, 74.930130, - -74.620911, -9.341956, 74.899994, - -73.493645, -9.382988, 74.739204, - -72.413185, -9.415321, 74.420128, - -71.452393, -9.413510, 74.054657, - -70.487755, -9.413510, 73.666130 -}; + {-68.950, -9.448, 72.590, 0}, + {-73.000, -9.256, 72.037, 0}, + {-75.900, -9.023, 70.197, 0}, + {-84.900, -9.256, 73.033, 0}, + {-75.320, -9.386, 76.639, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - -- onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) player:startEvent(90); - npc:wait(); -end; + npc:pathStop() +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Norg/npcs/Parlemaille.lua b/scripts/zones/Norg/npcs/Parlemaille.lua index 2a815a9e72f..3b1ab5d18bc 100644 --- a/scripts/zones/Norg/npcs/Parlemaille.lua +++ b/scripts/zones/Norg/npcs/Parlemaille.lua @@ -3,57 +3,35 @@ -- NPC: Parlemaille -- Standard Info NPC ----------------------------------- -require("scripts/globals/pathfind"); +require("scripts/globals/pathfind") ----------------------------------- local path = { - -20.369047, 1.097733, -24.847025, - -20.327482, 1.097733, -25.914215, - -20.272402, 1.097733, -27.108938, - -20.094927, 1.097733, -26.024536, - -19.804167, 1.097733, -13.467897, - -20.166626, 1.097733, -29.047626, - -20.415781, 1.097733, -30.099203, - -20.956963, 1.097733, -31.050713, - -21.629911, 1.097733, -31.904819, - -22.395691, 1.097733, -32.705379, - -23.187502, 1.097733, -33.450657, - -24.126440, 1.097733, -33.993565, - -25.146549, 1.097733, -34.370991, - -24.118807, 1.097733, -34.021263, - -23.177444, 1.097733, -33.390072, - -22.360268, 1.097733, -32.672077, - -21.594837, 1.097733, -31.877075, - -20.870659, 1.097733, -30.991661, - -20.384108, 1.097733, -29.968874, - -20.212332, 1.097733, -28.944513, - -20.144073, 1.097733, -27.822714, - -20.110937, 1.097733, -26.779232, - -19.802849, 1.097733, -13.406805 -}; + {-20.369, 1.097, -14.000, 2}, + {-20.384, 1.097, -29.968, 2}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - -- onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - player:startEvent(88); -npc:wait(); -end; + player:startEvent(88) + npc:pathStop() +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Norg/npcs/Shivivi.lua b/scripts/zones/Norg/npcs/Shivivi.lua index 72fbd17acfa..df0757d2b85 100644 --- a/scripts/zones/Norg/npcs/Shivivi.lua +++ b/scripts/zones/Norg/npcs/Shivivi.lua @@ -4,88 +4,55 @@ -- Starts Quest: Secret of the Damp Scroll -- !pos 68.729 -6.281 -6.432 252 ----------------------------------- -require("scripts/globals/settings"); -require("scripts/globals/shop"); -require("scripts/globals/quests"); -require("scripts/globals/pathfind"); +require("scripts/globals/settings") +require("scripts/globals/shop") +require("scripts/globals/quests") +require("scripts/globals/pathfind") local path = { - 59.698738, -6.282220, -0.842413, - 60.732185, -6.282220, -1.238357, - 61.612240, -6.282220, -1.784821, - 62.487907, -6.282220, -2.353283, - 72.850945, -6.282220, -9.126195, - 73.853767, -6.282220, -9.553433, - 74.856308, -6.282220, -9.683896, - 73.738983, -6.282220, -9.515277, - 72.831741, -6.282220, -9.069685, - 71.878197, -6.282220, -8.482308, - 70.934311, -6.282220, -7.872030, - 59.120659, -6.282220, -0.152556, - 58.260170, -6.282220, 0.364192, - 57.274529, -6.282220, 0.870113, - 56.267262, -6.282220, 1.278537, - 55.206066, -6.282220, 1.567320, - 54.107983, -6.282220, 1.825333, - 52.989727, -6.282220, 2.044612, - 51.915558, -6.282220, 2.155138, - 50.790054, -6.282220, 2.229803, - 48.477810, -6.282220, 2.361498, - 52.035912, -6.282220, 2.157254, - 53.062607, -6.282220, 2.020960, - 54.161610, -6.282220, 1.805452, - 55.267555, -6.282220, 1.563984, - 56.350552, -6.282220, 1.252867, - 57.370754, -6.282220, 0.821186, - 58.355640, -6.282220, 0.306034, - 59.294991, -6.282220, -0.273827, - 60.222008, -6.282220, -0.873351, - 72.913628, -6.282220, -9.164549, - 73.919716, -6.282220, -9.571738, - 75.007599, -6.282220, -9.696978, - 73.930611, -6.282220, -9.597872, - 72.944572, -6.282220, -9.142765, - 72.017265, -6.282220, -8.573789, - 71.103760, -6.282220, -7.982807, - 59.055004, -6.282220, -0.111382, - 58.112335, -6.282220, 0.439206 -}; + {48.240, -6.282, 1.750, 2}, + {55.292, -6.282, 1.055, 0}, + {66.858, -6.282, -5.389, 0}, + {73.660, -6.282, -9.417, 2}, + {66.858, -6.282, -5.389, 0}, + {55.292, -6.282, 1.055, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - -- onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.basicPath(npc, path, false) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - DampScroll = player:getQuestStatus(OUTLANDS,tpz.quest.id.outlands.SECRET_OF_THE_DAMP_SCROLL); - mLvl = player:getMainLvl(); + DampScroll = player:getQuestStatus(OUTLANDS,tpz.quest.id.outlands.SECRET_OF_THE_DAMP_SCROLL) + mLvl = player:getMainLvl() if (DampScroll == QUEST_AVAILABLE and player:getFameLevel(NORG) >= 3 and mLvl >= 10 and player:hasItem(1210) == true) then - player:startEvent(31,1210); -- Start the quest + player:startEvent(31,1210) -- Start the quest + npc:pathStop() elseif (DampScroll == QUEST_ACCEPTED) then - player:startEvent(32); -- Reminder Dialogue + player:startEvent(32) -- Reminder Dialogue + npc:pathStop() else - player:startEvent(85); + player:startEvent(85) + npc:pathStop() end - - npc:wait(0); -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 31) then - player:addQuest(OUTLANDS,tpz.quest.id.outlands.SECRET_OF_THE_DAMP_SCROLL); + player:addQuest(OUTLANDS,tpz.quest.id.outlands.SECRET_OF_THE_DAMP_SCROLL) end - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/Port_Jeuno/npcs/Red_Ghost.lua b/scripts/zones/Port_Jeuno/npcs/Red_Ghost.lua index cf4bded902c..82097205f62 100644 --- a/scripts/zones/Port_Jeuno/npcs/Red_Ghost.lua +++ b/scripts/zones/Port_Jeuno/npcs/Red_Ghost.lua @@ -3,59 +3,55 @@ -- NPC: Red Ghost -- Standard Info NPC ----------------------------------- -require("scripts/globals/quests"); -require("scripts/globals/pathfind"); +require("scripts/globals/quests") +require("scripts/globals/pathfind") ----------------------------------- local path = { --96.823616, 0.001000, -3.722488, --96.761887, 0.001000, -2.632236, --96.698341, 0.001000, -1.490001, --96.636963, 0.001000, -0.363672, --96.508736, 0.001000, 2.080966, --96.290009, 0.001000, 6.895948, --96.262505, 0.001000, 7.935584, --96.282127, 0.001000, 6.815756, --96.569176, 0.001000, -7.781419, --96.256729, 0.001000, 8.059505, --96.568405, 0.001000, -7.745419, --96.254066, 0.001000, 8.195477, --96.567200, 0.001000, -7.685426 -}; + {-96.500, 0.000, 8.050}, + {-96.512, 0.000, -8.285}, +} + function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing() + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + local pos = npc:getPos() + local point = npc:getPathPoint() + local dx = path[point][1] - pos.x + local dz = path[point][3] - pos.z + local distance = math.sqrt( dx * dx + dz * dz ) + local speed = utils.clamp(250/distance, 10, 15) + + npc:speed(speed) + + tpz.path.pingPong(npc, path, 0) +end function onTrade(player,npc,trade) -end; +end function onTrigger(player,npc) - local WildcatJeuno = player:getCharVar("WildcatJeuno"); + local WildcatJeuno = player:getCharVar("WildcatJeuno") if (player:getQuestStatus(JEUNO,tpz.quest.id.jeuno.LURE_OF_THE_WILDCAT) == QUEST_ACCEPTED and player:getMaskBit(WildcatJeuno,15) == false) then - player:startEvent(314); + player:startEvent(314) + npc:pathStop() else - player:startEvent(34); + player:startEvent(34) + npc:pathStop() end - - -- wait until event is over - npc:wait(); -end; +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) if (csid == 314) then - player:setMaskBit(player:getCharVar("WildcatJeuno"),"WildcatJeuno",15,true); + player:setMaskBit(player:getCharVar("WildcatJeuno"),"WildcatJeuno",15,true) end - npc:wait(0); - -end; + npc:pathResume() +end diff --git a/scripts/zones/Southern_San_dOria/npcs/Glenne.lua b/scripts/zones/Southern_San_dOria/npcs/Glenne.lua index 81790224fb5..cfcab5b64d0 100644 --- a/scripts/zones/Southern_San_dOria/npcs/Glenne.lua +++ b/scripts/zones/Southern_San_dOria/npcs/Glenne.lua @@ -4,112 +4,92 @@ -- Starts and Finishes Quest: A Sentry's Peril -- !pos -122 -2 15 230 ------------------------------------- -require("scripts/globals/settings"); -require("scripts/globals/titles"); -require("scripts/globals/shop"); -require("scripts/globals/quests"); -local ID = require("scripts/zones/Southern_San_dOria/IDs"); - -require("scripts/globals/pathfind"); +local ID = require("scripts/zones/Southern_San_dOria/IDs") +require("scripts/globals/settings") +require("scripts/globals/titles") +require("scripts/globals/shop") +require("scripts/globals/quests") +require("scripts/globals/pathfind") local path = { - -121.512833, -2.000000, 14.492509, - -122.600044, -2.000000, 14.535807, - -123.697128, -2.000000, 14.615446, - -124.696846, -2.000000, 14.707844, - -123.606018, -2.000000, 14.601295, - -124.720863, -2.000000, 14.709210, - -123.677681, -2.000000, 14.608237, - -124.752579, -2.000000, 14.712106, - -123.669525, -2.000000, 14.607473, - -124.788277, -2.000000, 14.715488, - -123.792847, -2.000000, 14.619405, - -124.871826, -2.000000, 14.723736 -}; + {-126.185, -2.000, 14.758}, + {-121.511, -2.000, 14.814}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); -end; + npc:initNpcPathing(path[2][1], path[2][2], path[2][3]) + onPath(npc) +end function onPath(npc) - tpz.path.patrol(npc, path); -end; + tpz.path.pingPong(npc, path, 0) +end function onTrade(player,npc,trade) + local count = trade:getItemCount() - local count = trade:getItemCount(); if (player:getQuestStatus(SANDORIA,tpz.quest.id.sandoria.FLYERS_FOR_REGINE) == QUEST_ACCEPTED and trade:hasItemQty(532,1) and count == 1) then - player:messageSpecial(ID.text.FLYER_REFUSED); - + player:messageSpecial(ID.text.FLYER_REFUSED) elseif (player:getQuestStatus(SANDORIA,tpz.quest.id.sandoria.A_SENTRY_S_PERIL) == QUEST_ACCEPTED and trade:hasItemQty(601,1) and count == 1) then - player:startEvent(513); - npc:wait(); + player:startEvent(513) + npc:pathStop() end - -end; +end function onTrigger(player,npc) - - local aSentrysPeril = player:getQuestStatus(SANDORIA,tpz.quest.id.sandoria.A_SENTRY_S_PERIL); - - npc:wait(); + local aSentrysPeril = player:getQuestStatus(SANDORIA,tpz.quest.id.sandoria.A_SENTRY_S_PERIL) if (aSentrysPeril == QUEST_AVAILABLE) then - player:startEvent(510); + player:startEvent(510) + npc:pathStop() elseif (aSentrysPeril == QUEST_ACCEPTED) then if (player:hasItem(600) == true or player:hasItem(601) == true) then - player:startEvent(520); + player:startEvent(520) + npc:pathStop() else - player:startEvent(644); + player:startEvent(644) + npc:pathStop() end elseif (aSentrysPeril == QUEST_COMPLETED) then - player:startEvent(521); - else - npc:wait(0); + player:startEvent(521) + npc:pathStop() end - -end; +end function onEventUpdate(player,csid,option) - -- printf("CSID2: %u",csid); - -- printf("RESULT2: %u",option); -end; +end function onEventFinish(player,csid,option,npc) - - npc:wait(5000); - if (csid == 510 and option == 0) then if (player:getFreeSlotsCount() > 0) then - player:addQuest(SANDORIA,tpz.quest.id.sandoria.A_SENTRY_S_PERIL); - player:addItem(600); - player:messageSpecial(ID.text.ITEM_OBTAINED,600); + player:addQuest(SANDORIA,tpz.quest.id.sandoria.A_SENTRY_S_PERIL) + player:addItem(600) + player:messageSpecial(ID.text.ITEM_OBTAINED,600) else - player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED,600); -- Dose of ointment + player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED,600) -- Dose of ointment end elseif (csid == 644) then if (player:getFreeSlotsCount() > 0) then - player:addItem(600); - player:messageSpecial(ID.text.ITEM_OBTAINED,600); + player:addItem(600) + player:messageSpecial(ID.text.ITEM_OBTAINED,600) else - player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED,600); -- Dose of ointment + player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED,600) -- Dose of ointment end elseif (csid == 513) then if (player:getFreeSlotsCount() == 0) then - player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED,12832); -- Bronze Subligar + player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED,12832) -- Bronze Subligar else - player:tradeComplete(); - player:addTitle(tpz.title.RONFAURIAN_RESCUER); - player:addItem(12832); - player:messageSpecial(ID.text.ITEM_OBTAINED,12832); -- Bronze Subligar - player:addFame(SANDORIA,30); - player:completeQuest(SANDORIA,tpz.quest.id.sandoria.A_SENTRY_S_PERIL); + player:tradeComplete() + player:addTitle(tpz.title.RONFAURIAN_RESCUER) + player:addItem(12832) + player:messageSpecial(ID.text.ITEM_OBTAINED,12832) -- Bronze Subligar + player:addFame(SANDORIA,30) + player:completeQuest(SANDORIA,tpz.quest.id.sandoria.A_SENTRY_S_PERIL) end end -end; + npc:pathResume() +end diff --git a/scripts/zones/Southern_San_dOria/npcs/Raminel.lua b/scripts/zones/Southern_San_dOria/npcs/Raminel.lua index 7857f815b67..50c33d103dc 100644 --- a/scripts/zones/Southern_San_dOria/npcs/Raminel.lua +++ b/scripts/zones/Southern_San_dOria/npcs/Raminel.lua @@ -4,124 +4,91 @@ -- Involved in Quests: Riding on the Clouds -- !pos -56 2 -21 230 ----------------------------------- -local ID = require("scripts/zones/Southern_San_dOria/IDs"); -require("scripts/globals/keyitems"); -require("scripts/globals/pathfind"); -require("scripts/globals/quests"); +local ID = require("scripts/zones/Southern_San_dOria/IDs") +require("scripts/globals/keyitems") +require("scripts/globals/pathfind") +require("scripts/globals/quests") local path = { - -138.436340, -2.000000, 16.227097, - -137.395432, -2.000000, 15.831898, - -136.317108, -2.000000, 15.728185, - -134.824036, -2.000000, 15.816396, - -108.897049, -2.000000, 16.508110, - -107.823288, -2.000000, 16.354126, - -106.804962, -2.000000, 15.973084, - -105.844963, -2.000000, 15.462379, - -104.922585, -2.000000, 14.885456, - -104.020050, -2.000000, 14.277813, - -103.138374, -2.000000, 13.640303, - -101.501289, -2.000000, 12.422975, - -77.636841, 2.000000, -5.771687, - -59.468536, 2.000000, -19.632719, - -58.541172, 2.000000, -20.197826, - -57.519985, 2.000000, -20.570829, - -56.474659, 2.000000, -20.872238, - -55.417450, 2.000000, -21.129019, - -54.351425, 2.000000, -21.365578, - -53.286743, 2.000000, -21.589529, - -23.770412, 2.000000, -27.508755, - -13.354427, 1.700000, -29.593290, - -14.421194, 1.700000, -29.379389, -- auction house - -43.848141, 2.000000, -23.492155, - -56.516224, 2.000000, -20.955723, - -57.555450, 2.000000, -20.638817, - -58.514832, 2.000000, -20.127840, - -59.426712, 2.000000, -19.534536, - -60.322998, 2.000000, -18.917839, - -61.203823, 2.000000, -18.279247, - -62.510002, 2.000000, -17.300892, - -86.411278, 2.000000, 0.921999, - -105.625214, -2.000000, 15.580724, - -106.582047, -2.000000, 16.089426, - -107.647263, -2.000000, 16.304668, - -108.732132, -2.000000, 16.383970, - -109.819397, -2.000000, 16.423687, - -110.907364, -2.000000, 16.429226, - -111.995232, -2.000000, 16.411282, - -140.205811, -2.000000, 15.668728, -- package Lusiane - -139.296539, -2.000000, 16.786556 -}; + {-136.375, -2.000, 18.083, 0, 0, 0}, -- start + { -99.840, -2.000, 12.070, 0, 0, 0}, + { -91.179, 2.000, 4.392, 0, 0, 0}, + { -64.455, 2.000, -13.255, 0, 0, 0}, + { -13.450, 1.700, -29.180, 0, 4, ID.npc.ARPETION}, -- action house + { -64.455, 2.000, -13.255, 0, 0, 0}, + { -91.179, 2.000, 4.392, 0, 0, 0}, + { -99.840, -2.000, 12.070, 0, 0, 0}, + {-124.820, -2.000, 17.823, 0, 0, 0}, + {-136.670, -2.000, 14.877, 0, 0, 0}, + {-139.894, -2.000, 14.877, ID.text.RAMINEL_DELIVERY, 4, ID.npc.LUSIANE}, -- at Lusiane + {-137.169, -2.000, 17.385, 0, 0, 0}, +} function onSpawn(npc) - npc:initNpcAi(); - npc:setPos(tpz.path.first(path)); - onPath(npc); + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) + onPath(npc) +end - -- test fromStart - local start = tpz.path.fromStart(path, 2); - local startFirst = tpz.path.get(path, 3); +function onPath(npc) + local pos = npc:getPos() + local lus = GetNPCByID(ID.npc.LUSIANE) + local Arp = GetNPCByID(ID.npc.ARPETION) - if (start[1] ~= startFirst[1] or start[2] ~= startFirst[2] or start[3] ~= startFirst[3]) then - printf("[Error] start path is not right %f %f %f actually = %f %f %f", startFirst[1], startFirst[2], startFirst[3], start[1], start[2], start[3]); + -- Arpetion stuff + if npc:getPathPoint() == 7 then + Arp:lookAt(pos) + elseif npc:getPathPoint() == 8 then + -- when I walk away stop looking at me + GetNPCByID(ID.npc.LUSIANE):clearTargID() end - -- test fromEnd - -- local endPt = tpz.path.fromEnd(path, 2); - -- local endFirst = tpz.path.get(path, 37); - - -- if (endPt[1] ~= endFirst[1] or endPt[2] ~= endFirst[2] or endPt[3] ~= endFirst[3]) then - -- printf("[Error] endPt path is not right %f %f %f actually = %f %f %f", endFirst[1], endFirst[2], endFirst[3], endPt[1], endPt[2], endPt[3]); - -- end -end; - -function onPath(npc) - if (npc:atPoint(tpz.path.get(path, 23))) then - npc:lookAt(GetNPCByID(ID.npc.ARPETION):getPos()); - npc:wait(); - elseif (npc:atPoint(tpz.path.get(path, -1))) then - -- give package to Lusiane, wait 4 seconds, then continue - local lus = GetNPCByID(ID.npc.LUSIANE); - lus:showText(npc, ID.text.RAMINEL_DELIVERY); - npc:showText(lus, ID.text.LUSIANE_THANK); - npc:wait(); - elseif (npc:atPoint(tpz.path.last(path))) then + -- Lusiane stuff + if npc:getPathPoint() == 1 then + if lus:getLocalVar("[THANKYOU_DONE]") == 0 then + lus:showText(lus, ID.text.LUSIANE_THANK) + lus:setLocalVar("[THANKYOU_DONE]",1) + end + lus:lookAt(pos) + elseif npc:getPathPoint() == 2 then -- when I walk away stop looking at me - GetNPCByID(ID.npc.LUSIANE):clearTargID(); + lus:clearTargID() + lus:setLocalVar("[THANKYOU_DONE]",0) end -- go back and forth the set path - tpz.path.patrol(npc, path); -end; + tpz.path.advancedPath(npc, path, false) +end function onTrade(player,npc,trade) - if (player:getQuestStatus(SANDORIA,tpz.quest.id.sandoria.FLYERS_FOR_REGINE) == QUEST_ACCEPTED) then if (trade:hasItemQty(532,1) and trade:getItemCount() == 1) then -- Trade Magicmart Flyer - player:messageSpecial(ID.text.FLYER_REFUSED); + player:messageSpecial(ID.text.FLYER_REFUSED) + npc:pathStop() end end if (player:getQuestStatus(JEUNO,tpz.quest.id.jeuno.RIDING_ON_THE_CLOUDS) == QUEST_ACCEPTED and player:getCharVar("ridingOnTheClouds_1") == 1) then if (trade:hasItemQty(1127,1) and trade:getItemCount() == 1) then -- Trade Kindred seal - player:setCharVar("ridingOnTheClouds_1",0); - player:tradeComplete(); - player:addKeyItem(tpz.ki.SCOWLING_STONE); - player:messageSpecial(ID.text.KEYITEM_OBTAINED,tpz.ki.SCOWLING_STONE); + player:setCharVar("ridingOnTheClouds_1",0) + player:tradeComplete() + player:addKeyItem(tpz.ki.SCOWLING_STONE) + player:messageSpecial(ID.text.KEYITEM_OBTAINED,tpz.ki.SCOWLING_STONE) + npc:pathStop() end end -end; + npc:pathResume() +end function onTrigger(player,npc) - player:startEvent(614); - npc:wait(); -end; + player:startEvent(614) + npc:pathStop() +end function onEventUpdate(player,csid,option) -end; +end function onEventFinish(player,csid,option,npc) - npc:wait(0); -end; + npc:pathResume() +end diff --git a/scripts/zones/West_Ronfaure/IDs.lua b/scripts/zones/West_Ronfaure/IDs.lua index b0844fa8ebf..2f7ce8bc5b5 100644 --- a/scripts/zones/West_Ronfaure/IDs.lua +++ b/scripts/zones/West_Ronfaure/IDs.lua @@ -63,6 +63,7 @@ zones[tpz.zone.WEST_RONFAURE] = npc = { CASKET_BASE = 17187467, + GACHEMAGE = 17187494, SIGNPOST_OFFSET = 17187505, OVERSEER_BASE = 17187525, }, diff --git a/scripts/zones/West_Ronfaure/npcs/Palcomondau.lua b/scripts/zones/West_Ronfaure/npcs/Palcomondau.lua index 0dba21fab84..b3a415d9e7d 100644 --- a/scripts/zones/West_Ronfaure/npcs/Palcomondau.lua +++ b/scripts/zones/West_Ronfaure/npcs/Palcomondau.lua @@ -10,320 +10,74 @@ require("scripts/globals/pathfind") local path = { - -373.096863, -45.742077, 340.182159, - -361.441864, -46.052444, 340.367371, - -360.358276, -46.063702, 340.457428, - -359.297211, -46.093231, 340.693817, - -358.264465, -46.285988, 341.032928, - -357.301941, -45.966343, 341.412994, - -356.365295, -45.641331, 341.804657, - -353.933533, -45.161453, 342.873901, - -346.744659, -45.006634, 346.113251, - -345.843506, -44.973419, 346.716309, - -345.138519, -44.939915, 347.540436, - -344.564056, -44.925575, 348.463470, - -344.069366, -44.945713, 349.431824, - -343.621704, -45.004826, 350.421936, - -343.194946, -45.062874, 351.421173, - -342.118958, -45.391632, 354.047485, - -334.448578, -44.964996, 373.198242, - -333.936615, -45.028484, 374.152283, - -333.189636, -45.068111, 374.939209, - -332.252838, -45.073158, 375.488129, - -331.241516, -45.065205, 375.888031, - -330.207855, -45.043056, 376.226532, - -329.165100, -45.022049, 376.536011, - -328.118622, -45.000935, 376.832428, - -323.437805, -45.726982, 378.101166, - -305.333038, -49.030193, 382.936646, - -304.308228, -49.435581, 383.130188, - -303.259979, -49.765697, 383.194305, - -302.209290, -50.104950, 383.175659, - -301.161774, -50.446033, 383.117767, - -300.114624, -50.787590, 383.041473, - -298.422943, -51.390713, 382.898590, - -281.798126, -56.178822, 381.370544, - -280.718414, -56.161697, 381.241425, - -279.641785, -56.142433, 381.087341, - -278.567627, -56.121262, 380.917938, - -261.485809, -55.875919, 378.010284, - -260.404205, -55.893314, 377.898254, - -259.317078, -55.908813, 377.861389, - -258.229248, -55.923473, 377.879669, - -257.142151, -55.938625, 377.919037, - -254.834976, -55.888081, 378.032623, - -224.857941, -56.603645, 379.721832, - -194.892044, -59.911034, 381.416382, - -178.437729, -61.500011, 382.347656, -- report? - -179.524124, -61.500011, 382.285919, - -209.530518, -58.837189, 380.588806, - -239.543137, -56.145073, 378.891602, - -257.769012, -55.930656, 377.861328, - -258.856445, -55.915405, 377.839905, - -259.943420, -55.900009, 377.884918, - -261.025116, -55.882565, 377.999329, - -262.102173, -55.864536, 378.151794, - -263.193237, -55.845242, 378.320587, - -279.088043, -56.134182, 381.021332, - -280.165344, -56.153133, 381.172882, - -281.246033, -56.168983, 381.299683, - -282.302917, -56.181866, 381.408691, - -301.977173, -50.175457, 383.230652, - -302.993134, -49.847698, 383.246735, - -303.998260, -49.580284, 383.147003, - -305.083649, -49.109840, 382.933411, - -306.061432, -48.755005, 382.706818, - -307.152679, -48.355675, 382.435608, - -327.497711, -45.027401, 377.016663, - -328.548553, -45.009663, 376.735291, - -331.569672, -45.071396, 375.927429, - -332.566711, -45.084835, 375.500153, - -333.347351, -45.055779, 374.749634, - -333.952423, -44.990082, 373.848999, - -334.454071, -44.958176, 372.884399, - -334.909607, -44.930862, 371.896698, - -335.338989, -44.939476, 370.897034, - -336.319305, -45.033978, 368.508484, - -344.092773, -44.934128, 349.103394, - -344.599304, -44.920494, 348.142578, - -345.289124, -44.948330, 347.305328, - -346.152740, -44.981884, 346.646881, - -347.087494, -45.014847, 346.091278, - -348.052368, -45.047348, 345.589172, - -349.030975, -45.039383, 345.114044, - -350.016052, -45.036438, 344.652252, - -357.274414, -45.947830, 341.359833, - -358.277222, -46.126381, 340.958984, - -359.326965, -46.091412, 340.679291, - -360.404205, -46.072746, 340.529785, - -361.488525, -46.061684, 340.441284, - -362.575226, -46.055046, 340.388184, - -363.662323, -46.050694, 340.353088, - -367.288086, -45.562141, 340.276978, - -397.408386, -46.031933, 339.796722, - -427.522491, -45.366581, 339.319641, - -457.651947, -45.910805, 338.841827, - -463.498932, -45.831551, 338.757111, - -464.580750, -45.752060, 338.776215, - -465.656433, -45.603558, 338.822693, - -467.953491, -45.463387, 338.967407, - -494.403381, -45.661190, 340.958710, - -495.442017, -45.667831, 341.254303, - -496.256042, -45.713417, 341.966400, - -496.865723, -45.720673, 342.866852, - -497.385132, -45.755371, 343.821838, - -498.376312, -45.856812, 345.908539, - -498.820007, -45.996841, 346.899353, - -499.174530, -46.197227, 347.923767, - -499.352539, -46.093906, 348.989563, - -499.416016, -46.074814, 350.073944, - -499.423279, -46.070366, 351.161072, - -499.397400, -46.084679, 352.248505, - -499.358795, -46.133957, 353.335815, - -498.771545, -46.025249, 365.000885, - -498.687347, -45.804886, 366.615082, - -498.166779, -45.846115, 376.640106, - -498.109924, -45.862961, 377.726410, - -497.697968, -45.951462, 385.738007, - -497.694122, -46.004673, 386.825317, - -497.737915, -46.056293, 387.912231, - -497.809082, -46.020039, 388.997162, - -498.192322, -46.074364, 393.595886, - -499.513733, -47.018887, 408.449036, - -499.682556, -47.223618, 409.509949, - -499.959503, -47.415245, 410.549194, - -500.307434, -47.595810, 411.566589, - -500.686859, -48.017868, 412.545349, - -501.077026, -48.478256, 413.506836, - -501.873901, -49.394321, 415.425659, - -502.207245, -49.737534, 416.425812, - -502.382660, -50.058594, 417.464630, - -502.406891, -50.394829, 418.516327, - -502.342438, -50.724243, 419.565948, - -502.251190, -51.088074, 420.607056, - -502.139435, -51.460213, 421.645935, - -501.954468, -52.022106, 423.198792, - -500.171021, -55.784023, 437.153931, - -500.033447, -56.010731, 438.356873, - -499.879120, -56.021641, 439.981689, - -499.679840, -55.963177, 442.392639, - -499.790558, -55.536102, 443.497894, - -500.205383, -55.237358, 444.453308, - -500.785736, -55.148598, 445.369598, - -501.427277, -55.099243, 446.246521, - -502.103760, -55.051254, 447.097015, - -502.791046, -55.003696, 447.939423, - -503.574524, -55.015862, 448.879730, - -510.872284, -55.089428, 457.484222, - -511.691742, -55.159729, 458.188812, - -512.678040, -55.280975, 458.628448, - -513.720825, -55.419674, 458.910309, - -514.785461, -55.554832, 459.097260, - -515.851929, -55.741619, 459.240265, - -516.923096, -55.906597, 459.366913, - -517.998413, -56.087105, 459.482513, - -521.921387, -56.035919, 459.879913, - -522.965271, -55.886223, 460.131927, - -523.947327, -55.785652, 460.568665, - -524.886719, -55.581245, 461.082581, - -525.805237, -55.438984, 461.645203, - -526.824829, -55.279068, 462.300720, - -531.560181, -54.945484, 465.464722, - -532.406555, -54.961479, 466.143524, - -533.060120, -54.995003, 467.010559, - -533.618408, -55.030079, 467.943695, - -534.158691, -55.026203, 468.887848, - -538.343323, -55.609158, 476.336639, - -538.852539, -55.920918, 477.273773, - -539.335510, -56.089600, 478.277985, - -539.767029, -56.035652, 479.274902, - -540.283997, -56.042004, 480.532135, - -544.975769, -55.047729, 492.510040, - -545.471375, -55.034317, 493.475891, - -546.206604, -55.009632, 494.270599, - -547.121643, -54.949020, 494.853882, - -548.100342, -54.921333, 495.329163, - -549.105103, -54.930302, 495.747131, - -550.121033, -54.979893, 496.133270, - -551.140991, -55.035213, 496.507385, - -556.089600, -55.924522, 498.256134, - -557.125793, -56.028824, 498.568329, - -558.182983, -56.208153, 498.806641, - -559.256592, -56.133862, 498.981354, - -560.335327, -56.116646, 499.118896, - -562.091736, -56.104050, 499.314911, - -574.530396, -56.559124, 500.553680, - -575.606262, -56.603722, 500.706024, - -576.649963, -56.813107, 500.963989, - -577.670288, -57.037365, 501.291138, - -578.679321, -57.266209, 501.647278, - -579.683105, -57.510010, 502.019379, - -581.321777, -57.800549, 502.643463, - -608.199463, -60.061394, 513.086548, -- turn around - -607.195618, -59.956524, 512.696411, - -579.141602, -57.367210, 501.788940, - -578.157959, -57.136345, 501.407318, - -577.150146, -56.915344, 501.086304, - -576.116089, -56.711021, 500.848358, - -575.049622, -56.572414, 500.676178, - -573.971497, -56.540531, 500.535004, - -572.891418, -56.511803, 500.410767, - -571.541260, -56.454227, 500.267334, - -559.917480, -56.117676, 499.110870, - -558.841248, -56.137356, 498.953400, - -557.782593, -56.166878, 498.714447, - -556.750061, -55.982758, 498.415985, - -555.608704, -55.807209, 498.053894, - -553.104614, -55.239231, 497.204651, - -547.725464, -54.925472, 495.326019, - -546.765625, -54.984024, 494.821899, - -546.022339, -55.011047, 494.032928, - -545.445923, -55.024132, 493.110931, - -544.951660, -55.061985, 492.142212, - -544.503357, -55.055382, 491.151031, - -544.083557, -55.041119, 490.147827, - -543.675354, -55.021049, 489.139801, - -540.065735, -56.014805, 479.933258, - -539.634155, -56.052246, 478.935516, - -539.166565, -56.161896, 477.960266, - -538.697327, -55.847233, 477.044403, - -538.208557, -55.557598, 476.136658, - -537.436646, -55.298710, 474.733032, - -533.392761, -55.013466, 467.513885, - -532.726868, -54.979912, 466.657013, - -531.930054, -54.948929, 465.917389, - -531.075134, -54.949390, 465.244354, - -530.197693, -54.950920, 464.600464, - -529.308838, -54.990524, 463.974792, - -525.172791, -55.543240, 461.159485, - -524.214478, -55.720425, 460.668243, - -523.196838, -55.850220, 460.304413, - -522.141357, -56.015007, 460.066986, - -521.068726, -56.020702, 459.886475, - -519.991577, -56.039570, 459.735687, - -518.911011, -56.055336, 459.609558, - -517.433777, -55.982838, 459.449738, - -513.966614, -55.460213, 459.099396, - -512.921997, -55.323360, 458.849701, - -512.001587, -55.181244, 458.291351, - -511.179230, -55.105251, 457.583893, - -510.412476, -55.032543, 456.816132, - -509.680267, -54.958725, 456.014191, - -508.602783, -54.942749, 454.788452, - -500.669189, -55.143158, 445.473999, - -500.128296, -55.247131, 444.541412, - -499.898651, -55.518276, 443.507935, - -499.821869, -55.910942, 442.468292, - -499.832764, -56.027439, 441.384308, - -499.881256, -56.021374, 440.297485, - -499.962463, -56.011227, 439.212982, - -500.072205, -56.031265, 438.133789, - -500.329163, -55.395157, 435.970062, - -502.441742, -50.690495, 419.476440, - -502.485474, -50.371307, 418.460999, - -502.368835, -50.054039, 417.447144, - -502.131531, -49.750740, 416.450317, - -501.775696, -49.393009, 415.406342, - -501.394318, -48.913757, 414.410278, - -500.999023, -48.445408, 413.431396, - -500.303253, -47.637516, 411.756561, - -499.980103, -47.454823, 410.747284, - -499.763947, -47.256901, 409.705627, - -499.603699, -47.051754, 408.654358, - -499.474274, -46.886150, 407.591583, - -499.360931, -46.714558, 406.528320, - -497.842590, -45.999271, 389.667542, - -497.735077, -46.047218, 388.312012, - -497.702972, -46.022728, 387.226166, - -497.717407, -45.968018, 386.140686, - -497.752014, -45.910450, 385.054596, - -498.532532, -45.704178, 369.587616, - -498.589294, -45.753151, 368.501129, - -499.547089, -46.040310, 350.040375, - -499.412354, -46.078503, 348.964417, - -499.099609, -46.221172, 347.926239, - -498.741913, -46.030338, 346.926208, - -498.351959, -45.860306, 345.923828, - -497.941467, -45.805256, 344.918884, - -497.518524, -45.751751, 343.918427, - -497.074768, -45.707314, 342.926636, - -496.434631, -45.690395, 342.056549, - -495.518555, -45.685642, 341.481903, - -494.478638, -45.677624, 341.169525, - -493.406281, -45.681431, 340.990509, - -492.333801, -46.148170, 340.858154, - -491.272858, -45.972626, 340.751801, - -490.196564, -45.903652, 340.655212, - -466.653748, -45.466057, 338.859863, - -465.575256, -45.615093, 338.803314, - -464.496521, -45.763508, 338.779785, - -463.410126, -45.832458, 338.774506, - -433.375122, -45.735828, 339.226624, - -403.243805, -46.015915, 339.704468, + {-192.464, -60.000, 382.392, 0, 0, 0}, -- start + {-203.815, -59.897, 381.545, 0, 0, 0}, + {-219.150, -57.225, 379.947, 0, 0, 0}, + {-259.700, -55.891, 378.431, 0, 0, 0}, + {-282.237, -56.083, 380.621, 0, 0, 0}, + {-303.025, -49.933, 383.492, 0, 0, 0}, + {-311.895, -47.021, 379.100, 0, 0, 0}, + {-321.987, -46.089, 380.283, 0, 0, 0}, + {-338.668, -45.239, 367.705, 0, 0, 0}, + {-339.992, -46.007, 361.500, 0, 0, 0}, + {-348.172, -45.080, 344.165, 0, 0, 0}, + {-355.982, -45.395, 341.071, 0, 0, 0}, + {-358.888, -46.031, 339.800, 0, 0, 0}, + {-384.022, -45.855, 337.544, 0, 0, 0}, + {-396.169, -46.050, 340.124, 0, 0, 0}, + {-435.300, -45.968, 339.535, 0, 0, 0}, + {-464.066, -45.850, 337.503, 0, 0, 0}, + {-492.519, -45.757, 339.435, 0, 0, 0}, + {-499.674, -45.848, 347.074, 0, 0, 0}, + {-498.518, -45.884, 379.914, 0, 0, 0}, + {-500.953, -48.242, 413.020, 0, 0, 0}, + {-500.491, -56.068, 438.456, 0, 0, 0}, + {-500.167, -56.026, 442.085, 0, 0, 0}, + {-512.689, -55.288, 458.727, 0, 0, 0}, + {-519.903, -56.062, 460.446, 0, 6, 0}, -- turn around + {-512.689, -55.288, 458.727, 0, 0, 0}, + {-500.167, -56.026, 442.085, 0, 0, 0}, + {-500.491, -56.068, 438.456, 0, 0, 0}, + {-500.953, -48.242, 413.020, 0, 0, 0}, + {-498.518, -45.884, 379.914, 0, 0, 0}, + {-499.674, -45.848, 347.074, 0, 0, 0}, + {-492.519, -45.757, 339.435, 0, 0, 0}, + {-464.066, -45.850, 337.503, 0, 0, 0}, + {-435.300, -45.968, 339.535, 0, 0, 0}, + {-396.169, -46.050, 340.124, 0, 0, 0}, + {-384.022, -45.855, 337.544, 0, 0, 0}, + {-358.888, -46.031, 339.800, 0, 0, 0}, + {-355.982, -45.395, 341.071, 0, 0, 0}, + {-348.172, -45.080, 344.165, 0, 0, 0}, + {-339.992, -46.007, 361.500, 0, 0, 0}, + {-338.668, -45.239, 367.705, 0, 0, 0}, + {-321.987, -46.089, 380.283, 0, 0, 0}, + {-311.895, -47.021, 379.100, 0, 0, 0}, + {-303.025, -49.933, 383.492, 0, 0, 0}, + {-282.237, -56.083, 380.621, 0, 0, 0}, + {-259.700, -55.891, 378.431, 0, 0, 0}, + {-219.150, -57.225, 379.947, 0, 0, 0}, + {-203.815, -59.897, 381.545, 0, 0, 0}, + {-184.176, -61.500, 382.600, 0, 0, 0}, + {-178.300, -61.500, 382.313, ID.text.PALCOMONDAU_REPORT, 4, ID.npc.GACHEMAGE}, + {-184.176, -61.500, 382.600, 0, 0, 0}, } function onSpawn(npc) - npc:initNpcAi() - npc:setPos(tpz.path.first(path)) + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) onPath(npc) end function onPath(npc) - if npc:atPoint(tpz.path.get(path, 45)) then - GetNPCByID(npc:getID() + 3):showText(npc, ID.text.PALCOMONDAU_REPORT) - -- small delay after path finish - npc:wait(8000) - end - - tpz.path.patrol(npc, path) + tpz.path.advancedPath(npc, path, false) end function onTrade(player, npc, trade) end function onTrigger(player, npc) - player:showText(npc, ID.text.PALCOMONDAU_DIALOG) - --npc:wait(1500) + npc:showText(npc, ID.text.PALCOMONDAU_DIALOG) + npc:clearTargID() end function onEventUpdate(player, csid, option) diff --git a/scripts/zones/West_Ronfaure/npcs/Zovriace.lua b/scripts/zones/West_Ronfaure/npcs/Zovriace.lua index 7a4223ace4c..dd269a65043 100644 --- a/scripts/zones/West_Ronfaure/npcs/Zovriace.lua +++ b/scripts/zones/West_Ronfaure/npcs/Zovriace.lua @@ -6,1017 +6,1012 @@ ----------------------------------- local ID = require("scripts/zones/West_Ronfaure/IDs") require("scripts/globals/pathfind") +require("scripts/globals/utils") ----------------------------------- local path = { - -439.970062, -16.752592, -255.100327, - -440.602631, -16.538126, -255.958786, - -441.127228, -16.394150, -256.900909, - -441.494019, -16.267317, -257.915710, - -441.581543, -16.133537, -258.985992, - -441.024231, -16.028330, -259.826294, - -439.954132, -16.028715, -259.822601, - -438.925629, -16.072157, -259.474915, - -437.941528, -16.180017, -259.014008, - -437.021820, -15.868464, -258.524048, - -436.108673, -15.583454, -258.000946, - -435.179413, -15.400028, -257.455811, - -432.864655, -15.075329, -256.065369, - -423.557495, -14.982476, -250.437790, - -422.761383, -15.055836, -249.708817, - -422.268677, -15.117037, -248.744232, - -421.972382, -15.198636, -247.701523, - -421.776733, -15.333975, -246.640106, - -421.618866, -15.467649, -245.572189, - -421.478943, -15.717875, -244.517334, - -421.351807, -15.921570, -243.463135, - -421.186218, -16.198463, -241.860138, - -421.114075, -16.145809, -240.774628, - -421.063721, -16.139482, -239.687912, - -420.994019, -16.130768, -237.785126, - -420.230377, -15.989685, -211.979935, - -420.197784, -15.922558, -210.893448, - -420.124512, -15.798100, -207.772995, - -420.100586, -15.813488, -206.552765, - -419.909180, -16.017889, -199.219910, - -420.047943, -16.120964, -198.143524, - -420.387573, -15.748003, -197.158432, - -420.822083, -15.460172, -196.220764, - -421.321320, -15.238870, -195.271896, - -421.853363, -15.129681, -194.327469, - -423.947327, -15.024358, -190.672211, - -427.640472, -14.942602, -184.327072, - -428.275848, -15.015442, -183.448257, - -428.993866, -15.115380, -182.637329, - -429.774628, -15.196917, -181.884567, - -430.584961, -15.269184, -181.162048, - -431.407013, -15.339080, -180.452606, - -432.945740, -15.590717, -179.147598, - -446.838165, -18.853514, -167.615036, - -447.872925, -18.977230, -166.740967, - -450.464325, -19.402002, -164.580673, - -451.186340, -19.500000, -163.781158, - -451.724823, -19.500000, -162.836929, - -452.156342, -19.526083, -161.839020, - -452.542633, -19.574369, -160.823151, - -452.902069, -19.619282, -159.797119, - -453.247406, -19.652224, -158.765945, - -454.379395, -19.973661, -155.298203, - -455.345062, -20.866318, -152.299789, - -455.671997, -20.945515, -151.285309, - -456.993286, -21.072395, -147.165604, - -457.321960, -21.268314, -146.147049, - -460.919006, -21.558647, -134.955734, - -461.252441, -21.516457, -133.920914, - -463.684235, -20.974045, -126.322334, - -463.735504, -21.005585, -125.238617, - -463.618225, -21.100723, -124.159538, - -463.476532, -21.130386, -123.083138, - -460.845245, -21.814005, -103.009911, - -460.340668, -21.860525, -102.053253, - -459.548370, -21.859089, -101.316696, - -458.651062, -21.799015, -100.705299, - -457.715729, -21.738424, -100.153778, - -456.764191, -21.662802, -99.631622, - -455.801666, -21.716837, -99.128433, - -452.543488, -21.461651, -97.451981, - -427.263428, -19.779127, -84.644547, - -426.292938, -19.805960, -84.153252, - -424.000397, -20.058718, -82.994804, - -423.030975, -19.983002, -82.507225, - -396.179047, -20.642097, -68.915520, - -395.230957, -20.758915, -68.394829, - -394.369598, -20.974821, -67.755898, - -393.589478, -21.246567, -67.048546, - -392.859406, -21.419449, -66.273178, - -392.153625, -21.557785, -65.456947, - -391.468964, -21.778866, -64.640053, - -390.559631, -22.323750, -63.552891, - -389.849030, -22.824114, -62.691097, - -387.739929, -24.336773, -60.088634, - -387.035553, -24.853951, -59.230145, - -386.339355, -25.370905, -58.366211, - -385.651886, -26.125864, -57.510376, - -385.033325, -27.045774, -56.701607, - -384.452972, -27.587692, -55.817024, - -383.951385, -27.987345, -54.938370, - -383.386536, -28.294943, -53.910427, - -382.906982, -28.606924, -52.984940, - -382.409454, -28.917976, -52.069004, - -381.867371, -29.025024, -51.137131, - -381.301788, -29.172449, -50.219383, - -380.727570, -29.320223, -49.307129, - -364.454529, -30.016165, -24.085087, - -354.090363, -29.671881, -8.006002, - -353.540497, -29.834528, -7.080005, - -353.008911, -30.037712, -6.150451, - -351.508148, -30.500000, -3.461302, - -344.298309, -31.130165, 9.622360, - -343.719788, -31.229996, 10.534849, - -343.014465, -31.336742, 11.354795, - -342.196075, -31.448938, 12.062510, - -341.337769, -31.562546, 12.721281, - -340.463776, -31.676613, 13.359138, - -339.578003, -31.747307, 13.983932, - -338.684845, -31.777473, 14.604170, - -331.282471, -31.493895, 19.661541, - -330.308228, -31.447271, 20.141212, - -329.288361, -31.455376, 20.518837, - -328.249207, -31.395697, 20.818035, - -327.199799, -31.337658, 21.087675, - -326.141876, -31.381889, 21.338877, - -325.082703, -31.432835, 21.581512, - -320.835022, -31.395533, 22.525442, - -319.773651, -31.337238, 22.757223, - -316.724976, -31.168060, 23.434225, - -315.697601, -31.067081, 23.774858, - -314.713531, -31.001366, 24.234629, - -313.761444, -30.953598, 24.758646, - -312.835083, -30.887995, 25.325043, - -311.918732, -30.789017, 25.902380, - -310.216614, -30.826614, 27.010038, - -307.517303, -31.226393, 28.788122, - -306.582703, -31.154129, 29.342878, - -305.625275, -31.055418, 29.852215, - -304.660309, -30.967735, 30.347439, - -303.691956, -30.867880, 30.831894, - -301.273224, -30.522186, 32.021267, - -300.325226, -30.253407, 32.488640, - -297.896606, -29.961315, 33.678493, - -296.921356, -29.980268, 34.155445, - -283.175232, -30.000000, 40.879360, - -282.197723, -30.000000, 41.357021, - -273.907654, -30.223761, 45.435520, - -273.112213, -30.613419, 46.087021, - -272.551117, -31.027349, 46.919304, - -272.154144, -31.419172, 47.850975, - -271.860565, -31.801704, 48.831139, - -271.583862, -32.090355, 49.799915, - -271.340332, -32.425247, 50.806000, - -270.992645, -32.844288, 52.328403, - -269.161621, -35.016342, 60.795799, - -268.899292, -35.537270, 62.046036, - -267.436157, -38.003387, 68.796013, - -267.218933, -38.403229, 69.785110, - -266.716248, -39.181328, 72.162575, - -266.646820, -39.236248, 73.245872, - -266.741486, -39.305218, 74.326553, - -266.943451, -39.503807, 75.379707, - -267.198029, -39.606842, 76.420052, - -267.467224, -39.573181, 77.473747, - -267.751343, -39.537670, 78.523438, - -269.489166, -39.688145, 84.654762, - -269.779968, -39.940563, 85.672394, - -270.407593, -40.357700, 87.859993, - -270.701263, -40.217247, 88.897224, - -271.803741, -39.582218, 92.765701, - -272.103394, -39.621971, 93.822968, - -274.938629, -40.094635, 103.757698, - -275.234436, -39.950058, 104.796463, - -278.316315, -39.956299, 115.598122, - -278.657959, -40.000000, 116.626968, - -279.067108, -40.000000, 117.634903, - -279.518555, -40.000000, 118.624847, - -279.993774, -40.000000, 119.603645, - -280.484222, -40.000000, 120.574821, - -280.980164, -40.000000, 121.543243, - -286.929169, -39.008667, 132.941757, - -287.430420, -38.897781, 133.901459, - -287.937683, -38.781601, 134.856888, - -288.510773, -38.692963, 135.778198, - -289.157349, -38.665531, 136.652649, - -289.833923, -38.639122, 137.504150, - -290.523529, -38.604607, 138.344910, - -291.396698, -38.552856, 139.386200, - -300.068176, -35.596138, 149.616638, - -300.450134, -35.417088, 150.612869, - -300.480957, -35.302635, 151.691971, - -300.363770, -35.374798, 152.765915, - -300.181000, -35.526699, 153.827637, - -299.967926, -35.682739, 154.883087, - -299.740814, -35.856140, 155.933807, - -299.166321, -36.110737, 158.434998, - -297.842926, -36.519508, 164.110306, - -297.711517, -36.728516, 165.169052, - -297.791962, -36.897087, 166.237534, - -298.034912, -37.036209, 167.288712, - -298.354279, -37.162457, 168.321182, - -298.708008, -37.283379, 169.343033, - -299.123047, -37.480621, 170.478378, - -299.870880, -38.047672, 172.461945, - -300.458160, -38.762894, 173.968826, - -301.121552, -39.588573, 175.707932, - -301.488495, -39.880459, 176.703125, - -301.741180, -40.187134, 177.714966, - -301.840820, -40.504196, 178.748749, - -301.855133, -40.822124, 179.788849, - -301.822845, -41.188747, 180.817581, - -301.758820, -41.552467, 181.840881, - -301.682739, -41.920956, 182.862518, - -301.407043, -42.825760, 186.114990, - -300.501160, -45.446545, 196.063461, - -300.327515, -45.781693, 197.086868, - -300.107330, -46.023857, 198.101761, - -299.892059, -46.020031, 199.202560, - -299.658722, -46.049198, 200.264832, - -299.083496, -45.989109, 202.775665, - -298.839966, -45.840462, 203.825668, - -298.599335, -45.612335, 204.856720, - -297.294495, -45.038647, 210.384552, - -296.802460, -45.031513, 211.348297, - -296.003754, -44.947575, 212.076996, - -295.089417, -44.939152, 212.665131, - -294.132080, -44.971771, 213.180725, - -293.159241, -45.004112, 213.666809, - -292.177643, -45.043068, 214.134933, - -290.945007, -45.035225, 214.709396, - -282.860168, -45.922268, 218.423615, - -281.928314, -46.162800, 218.882782, - -280.925964, -46.093803, 219.302551, - -279.942993, -46.035995, 219.765259, - -278.976990, -46.039272, 220.261993, - -278.019318, -46.126381, 220.774200, - -276.532257, -45.679039, 221.595612, - -273.266785, -45.098358, 223.469131, - -272.324432, -45.015408, 224.010422, - -268.550629, -45.024551, 226.176529, - -267.745361, -45.022247, 226.900223, - -267.117981, -44.979355, 227.787445, - -266.573853, -44.975834, 228.729248, - -266.066772, -44.982010, 229.691788, - -265.576538, -45.041542, 230.663071, - -265.079071, -45.163151, 231.627274, - -264.597351, -45.264587, 232.595947, - -264.152435, -45.446598, 233.563171, - -263.697998, -45.680012, 234.523819, - -262.016174, -46.281578, 238.029846, - -261.556702, -46.201237, 239.014328, - -256.600128, -45.025234, 249.377197, - -255.970734, -44.957794, 250.260529, - -255.212357, -44.939751, 251.038193, - -254.386093, -44.945457, 251.745514, - -253.526093, -44.969048, 252.411560, - -252.652176, -45.002594, 253.058823, - -251.770966, -45.036087, 253.696213, - -244.441742, -45.275829, 258.863953, - -243.505188, -45.542328, 259.357666, - -242.523361, -45.906620, 259.648193, - -241.460144, -46.028633, 259.823212, - -240.374603, -46.019741, 259.894318, - -239.287964, -46.013302, 259.945831, - -238.200699, -46.008728, 259.982391, - -235.359665, -46.299160, 260.041962, - -231.212814, -47.047096, 260.111084, - -228.414734, -47.613140, 260.165649, - -227.395874, -48.089172, 260.184479, - -225.697647, -48.950203, 260.216675, - -224.363464, -49.629337, 260.239838, - -223.352081, -49.953148, 260.253906, - -216.001205, -52.412048, 260.375458, - -214.947723, -52.636997, 260.390472, - -204.417313, -55.326168, 260.560699, - -203.368652, -55.655231, 260.576294, - -202.049591, -56.112896, 260.577698, - -200.935196, -56.080486, 260.591614, - -184.915848, -56.834442, 260.617188, - -183.857697, -57.100548, 260.594025, - -182.771301, -57.095242, 260.613068, - -181.551437, -57.195465, 260.611603, - -180.467743, -57.268650, 260.554718, - -179.388474, -57.235741, 260.443207, - -178.313416, -57.323948, 260.301849, - -177.240799, -57.410061, 260.141052, - -175.639709, -57.602425, 259.888031, - -153.454758, -59.971466, 256.230652, - -152.371017, -59.941368, 256.202332, - -151.338013, -59.899998, 256.526245, - -150.409531, -59.899998, 257.091797, - -149.546631, -59.905708, 257.754150, - -148.712616, -59.944000, 258.451752, - -147.891266, -59.982349, 259.164490, - -147.077164, -59.987167, 259.886108, - -145.559814, -59.996250, 261.249481, - -135.296967, -61.920395, 270.550049, -- report? - -136.090424, -61.731232, 269.830048, - -136.884094, -61.542065, 269.110352, - -150.086914, -59.899998, 257.147797, - -151.020218, -59.899998, 256.592834, - -152.073257, -59.902092, 256.345337, - -153.159882, -59.929256, 256.347260, - -154.243652, -59.956352, 256.436890, - -155.322754, -59.991856, 256.572998, - -156.398727, -59.956062, 256.729126, - -158.145386, -59.938908, 257.003632, - -178.976608, -57.275406, 260.436218, - -180.056641, -57.302162, 260.523682, - -181.140915, -57.218544, 260.571320, - -182.225555, -57.135334, 260.593964, - -183.310730, -57.070732, 260.604950, - -184.389069, -56.970604, 260.592346, - -185.446976, -56.699245, 260.612305, - -186.534317, -56.616566, 260.619019, - -188.029251, -56.562798, 260.618652, - -207.543884, -54.695351, 260.506195, - -208.593231, -54.421879, 260.490112, - -227.786392, -47.844944, 260.176392, - -228.828674, -47.528126, 260.161072, - -230.026764, -47.278732, 260.139496, - -234.035889, -46.541107, 260.063751, - -240.660934, -46.011520, 259.960083, - -241.744278, -46.169971, 259.869843, - -242.749298, -45.785637, 259.621307, - -243.688675, -45.496006, 259.184814, - -244.613403, -45.269833, 258.647064, - -245.518509, -45.137951, 258.052887, - -246.419617, -45.087288, 257.445129, - -247.315887, -45.036938, 256.830475, - -249.769028, -45.024799, 255.119431, - -254.651855, -44.940964, 251.663010, - -255.433929, -44.937099, 250.909637, - -256.076324, -44.971489, 250.033737, - -256.635040, -45.035885, 249.102524, - -257.142975, -45.097923, 248.142441, - -257.629761, -45.233803, 247.177734, - -258.461090, -45.483078, 245.483109, - -259.049194, -45.740898, 244.276123, - -259.516541, -45.851563, 243.307846, - -264.719360, -45.247227, 232.364548, - -265.227234, -45.105091, 231.261398, - -265.719788, -44.985176, 230.292435, - -266.195129, -44.977989, 229.313889, - -266.685333, -44.971275, 228.342972, - -267.309906, -44.990795, 227.454300, - -268.097290, -45.024536, 226.706238, - -268.976410, -45.019974, 226.065643, - -269.888763, -45.017735, 225.473099, - -270.818024, -45.019180, 224.907379, - -271.753998, -45.000942, 224.352997, - -273.165039, -45.084061, 223.535965, - -274.098724, -45.217224, 222.991837, - -275.034912, -45.352219, 222.454132, - -276.433075, -45.645039, 221.653473, - -278.282349, -46.227036, 220.580002, - -279.259583, -46.019772, 220.105209, - -280.239838, -46.051945, 219.636856, - -281.715057, -46.138523, 218.944061, - -295.072144, -44.942986, 212.826477, - -295.975891, -44.965645, 212.229233, - -296.626495, -44.995678, 211.363297, - -297.092560, -45.025742, 210.383209, - -297.438629, -45.079567, 209.353546, - -297.736084, -45.130760, 208.308319, - -298.005737, -45.248287, 207.260376, - -298.264038, -45.386070, 206.212494, - -299.041473, -45.962364, 202.959167, - -299.294495, -46.129169, 201.913116, - -299.533417, -46.064907, 200.852234, - -299.778412, -46.034283, 199.792679, - -300.021393, -46.009171, 198.732605, - -300.230682, -45.949970, 197.678162, - -300.387177, -45.645302, 196.654877, - -300.517700, -45.328785, 195.618057, - -300.631744, -45.131599, 194.554199, - -300.736755, -44.933083, 193.489655, - -301.916626, -41.039673, 180.393494, - -301.952759, -40.689056, 179.362061, - -301.844147, -40.380367, 178.326706, - -301.584625, -40.074371, 177.315918, - -301.265717, -39.777336, 176.319107, - -300.939575, -39.442776, 175.363297, - -300.565338, -38.942703, 174.325500, - -300.181183, -38.417553, 173.289810, - -299.740601, -37.873989, 172.134750, - -299.364197, -37.599380, 171.148911, - -298.786713, -37.338978, 169.644882, - -298.402985, -37.208858, 168.635559, - -298.027802, -37.092781, 167.620956, - -297.779541, -36.955162, 166.573044, - -297.768494, -36.779991, 165.501678, - -297.893860, -36.572292, 164.441559, - -298.075348, -36.378498, 163.386337, - -298.291718, -36.245903, 162.328415, - -298.523804, -36.191105, 161.267609, - -299.099976, -36.119068, 158.749771, - -300.622803, -35.272141, 152.185272, - -300.546265, -35.356747, 151.112457, - -300.139984, -35.533932, 150.124802, - -299.563080, -35.738934, 149.226395, - -298.926300, -35.974628, 148.366928, - -298.292847, -36.369488, 147.566315, - -297.652222, -36.771412, 146.784256, - -296.598267, -37.424564, 145.524170, - -289.386353, -38.662991, 137.017761, - -288.751190, -38.680820, 136.135315, - -288.184235, -38.716503, 135.207581, - -287.656708, -38.841850, 134.261246, - -286.957916, -39.001762, 132.948334, - -286.436218, -38.979378, 131.993698, - -285.933044, -39.086742, 131.035538, - -279.544037, -40.000000, 118.786339, - -279.095001, -40.000000, 117.795532, - -278.723389, -40.000000, 116.773209, - -278.390717, -40.000000, 115.739441, - -278.077759, -39.844975, 114.705635, - -277.060913, -39.500000, 111.198402, - -271.665955, -39.568001, 92.294022, - -271.258362, -39.819828, 90.879639, - -269.650452, -39.829777, 85.218178, - -269.097565, -39.500000, 83.293137, - -266.809784, -39.475517, 75.200165, - -266.649567, -39.287212, 74.141655, - -266.706604, -39.230602, 73.057381, - -266.841522, -39.182301, 71.979034, - -267.013214, -38.883488, 70.972496, - -267.203888, -38.458267, 69.986374, - -267.405945, -38.092369, 68.997025, - -267.967316, -37.205059, 66.336739, - -269.169342, -35.011940, 60.768829, - -269.416901, -34.755840, 59.608253, - -271.049866, -32.833099, 52.036350, - -271.266663, -32.500420, 51.020298, - -271.939880, -31.580200, 47.963612, - -272.323029, -31.133356, 47.024605, - -273.091705, -30.631182, 46.207066, - -273.918060, -30.234310, 45.609779, - -274.847778, -30.141161, 45.052742, - -275.801636, -30.049332, 44.537346, - -276.767395, -30.004099, 44.039276, - -277.740051, -30.000000, 43.551609, - -295.029419, -30.001234, 35.084103, - -296.004395, -30.028824, 34.606136, - -298.320343, -30.011620, 33.472553, - -299.292633, -30.127960, 32.998138, - -300.744598, -30.420561, 32.287434, - -301.822388, -30.660269, 31.766117, - -305.449860, -31.039577, 29.961134, - -306.393860, -31.150333, 29.427002, - -307.322937, -31.208359, 28.864517, - -308.242828, -31.225145, 28.287502, - -309.370667, -30.999538, 27.554298, - -313.548218, -30.951408, 24.807213, - -314.496948, -30.999880, 24.278208, - -315.499756, -31.051682, 23.858809, - -316.537872, -31.154470, 23.544914, - -317.590332, -31.206734, 23.277721, - -318.646790, -31.269846, 23.025274, - -319.705627, -31.330627, 22.782150, - -328.585144, -31.461010, 20.809793, - -329.604736, -31.452932, 20.447485, - -330.576935, -31.458323, 19.959888, - -331.516846, -31.525490, 19.415882, - -332.434601, -31.586788, 18.835255, - -333.342133, -31.637566, 18.237196, - -334.808746, -31.720680, 17.253775, - -341.755096, -31.512569, 12.505347, - -342.587311, -31.399881, 11.814846, - -343.284424, -31.293304, 10.987100, - -343.903748, -31.204266, 10.098687, - -344.476776, -31.068769, 9.182813, - -345.021790, -30.936897, 8.250527, - -345.557404, -30.848867, 7.308527, - -346.944550, -30.665789, 4.819434, - -352.769531, -30.134678, -5.750056, - -353.430542, -29.865831, -6.908241, - -353.990356, -29.703238, -7.826676, - -354.571625, -29.606535, -8.750077, - -359.278839, -30.020227, -16.060516, - -359.865417, -29.940750, -16.974663, - -366.939056, -29.873177, -27.931231, - -367.528503, -29.888115, -28.845236, - -376.512451, -29.969620, -42.758610, - -377.103638, -29.932671, -43.671219, - -381.560516, -29.108587, -50.606083, - -382.097595, -28.962421, -51.540813, - -382.600891, -28.786295, -52.479153, - -383.076721, -28.473091, -53.406521, - -383.741272, -28.044344, -54.676407, - -384.273438, -27.694052, -55.554253, - -384.877289, -27.241680, -56.411148, - -385.524475, -26.414268, -57.283955, - -386.158508, -25.591860, -58.105274, - -386.828674, -24.977655, -58.949734, - -390.529175, -22.315744, -63.529224, - -392.262146, -21.522633, -65.653603, - -392.948425, -21.380217, -66.485573, - -393.689911, -21.182203, -67.244202, - -394.540680, -20.930220, -67.872482, - -395.454437, -20.739042, -68.440071, - -396.398987, -20.635540, -68.968857, - -397.357697, -20.571712, -69.479454, - -398.320526, -20.508863, -69.982239, - -400.858337, -20.346436, -71.281647, - -416.078491, -20.016394, -78.992798, - -417.048981, -19.936098, -79.480896, - -427.943085, -19.760998, -84.990929, - -428.913177, -19.807173, -85.480782, - -432.057404, -20.048246, -87.078934, - -433.018707, -20.206867, -87.563354, - -434.463531, -20.382471, -88.293999, - -435.430756, -20.458065, -88.786209, - -452.483673, -21.459229, -97.418785, - -453.453613, -21.498474, -97.910263, - -455.629822, -21.682997, -99.016502, - -456.597382, -21.676950, -99.507576, - -459.140961, -21.836069, -100.792534, - -459.946869, -21.893318, -101.510696, - -460.448151, -21.846874, -102.472565, - -460.755463, -21.810520, -103.514992, - -460.974854, -21.743179, -104.577850, - -461.155731, -21.659788, -105.647171, - -461.317200, -21.591896, -106.720940, - -461.468292, -21.524906, -107.796364, - -463.602295, -21.103918, -124.129204, - -463.619171, -21.024265, -125.213806, - -463.478882, -21.006443, -126.292236, - -463.249878, -21.002714, -127.355629, - -462.966309, -21.089417, -128.399185, - -462.668304, -21.285374, -129.427078, - -462.235779, -21.446602, -130.840286, - -460.657928, -21.688395, -135.754669, - -460.330139, -21.662376, -136.789734, - -455.015533, -20.520708, -153.317886, - -454.692139, -20.245014, -154.319489, - -452.376251, -19.553642, -161.505966, - -451.983276, -19.504547, -162.518814, - -451.383820, -19.500000, -163.425491, - -450.662170, -19.500000, -164.235107, - -449.881348, -19.324495, -164.978180, - -449.075256, -19.183504, -165.695129, - -448.256256, -19.045288, -166.398026, - -447.224274, -18.874338, -167.267380, - -446.393372, -18.880678, -167.969147, - -444.853027, -18.565512, -169.265442, - -429.819672, -15.220426, -181.753754, - -429.047333, -15.136473, -182.514877, - -428.378082, -15.023755, -183.364578, - -427.766907, -14.929929, -184.258438, - -427.184479, -14.948370, -185.176834, - -426.620789, -14.981401, -186.106918, - -420.939972, -15.316271, -195.861465, - -420.463104, -15.644215, -196.799393, - -420.179413, -15.996948, -197.782822, - -420.054016, -16.013285, -198.776382, - -420.006409, -16.007343, -199.863220, - -419.994202, -16.007246, -200.951035, - -420.002808, -16.006878, -202.039001, - -420.028076, -16.012650, -203.534683, - -420.136383, -15.819376, -208.158340, - -420.158417, -15.863979, -209.517258, - -420.217560, -15.970049, -212.114258, - -420.270721, -15.849182, -213.198792, - -420.324890, -15.797634, -214.692932, - -420.826080, -15.902279, -232.085022, - -420.854614, -15.979057, -233.178070, - -421.049957, -16.137796, -239.834213, - -421.117493, -16.146238, -240.920044, - -421.206573, -16.172615, -242.004349, - -421.315979, -15.984070, -243.070419, - -421.494659, -15.643467, -244.787292, - -421.819092, -15.221020, -247.595215, - -422.154602, -15.128119, -248.622253, - -422.758545, -15.061894, -249.519104, - -423.569183, -14.987906, -250.238434, - -424.447510, -14.935026, -250.876724, - -425.353729, -14.944465, -251.478790, - -426.272919, -14.957020, -252.060471, - -427.197968, -14.990112, -252.632385, - -435.669800, -15.466051, -257.761230, - -436.582245, -15.703817, -258.315826, - -437.807831, -16.083422, -259.079224, - -438.774384, -16.063610, -259.543793, - -439.841156, -16.037457, -259.752838, - -440.927063, -16.028862, -259.821381, - -442.012054, -16.065359, -259.827911, - -443.029694, -15.716091, -259.796082, - -444.055817, -15.340240, -259.815460, - -445.097931, -15.219767, -260.104065, - -446.074341, -15.110579, -260.570770, - -447.027344, -15.057332, -261.092285, - -447.959381, -15.005149, -261.650909, - -448.870300, -15.018632, -262.244598, - -452.834351, -15.055134, -264.874695, - -453.655518, -15.037918, -265.585449, - -454.313416, -14.975594, -266.448151, - -454.843811, -14.943377, -267.396851, - -455.317291, -14.926654, -268.376190, - -455.755920, -14.934984, -269.371826, - -456.179169, -14.990575, -270.372711, - -458.718781, -15.924042, -276.598358, - -459.454010, -16.074858, -278.487640, - -459.765564, -16.035896, -279.529297, - -460.018890, -16.008865, -280.586884, - -460.219788, -16.034010, -281.655853, - -460.388611, -15.869349, -282.697662, - -460.631561, -15.373913, -284.238556, - -463.079895, -10.491953, -301.043823, - -463.087708, -10.158780, -302.077850, - -462.960846, -9.836479, -303.109039, - -462.774170, -9.560242, -304.125580, - -462.522583, -8.986555, -305.196259, - -462.273163, -8.643255, -306.190765, - -462.021210, -8.278727, -307.184570, - -460.034760, -6.387301, -314.867249, - -459.871155, -6.200213, -315.926605, - -459.784912, -6.106617, -317.006958, - -459.729767, -6.040372, -318.091217, - -459.694733, -6.044695, -319.178589, - -459.585297, -6.053058, -324.342834, - -459.546967, -5.772733, -326.638885, - -459.503937, -5.646238, -328.802887, - -459.475159, -5.742835, -330.568115, - -459.458099, -5.785998, -331.654663, - -459.434814, -5.762313, -332.741577, - -459.407196, -5.823767, -334.235260, - -459.388367, -5.885840, -335.321259, - -459.238617, -5.855601, -343.748810, - -459.212708, -5.653573, -345.233765, - -459.171204, -5.405949, -347.661652, - -459.148193, -5.488004, -349.155365, - -459.102081, -5.651767, -351.733948, - -459.078918, -5.694240, -352.820526, - -459.029205, -6.086042, -355.647919, - -459.029083, -6.127892, -356.731750, - -459.140869, -6.113956, -357.812897, - -459.383789, -6.083621, -358.872314, - -459.727936, -6.040620, -359.903625, - -460.125519, -6.022241, -360.915192, - -460.547241, -6.109803, -361.916656, - -460.983124, -5.974494, -362.906189, - -461.694427, -5.748822, -364.503021, - -464.664276, -4.937500, -371.008911, - -465.236359, -4.933529, -371.931122, - -466.029266, -4.964595, -372.673553, - -466.928986, -4.997910, -373.282715, - -467.884674, -5.034942, -373.801270, - -468.857971, -5.029415, -374.286438, - -469.843262, -5.023180, -374.747375, - -470.833405, -5.019099, -375.197601, - -472.694275, -5.035691, -376.029572, - -473.677887, -5.200471, -376.472137, - -474.661591, -5.361502, -376.908600, - -476.374115, -5.724977, -377.667419, - -477.943665, -6.254426, -378.389740, - -478.940887, -6.155789, -378.806549, - -479.933899, -6.100767, -379.246948, - -480.918152, -6.043252, -379.707092, - -481.900665, -6.081943, -380.169891, - -484.013855, -5.418111, -381.186493, - -491.435669, -5.052667, -384.848053, - -492.353546, -5.041574, -385.430573, - -493.202301, -5.007907, -386.109772, - -493.992279, -4.974132, -386.856659, - -494.756409, -4.940371, -387.630280, - -495.507080, -4.923118, -388.417175, - -496.431793, -4.977174, -389.412140, - -497.107117, -5.046514, -390.261566, - -497.657043, -5.110490, -391.197357, - -498.112122, -5.190608, -392.182343, - -498.507446, -5.332036, -393.186005, - -498.873962, -5.472911, -394.200806, - -499.234314, -5.613681, -395.218109, - -499.678253, -5.800858, -396.489166, - -500.778503, -6.103849, -399.830353, - -501.068237, -6.140066, -400.878174, - -501.285126, -6.187640, -401.943726, - -501.455048, -5.907662, -402.972321, - -501.603912, -5.583361, -404.001343, - -501.743408, -5.360402, -405.062927, - -502.090485, -4.776625, -407.835724, - -503.105774, -2.217786, -416.217438, - -503.239807, -1.832487, -417.352051, - -503.333099, -1.481157, -418.377258, - -503.423798, -1.100163, -419.395477, - -503.386627, -0.703467, -420.402710, - -503.246399, -0.351263, -421.441803, - -502.988159, -0.045092, -422.453247, - -502.687469, 0.254894, -423.455109, - -502.373627, 0.594657, -424.430695, - -502.022430, 1.109420, -425.470734, - -501.691040, 1.542306, -426.415924, - -499.392395, 3.206969, -433.018402, - -499.253448, 3.375491, -434.080170, - -499.522461, 3.599207, -435.105164, - -500.032349, 3.822114, -436.033020, - -500.653107, 3.809904, -436.925049, - -501.312653, 3.793942, -437.789276, - -501.987488, 3.745028, -438.639038, - -503.010254, 3.617167, -439.904755, - -504.546265, 3.195670, -441.791504, - -505.474762, 3.454881, -442.943634, - -506.260468, 3.535620, -443.878723, - -506.956055, 3.542965, -444.714844, - -508.938232, 3.486761, -447.139069, - -509.594696, 3.471608, -448.007050, - -510.234344, 3.489084, -448.886902, - -512.427246, 3.586239, -451.998352, - -513.936096, 3.984726, -454.195862, - -514.540894, 4.233383, -455.064941, - -515.166321, 4.378668, -455.945282, - -516.262939, 4.290412, -457.499878, - -516.891174, 4.174067, -458.381256, - -517.627136, 3.970321, -459.154846, - -518.497131, 3.965434, -459.776428, - -519.472900, 3.961867, -460.252655, - -520.468811, 3.907594, -460.686981, - -521.475464, 3.856341, -461.097015, - -522.467651, 3.899534, -461.479309, - -523.431274, 4.273953, -461.837158, - -532.930542, 4.970236, -465.372864, - -533.836426, 5.003310, -465.964172, - -534.517090, 5.036720, -466.809723, - -535.063843, 5.069100, -467.748749, - -535.532227, 5.071708, -468.730682, - -535.968689, 5.042767, -469.726746, - -536.385559, 4.985219, -470.730225, - -536.996216, 4.874025, -472.240662, - -538.487976, 4.135559, -475.968048, - -538.877197, 4.030794, -476.973175, - -539.262268, 3.887287, -477.981995, - -539.575439, 3.940336, -479.021515, - -539.779053, 3.965811, -480.089569, - -539.916809, 3.983058, -481.168549, - -540.027405, 3.990070, -482.250732, - -540.122314, 3.997955, -483.334686, - -540.210938, 3.984653, -484.419312, - -541.090576, 3.211054, -496.324768, - -541.168152, 3.029897, -497.395050, - -541.225708, 2.852559, -498.466858, - -541.208801, 2.688696, -499.542267, - -541.137390, 2.576481, -500.620575, - -541.029846, 2.491427, -501.699982, - -540.901306, 2.387329, -502.777466, - -540.700256, 2.348901, -504.390961, - -539.072510, 0.190201, -516.318054, - -538.841309, 0.175944, -517.380859, - -538.530579, 0.156524, -518.422974, - -538.178406, 0.134513, -519.452148, - -537.805481, 0.111208, -520.473999, - -537.424194, 0.087378, -521.492676, - -536.306885, 0.056635, -524.412842, - -533.919128, 0.072274, -530.589355, - -534.307983, 0.225401, -529.584229, - -534.697571, 0.361172, -528.577515, - -538.121399, 0.130942, -519.723328, - -538.474670, 0.153023, -518.694641, - -538.752563, 0.170393, -517.643005, - -538.969421, 0.183949, -516.577148, - -539.157410, 0.272568, -515.513428, - -539.318237, 0.485071, -514.458435, - -539.542297, 0.803161, -512.873474, - -539.692932, 0.970816, -511.811584, - -539.838379, 1.181126, -510.753571, - -540.765686, 2.421811, -503.992981, - -540.907532, 2.391479, -502.915649, - -541.162781, 2.543372, -500.897217, - -541.213013, 2.639980, -499.816193, - -541.198853, 2.814182, -498.741730, - -541.153137, 2.989250, -497.668915, - -541.090637, 3.167528, -496.597382, - -540.901733, 3.472016, -493.766296, - -539.946655, 3.986804, -480.899536, - -539.758118, 3.963221, -479.829315, - -539.464539, 3.926524, -478.782715, - -539.127625, 3.884508, -477.750854, - -538.753662, 4.055820, -476.738281, - -538.086609, 4.375992, -474.991974, - -535.247925, 5.074961, -467.828430, - -534.701660, 5.041934, -466.858551, - -533.907593, 5.008235, -466.119568, - -532.972717, 4.975322, -465.566498, - -531.983582, 4.943339, -465.114624, - -530.979858, 4.951505, -464.695160, - -529.968079, 4.959478, -464.295441, - -528.951843, 4.983376, -463.907593, - -522.430969, 3.916511, -461.465240, - -521.404968, 3.857628, -461.086182, - -520.377686, 3.902210, -460.729462, - -519.369934, 3.953047, -460.322479, - -518.443848, 3.963709, -459.761841, - -517.644409, 3.968113, -459.040253, - -516.927307, 4.138369, -458.245422, - -516.257751, 4.275104, -457.397705, - -515.619324, 4.360233, -456.520050, - -514.989380, 4.372784, -455.633331, - -514.354065, 4.148522, -454.766449, - -513.569702, 3.888090, -453.690735, - -512.848206, 3.701035, -452.650909, - -512.268372, 3.550035, -451.781738, - -511.656403, 3.532558, -450.883881, - -510.565186, 3.495838, -449.323639, - -509.924683, 3.478686, -448.444824, - -509.263702, 3.481614, -447.580719, - -508.588806, 3.498191, -446.727631, - -507.732697, 3.521606, -445.671478, - -504.967285, 3.235765, -442.320770, - -504.184204, 3.426662, -441.405670, - -503.524536, 3.552731, -440.548615, - -502.838013, 3.638559, -439.709167, - -499.995270, 3.863406, -436.248932, - -499.458771, 3.631288, -435.332092, - -499.354584, 3.427225, -434.275543, - -499.518890, 3.263798, -433.213623, - -499.786255, 3.119409, -432.168945, - -500.093414, 2.942964, -431.138855, - -500.416901, 2.698143, -430.129211, - -500.756897, 2.452024, -429.125366, - -501.102753, 2.205250, -428.123657, - -501.993927, 1.130284, -425.598083, - -502.375153, 0.625838, -424.550262, - -502.760925, 0.259216, -423.439453, - -503.125061, -0.073914, -422.319733, - -503.344879, -0.434069, -421.301147, - -503.392548, -0.782053, -420.267029, - -503.345978, -1.156086, -419.237427, - -503.275909, -1.517113, -418.212494, - -503.200043, -1.875748, -417.190155, - -503.092529, -2.185827, -416.171051, - -501.571167, -5.735084, -403.501678, - -501.418823, -6.069547, -402.475281, - -501.176941, -6.153698, -401.405243, - -500.898254, -6.118875, -400.354431, - -500.586060, -6.079853, -399.313019, - -500.255157, -6.038494, -398.277283, - -499.919769, -5.917615, -397.250214, - -498.133850, -5.162109, -391.881653, - -497.607086, -5.099213, -390.933563, - -496.951874, -5.030679, -390.068451, - -496.247040, -4.960183, -389.242767, - -495.526642, -4.922899, -388.429321, - -494.798859, -4.939609, -387.620911, - -494.057587, -4.973323, -386.825287, - -493.242004, -5.007064, -386.107086, - -492.357513, -5.040519, -385.475281, - -491.422150, -5.050906, -384.920258, - -490.463867, -5.046978, -384.405090, - -489.496246, -5.027953, -383.907104, - -488.524017, -5.008810, -383.419098, - -483.903564, -5.444798, -381.144897, - -482.970856, -5.764278, -380.673676, - -482.046753, -6.081060, -380.195770, - -481.059265, -6.036974, -379.756531, - -480.068268, -6.092669, -379.310974, - -478.083740, -6.252785, -378.424103, - -475.939850, -5.600721, -377.478241, - -474.095123, -5.269806, -376.659973, - -472.988983, -5.088950, -376.167572, - -471.997314, -4.996942, -375.725739, - -467.519684, -5.021126, -373.745483, - -466.568787, -4.988472, -373.221497, - -465.785889, -4.954824, -372.473022, - -465.155731, -4.938012, -371.586975, - -464.613434, -4.943035, -370.644104, - -464.112732, -4.970317, -369.678741, - -463.636993, -5.030797, -368.702332, - -463.174835, -5.119479, -367.720856, - -462.721741, -5.261708, -366.742218, - -461.430298, -5.878856, -363.953918, - -460.990692, -5.964869, -362.965485, - -459.656555, -6.049467, -359.997162, - -459.353271, -6.087378, -358.954742, - -459.191864, -6.107553, -357.879517, - -459.106384, -6.118238, -356.795227, - -459.081055, -6.089601, -355.710297, - -459.074738, -5.935709, -354.633362, - -459.104004, -5.658697, -351.932465, - -459.120667, -5.591868, -350.846558, - -459.187042, -5.479144, -346.507324, - -459.430115, -5.749809, -332.941071, - -459.453735, -5.802073, -331.854553, - -459.471832, -5.754164, -330.767517, - -459.490845, -5.694329, -329.681580, - -459.512299, -5.627197, -328.459930, - -459.529968, -5.682715, -327.376678, - -459.596893, -6.022334, -323.863861, - -459.627655, -6.068361, -321.961487, - -459.653656, -6.049818, -320.465668, - -459.672607, -6.047450, -319.377808, - -459.690857, -6.045168, -318.289795, - -459.733826, -6.098748, -317.204376, - -459.866302, -6.163945, -316.126587, - -460.061859, -6.354894, -315.070129, - -460.284729, -6.588387, -314.031128, - -460.533112, -6.826213, -312.999054, - -460.823303, -7.095395, -311.840057, - -462.704620, -9.301330, -304.645416, - -462.954193, -9.692020, -303.546783, - -463.049988, -10.017150, -302.513519, - -463.025604, -10.351537, -301.479034, - -462.936340, -10.689318, -300.448883, - -462.818665, -11.044333, -299.424500, - -462.686890, -11.409551, -298.408417, - -462.388000, -12.191285, -296.252502, - -460.616119, -15.430405, -284.034149, - -460.460663, -15.766811, -283.004272, - -460.297577, -16.098799, -281.981476, - -460.138611, -16.023895, -280.905792, - -459.880035, -16.021536, -279.850311, - -459.524323, -16.066000, -278.793884, - -459.151947, -16.112444, -277.774414, - -458.760895, -15.948345, -276.768036, - -457.728149, -15.418857, -274.162994, - -457.121918, -15.183194, -272.663147, - -455.141998, -14.929026, -267.753723, - -454.605865, -14.961267, -266.809937, - -453.910492, -14.994783, -265.975586, - -453.106659, -15.028536, -265.243866, - -452.248810, -15.071724, -264.575989, - -451.363373, -15.070765, -263.944366, - -450.467194, -15.049448, -263.327393, - -449.339539, -15.027678, -262.566895, - -446.158661, -15.106158, -260.478607, - -445.146484, -15.217936, -260.096680, - -444.094391, -15.313764, -259.845978, - -443.059662, -15.693615, -259.832489, - -442.038452, -16.061672, -259.905914, - -440.926056, -16.011379, -259.961243, - -439.853027, -16.029181, -259.818878, - -438.834473, -16.076151, -259.442963, - -437.860443, -16.135080, -258.975220, - -436.944824, -15.842243, -258.482483, - -436.029755, -15.561083, -257.958588, - -435.103333, -15.389626, -257.408356, - -433.018707, -15.096863, -256.158447, - -423.253204, -15.007891, -250.244461, - -422.581299, -15.076889, -249.399033, - -422.162994, -15.134439, -248.398422, - -421.907043, -15.243899, -247.346481, - -421.727417, -15.378567, -246.282013, - -421.576630, -15.511925, -245.212921, - -421.436920, -15.814054, -244.166107, - -421.312561, -15.977121, -243.104950, - -421.161774, -16.151787, -241.633881, - -421.101837, -16.144278, -240.547592, - -421.054230, -16.138294, -239.460739, - -420.986694, -16.129854, -237.557938, - -420.237152, -15.986206, -212.018356, - -420.191437, -15.916931, -210.797974, - -420.120667, -15.789013, -207.812439, - -420.097992, -15.820995, -206.456985, - -419.913025, -16.017410, -199.259720, - -420.074188, -16.138962, -198.186157, - -420.394592, -15.806675, -197.200790, - -420.823639, -15.475427, -196.257751, - -421.315735, -15.246454, -195.308350, - -421.840698, -15.131503, -194.360291, - -422.374817, -15.078588, -193.413864, - -424.067291, -15.028349, -190.467560, - -427.695129, -14.944219, -184.241776, - -428.330750, -15.027770, -183.363968, - -429.060547, -15.124342, -182.563538, - -429.847046, -15.204210, -181.816025, - -430.657654, -15.276329, -181.094086, - -431.483185, -15.340816, -180.388275, - -432.919403, -15.584278, -179.168777, - -446.700073, -18.848972, -167.730667, - -447.838928, -18.971676, -166.769211, - -450.328156, -19.379137, -164.696960, - -451.060272, -19.534018, -163.909332, - -451.625610, -19.500000, -162.980560, - -452.083923, -19.517031, -161.994354, - -452.476959, -19.566160, -160.981140, - -452.841187, -19.611700, -159.956909, - -453.191650, -19.646599, -158.927551, - -454.367828, -19.964460, -155.331253, - -455.293671, -20.791029, -152.456436, - -455.619934, -20.976021, -151.448273, - -460.864044, -21.582912, -135.124496, - -461.198395, -21.523344, -134.089920, - -463.464020, -20.982677, -127.008972, - -463.628113, -20.996647, -125.935585, - -463.609283, -21.038952, -124.848961, - -463.521912, -21.146475, -123.767731, - -463.400543, -21.146563, -122.686722, - -463.201691, -21.188892, -121.067558, - -463.072876, -21.257940, -119.990120, - -462.932098, -21.293131, -118.911903, - -460.858124, -21.810720, -103.154648, - -460.394226, -21.855116, -102.181808, - -459.633484, -21.864172, -101.409859, - -458.751892, -21.805742, -100.775322, - -457.821533, -21.747103, -100.215164, - -456.871063, -21.669014, -99.690086, - -455.908997, -21.711084, -99.185425, - -452.652191, -21.466049, -97.507286, - -427.503632, -19.772459, -84.766029, - -426.533905, -19.798971, -84.273788, - -424.118073, -20.060156, -83.055641, - -423.148651, -19.991360, -82.567337 + {-439.970, -16.752, -255.100, 0, 0, 0}, + {-440.602, -16.538, -255.958, 0, 0, 0}, + {-441.127, -16.394, -256.900, 0, 0, 0}, + {-441.494, -16.267, -257.915, 0, 0, 0}, + {-441.581, -16.133, -258.985, 0, 0, 0}, + {-441.024, -16.028, -259.826, 0, 0, 0}, + {-439.954, -16.028, -259.822, 0, 0, 0}, + {-438.925, -16.072, -259.474, 0, 0, 0}, + {-437.941, -16.180, -259.014, 0, 0, 0}, + {-437.021, -15.868, -258.524, 0, 0, 0}, + {-436.108, -15.583, -258.000, 0, 0, 0}, + {-435.179, -15.400, -257.455, 0, 0, 0}, + {-432.864, -15.075, -256.065, 0, 0, 0}, + {-423.557, -14.982, -250.437, 0, 0, 0}, + {-422.761, -15.055, -249.708, 0, 0, 0}, + {-422.268, -15.117, -248.744, 0, 0, 0}, + {-421.972, -15.198, -247.701, 0, 0, 0}, + {-421.776, -15.333, -246.640, 0, 0, 0}, + {-421.618, -15.467, -245.572, 0, 0, 0}, + {-421.478, -15.717, -244.517, 0, 0, 0}, + {-421.351, -15.921, -243.463, 0, 0, 0}, + {-421.186, -16.198, -241.860, 0, 0, 0}, + {-421.114, -16.145, -240.774, 0, 0, 0}, + {-421.063, -16.139, -239.687, 0, 0, 0}, + {-420.994, -16.130, -237.785, 0, 0, 0}, + {-420.230, -15.989, -211.979, 0, 0, 0}, + {-420.197, -15.922, -210.893, 0, 0, 0}, + {-420.124, -15.798, -207.772, 0, 0, 0}, + {-420.100, -15.813, -206.552, 0, 0, 0}, + {-419.909, -16.017, -199.219, 0, 0, 0}, + {-420.047, -16.120, -198.143, 0, 0, 0}, + {-420.387, -15.748, -197.158, 0, 0, 0}, + {-420.822, -15.460, -196.220, 0, 0, 0}, + {-421.321, -15.238, -195.271, 0, 0, 0}, + {-421.853, -15.129, -194.327, 0, 0, 0}, + {-423.947, -15.024, -190.672, 0, 0, 0}, + {-427.640, -14.942, -184.327, 0, 0, 0}, + {-428.275, -15.015, -183.448, 0, 0, 0}, + {-428.993, -15.115, -182.637, 0, 0, 0}, + {-429.774, -15.196, -181.884, 0, 0, 0}, + {-430.584, -15.269, -181.162, 0, 0, 0}, + {-431.407, -15.339, -180.452, 0, 0, 0}, + {-432.945, -15.590, -179.147, 0, 0, 0}, + {-446.838, -18.853, -167.615, 0, 0, 0}, + {-447.872, -18.977, -166.740, 0, 0, 0}, + {-450.464, -19.402, -164.580, 0, 0, 0}, + {-451.186, -19.500, -163.781, 0, 0, 0}, + {-451.724, -19.500, -162.836, 0, 0, 0}, + {-452.156, -19.526, -161.839, 0, 0, 0}, + {-452.542, -19.574, -160.823, 0, 0, 0}, + {-452.902, -19.619, -159.797, 0, 0, 0}, + {-453.247, -19.652, -158.765, 0, 0, 0}, + {-454.379, -19.973, -155.298, 0, 0, 0}, + {-455.345, -20.866, -152.299, 0, 0, 0}, + {-455.671, -20.945, -151.285, 0, 0, 0}, + {-456.993, -21.072, -147.165, 0, 0, 0}, + {-457.321, -21.268, -146.147, 0, 0, 0}, + {-460.919, -21.558, -134.955, 0, 0, 0}, + {-461.252, -21.516, -133.920, 0, 0, 0}, + {-463.684, -20.974, -126.322, 0, 0, 0}, + {-463.735, -21.005, -125.238, 0, 0, 0}, + {-463.618, -21.100, -124.159, 0, 0, 0}, + {-463.476, -21.130, -123.083, 0, 0, 0}, + {-460.845, -21.814, -103.009, 0, 0, 0}, + {-460.340, -21.860, -102.053, 0, 0, 0}, + {-459.548, -21.859, -101.316, 0, 0, 0}, + {-458.651, -21.799, -100.705, 0, 0, 0}, + {-457.715, -21.738, -100.153, 0, 0, 0}, + {-456.764, -21.662, -99.631, 0, 0, 0}, + {-455.801, -21.716, -99.128, 0, 0, 0}, + {-452.543, -21.461, -97.451, 0, 0, 0}, + {-427.263, -19.779, -84.644, 0, 0, 0}, + {-426.292, -19.805, -84.153, 0, 0, 0}, + {-424.000, -20.058, -82.994, 0, 0, 0}, + {-423.030, -19.983, -82.507, 0, 0, 0}, + {-396.179, -20.642, -68.915, 0, 0, 0}, + {-395.230, -20.758, -68.394, 0, 0, 0}, + {-394.369, -20.974, -67.755, 0, 0, 0}, + {-393.589, -21.246, -67.048, 0, 0, 0}, + {-392.859, -21.419, -66.273, 0, 0, 0}, + {-392.153, -21.557, -65.456, 0, 0, 0}, + {-391.468, -21.778, -64.640, 0, 0, 0}, + {-390.559, -22.323, -63.552, 0, 0, 0}, + {-389.849, -22.824, -62.691, 0, 0, 0}, + {-387.739, -24.336, -60.088, 0, 0, 0}, + {-387.035, -24.853, -59.230, 0, 0, 0}, + {-386.339, -25.370, -58.366, 0, 0, 0}, + {-385.651, -26.125, -57.510, 0, 0, 0}, + {-385.033, -27.045, -56.701, 0, 0, 0}, + {-384.452, -27.587, -55.817, 0, 0, 0}, + {-383.951, -27.987, -54.938, 0, 0, 0}, + {-383.386, -28.294, -53.910, 0, 0, 0}, + {-382.906, -28.606, -52.984, 0, 0, 0}, + {-382.409, -28.917, -52.069, 0, 0, 0}, + {-381.867, -29.025, -51.137, 0, 0, 0}, + {-381.301, -29.172, -50.219, 0, 0, 0}, + {-380.727, -29.320, -49.307, 0, 0, 0}, + {-364.454, -30.016, -24.085, 0, 0, 0}, + {-354.090, -29.671, -8.006, 0, 0, 0}, + {-353.540, -29.834, -7.080, 0, 0, 0}, + {-353.008, -30.037, -6.150, 0, 0, 0}, + {-351.508, -30.500, -3.461, 0, 0, 0}, + {-344.298, -31.130, 9.622, 0, 0, 0}, + {-343.719, -31.229, 10.534, 0, 0, 0}, + {-343.014, -31.336, 11.354, 0, 0, 0}, + {-342.196, -31.448, 12.062, 0, 0, 0}, + {-341.337, -31.562, 12.721, 0, 0, 0}, + {-340.463, -31.676, 13.359, 0, 0, 0}, + {-339.578, -31.747, 13.983, 0, 0, 0}, + {-338.684, -31.777, 14.604, 0, 0, 0}, + {-331.282, -31.493, 19.661, 0, 0, 0}, + {-330.308, -31.447, 20.141, 0, 0, 0}, + {-329.288, -31.455, 20.518, 0, 0, 0}, + {-328.249, -31.395, 20.818, 0, 0, 0}, + {-327.199, -31.337, 21.087, 0, 0, 0}, + {-326.141, -31.381, 21.338, 0, 0, 0}, + {-325.082, -31.432, 21.581, 0, 0, 0}, + {-320.835, -31.395, 22.525, 0, 0, 0}, + {-319.773, -31.337, 22.757, 0, 0, 0}, + {-316.724, -31.168, 23.434, 0, 0, 0}, + {-315.697, -31.067, 23.774, 0, 0, 0}, + {-314.713, -31.001, 24.234, 0, 0, 0}, + {-313.761, -30.953, 24.758, 0, 0, 0}, + {-312.835, -30.887, 25.325, 0, 0, 0}, + {-311.918, -30.789, 25.902, 0, 0, 0}, + {-310.216, -30.826, 27.010, 0, 0, 0}, + {-307.517, -31.226, 28.788, 0, 0, 0}, + {-306.582, -31.154, 29.342, 0, 0, 0}, + {-305.625, -31.055, 29.852, 0, 0, 0}, + {-304.660, -30.967, 30.347, 0, 0, 0}, + {-303.691, -30.867, 30.831, 0, 0, 0}, + {-301.273, -30.522, 32.021, 0, 0, 0}, + {-300.325, -30.253, 32.488, 0, 0, 0}, + {-297.896, -29.961, 33.678, 0, 0, 0}, + {-296.921, -29.980, 34.155, 0, 0, 0}, + {-283.175, -30.000, 40.879, 0, 0, 0}, + {-282.197, -30.000, 41.357, 0, 0, 0}, + {-273.907, -30.223, 45.435, 0, 0, 0}, + {-273.112, -30.613, 46.087, 0, 0, 0}, + {-272.551, -31.027, 46.919, 0, 0, 0}, + {-272.154, -31.419, 47.850, 0, 0, 0}, + {-271.860, -31.801, 48.831, 0, 0, 0}, + {-271.583, -32.090, 49.799, 0, 0, 0}, + {-271.340, -32.425, 50.806, 0, 0, 0}, + {-270.992, -32.844, 52.328, 0, 0, 0}, + {-269.161, -35.016, 60.795, 0, 0, 0}, + {-268.899, -35.537, 62.046, 0, 0, 0}, + {-267.436, -38.003, 68.796, 0, 0, 0}, + {-267.218, -38.403, 69.785, 0, 0, 0}, + {-266.716, -39.181, 72.162, 0, 0, 0}, + {-266.646, -39.236, 73.245, 0, 0, 0}, + {-266.741, -39.305, 74.326, 0, 0, 0}, + {-266.943, -39.503, 75.379, 0, 0, 0}, + {-267.198, -39.606, 76.420, 0, 0, 0}, + {-267.467, -39.573, 77.473, 0, 0, 0}, + {-267.751, -39.537, 78.523, 0, 0, 0}, + {-269.489, -39.688, 84.654, 0, 0, 0}, + {-269.779, -39.940, 85.672, 0, 0, 0}, + {-270.407, -40.357, 87.859, 0, 0, 0}, + {-270.701, -40.217, 88.897, 0, 0, 0}, + {-271.803, -39.582, 92.765, 0, 0, 0}, + {-272.103, -39.621, 93.822, 0, 0, 0}, + {-274.938, -40.094, 103.757, 0, 0, 0}, + {-275.234, -39.950, 104.796, 0, 0, 0}, + {-278.316, -39.956, 115.598, 0, 0, 0}, + {-278.657, -40.000, 116.626, 0, 0, 0}, + {-279.067, -40.000, 117.634, 0, 0, 0}, + {-279.518, -40.000, 118.624, 0, 0, 0}, + {-279.993, -40.000, 119.603, 0, 0, 0}, + {-280.484, -40.000, 120.574, 0, 0, 0}, + {-280.980, -40.000, 121.543, 0, 0, 0}, + {-286.929, -39.008, 132.941, 0, 0, 0}, + {-287.430, -38.897, 133.901, 0, 0, 0}, + {-287.937, -38.781, 134.856, 0, 0, 0}, + {-288.510, -38.692, 135.778, 0, 0, 0}, + {-289.157, -38.665, 136.652, 0, 0, 0}, + {-289.833, -38.639, 137.504, 0, 0, 0}, + {-290.523, -38.604, 138.344, 0, 0, 0}, + {-291.396, -38.552, 139.386, 0, 0, 0}, + {-300.068, -35.596, 149.616, 0, 0, 0}, + {-300.450, -35.417, 150.612, 0, 0, 0}, + {-300.480, -35.302, 151.691, 0, 0, 0}, + {-300.363, -35.374, 152.765, 0, 0, 0}, + {-300.181, -35.526, 153.827, 0, 0, 0}, + {-299.967, -35.682, 154.883, 0, 0, 0}, + {-299.740, -35.856, 155.933, 0, 0, 0}, + {-299.166, -36.110, 158.434, 0, 0, 0}, + {-297.842, -36.519, 164.110, 0, 0, 0}, + {-297.711, -36.728, 165.169, 0, 0, 0}, + {-297.791, -36.897, 166.237, 0, 0, 0}, + {-298.034, -37.036, 167.288, 0, 0, 0}, + {-298.354, -37.162, 168.321, 0, 0, 0}, + {-298.708, -37.283, 169.343, 0, 0, 0}, + {-299.123, -37.480, 170.478, 0, 0, 0}, + {-299.870, -38.047, 172.461, 0, 0, 0}, + {-300.458, -38.762, 173.968, 0, 0, 0}, + {-301.121, -39.588, 175.707, 0, 0, 0}, + {-301.488, -39.880, 176.703, 0, 0, 0}, + {-301.741, -40.187, 177.714, 0, 0, 0}, + {-301.840, -40.504, 178.748, 0, 0, 0}, + {-301.855, -40.822, 179.788, 0, 0, 0}, + {-301.822, -41.188, 180.817, 0, 0, 0}, + {-301.758, -41.552, 181.840, 0, 0, 0}, + {-301.682, -41.920, 182.862, 0, 0, 0}, + {-301.407, -42.825, 186.114, 0, 0, 0}, + {-300.501, -45.446, 196.063, 0, 0, 0}, + {-300.327, -45.781, 197.086, 0, 0, 0}, + {-300.107, -46.023, 198.101, 0, 0, 0}, + {-299.892, -46.020, 199.202, 0, 0, 0}, + {-299.658, -46.049, 200.264, 0, 0, 0}, + {-299.083, -45.989, 202.775, 0, 0, 0}, + {-298.839, -45.840, 203.825, 0, 0, 0}, + {-298.599, -45.612, 204.856, 0, 0, 0}, + {-297.294, -45.038, 210.384, 0, 0, 0}, + {-296.802, -45.031, 211.348, 0, 0, 0}, + {-296.003, -44.947, 212.076, 0, 0, 0}, + {-295.089, -44.939, 212.665, 0, 0, 0}, + {-294.132, -44.971, 213.180, 0, 0, 0}, + {-293.159, -45.004, 213.666, 0, 0, 0}, + {-292.177, -45.043, 214.134, 0, 0, 0}, + {-290.945, -45.035, 214.709, 0, 0, 0}, + {-282.860, -45.922, 218.423, 0, 0, 0}, + {-281.928, -46.162, 218.882, 0, 0, 0}, + {-280.925, -46.093, 219.302, 0, 0, 0}, + {-279.942, -46.035, 219.765, 0, 0, 0}, + {-278.976, -46.039, 220.261, 0, 0, 0}, + {-278.019, -46.126, 220.774, 0, 0, 0}, + {-276.532, -45.679, 221.595, 0, 0, 0}, + {-273.266, -45.098, 223.469, 0, 0, 0}, + {-272.324, -45.015, 224.010, 0, 0, 0}, + {-268.550, -45.024, 226.176, 0, 0, 0}, + {-267.745, -45.022, 226.900, 0, 0, 0}, + {-267.117, -44.979, 227.787, 0, 0, 0}, + {-266.573, -44.975, 228.729, 0, 0, 0}, + {-266.066, -44.982, 229.691, 0, 0, 0}, + {-265.576, -45.041, 230.663, 0, 0, 0}, + {-265.079, -45.163, 231.627, 0, 0, 0}, + {-264.597, -45.264, 232.595, 0, 0, 0}, + {-264.152, -45.446, 233.563, 0, 0, 0}, + {-263.697, -45.680, 234.523, 0, 0, 0}, + {-262.016, -46.281, 238.029, 0, 0, 0}, + {-261.556, -46.201, 239.014, 0, 0, 0}, + {-256.600, -45.025, 249.377, 0, 0, 0}, + {-255.970, -44.957, 250.260, 0, 0, 0}, + {-255.212, -44.939, 251.038, 0, 0, 0}, + {-254.386, -44.945, 251.745, 0, 0, 0}, + {-253.526, -44.969, 252.411, 0, 0, 0}, + {-252.652, -45.002, 253.058, 0, 0, 0}, + {-251.770, -45.036, 253.696, 0, 0, 0}, + {-244.441, -45.275, 258.863, 0, 0, 0}, + {-243.505, -45.542, 259.357, 0, 0, 0}, + {-242.523, -45.906, 259.648, 0, 0, 0}, + {-241.460, -46.028, 259.823, 0, 0, 0}, + {-240.374, -46.019, 259.894, 0, 0, 0}, + {-239.287, -46.013, 259.945, 0, 0, 0}, + {-238.200, -46.008, 259.982, 0, 0, 0}, + {-235.359, -46.299, 260.041, 0, 0, 0}, + {-231.212, -47.047, 260.111, 0, 0, 0}, + {-228.414, -47.613, 260.165, 0, 0, 0}, + {-227.395, -48.089, 260.184, 0, 0, 0}, + {-225.697, -48.950, 260.216, 0, 0, 0}, + {-224.363, -49.629, 260.239, 0, 0, 0}, + {-223.352, -49.953, 260.253, 0, 0, 0}, + {-216.001, -52.412, 260.375, 0, 0, 0}, + {-214.947, -52.636, 260.390, 0, 0, 0}, + {-204.417, -55.326, 260.560, 0, 0, 0}, + {-203.368, -55.655, 260.576, 0, 0, 0}, + {-202.049, -56.112, 260.577, 0, 0, 0}, + {-200.935, -56.080, 260.591, 0, 0, 0}, + {-184.915, -56.834, 260.617, 0, 0, 0}, + {-183.857, -57.100, 260.594, 0, 0, 0}, + {-182.771, -57.095, 260.613, 0, 0, 0}, + {-181.551, -57.195, 260.611, 0, 0, 0}, + {-180.467, -57.268, 260.554, 0, 0, 0}, + {-179.388, -57.235, 260.443, 0, 0, 0}, + {-178.313, -57.323, 260.301, 0, 0, 0}, + {-177.240, -57.410, 260.141, 0, 0, 0}, + {-175.639, -57.602, 259.888, 0, 0, 0}, + {-153.454, -59.971, 256.230, 0, 0, 0}, + {-152.371, -59.941, 256.202, 0, 0, 0}, + {-151.338, -59.899, 256.526, 0, 0, 0}, + {-150.409, -59.899, 257.091, 0, 0, 0}, + {-149.546, -59.905, 257.754, 0, 0, 0}, + {-148.712, -59.944, 258.451, 0, 0, 0}, + {-147.891, -59.982, 259.164, 0, 0, 0}, + {-147.077, -59.987, 259.886, 0, 0, 0}, + {-145.559, -59.996, 261.249, 0, 0, 0}, + {-135.296, -61.920, 270.550, ID.text.ZOVRIACE_REPORT, 8, 0}, -- report + {-136.090, -61.731, 269.830, 0, 0, 0}, + {-136.884, -61.542, 269.110, 0, 0, 0}, + {-150.086, -59.899, 257.147, 0, 0, 0}, + {-151.020, -59.899, 256.592, 0, 0, 0}, + {-152.073, -59.902, 256.345, 0, 0, 0}, + {-153.159, -59.929, 256.347, 0, 0, 0}, + {-154.243, -59.956, 256.436, 0, 0, 0}, + {-155.322, -59.991, 256.572, 0, 0, 0}, + {-156.398, -59.956, 256.729, 0, 0, 0}, + {-158.145, -59.938, 257.003, 0, 0, 0}, + {-178.976, -57.275, 260.436, 0, 0, 0}, + {-180.056, -57.302, 260.523, 0, 0, 0}, + {-181.140, -57.218, 260.571, 0, 0, 0}, + {-182.225, -57.135, 260.593, 0, 0, 0}, + {-183.310, -57.070, 260.604, 0, 0, 0}, + {-184.389, -56.970, 260.592, 0, 0, 0}, + {-185.446, -56.699, 260.612, 0, 0, 0}, + {-186.534, -56.616, 260.619, 0, 0, 0}, + {-188.029, -56.562, 260.618, 0, 0, 0}, + {-207.543, -54.695, 260.506, 0, 0, 0}, + {-208.593, -54.421, 260.490, 0, 0, 0}, + {-227.786, -47.844, 260.176, 0, 0, 0}, + {-228.828, -47.528, 260.161, 0, 0, 0}, + {-230.026, -47.278, 260.139, 0, 0, 0}, + {-234.035, -46.541, 260.063, 0, 0, 0}, + {-240.660, -46.011, 259.960, 0, 0, 0}, + {-241.744, -46.169, 259.869, 0, 0, 0}, + {-242.749, -45.785, 259.621, 0, 0, 0}, + {-243.688, -45.496, 259.184, 0, 0, 0}, + {-244.613, -45.269, 258.647, 0, 0, 0}, + {-245.518, -45.137, 258.052, 0, 0, 0}, + {-246.419, -45.087, 257.445, 0, 0, 0}, + {-247.315, -45.036, 256.830, 0, 0, 0}, + {-249.769, -45.024, 255.119, 0, 0, 0}, + {-254.651, -44.940, 251.663, 0, 0, 0}, + {-255.433, -44.937, 250.909, 0, 0, 0}, + {-256.076, -44.971, 250.033, 0, 0, 0}, + {-256.635, -45.035, 249.102, 0, 0, 0}, + {-257.142, -45.097, 248.142, 0, 0, 0}, + {-257.629, -45.233, 247.177, 0, 0, 0}, + {-258.461, -45.483, 245.483, 0, 0, 0}, + {-259.049, -45.740, 244.276, 0, 0, 0}, + {-259.516, -45.851, 243.307, 0, 0, 0}, + {-264.719, -45.247, 232.364, 0, 0, 0}, + {-265.227, -45.105, 231.261, 0, 0, 0}, + {-265.719, -44.985, 230.292, 0, 0, 0}, + {-266.195, -44.977, 229.313, 0, 0, 0}, + {-266.685, -44.971, 228.342, 0, 0, 0}, + {-267.309, -44.990, 227.454, 0, 0, 0}, + {-268.097, -45.024, 226.706, 0, 0, 0}, + {-268.976, -45.019, 226.065, 0, 0, 0}, + {-269.888, -45.017, 225.473, 0, 0, 0}, + {-270.818, -45.019, 224.907, 0, 0, 0}, + {-271.753, -45.000, 224.352, 0, 0, 0}, + {-273.165, -45.084, 223.535, 0, 0, 0}, + {-274.098, -45.217, 222.991, 0, 0, 0}, + {-275.034, -45.352, 222.454, 0, 0, 0}, + {-276.433, -45.645, 221.653, 0, 0, 0}, + {-278.282, -46.227, 220.580, 0, 0, 0}, + {-279.259, -46.019, 220.105, 0, 0, 0}, + {-280.239, -46.051, 219.636, 0, 0, 0}, + {-281.715, -46.138, 218.944, 0, 0, 0}, + {-295.072, -44.942, 212.826, 0, 0, 0}, + {-295.975, -44.965, 212.229, 0, 0, 0}, + {-296.626, -44.995, 211.363, 0, 0, 0}, + {-297.092, -45.025, 210.383, 0, 0, 0}, + {-297.438, -45.079, 209.353, 0, 0, 0}, + {-297.736, -45.130, 208.308, 0, 0, 0}, + {-298.005, -45.248, 207.260, 0, 0, 0}, + {-298.264, -45.386, 206.212, 0, 0, 0}, + {-299.041, -45.962, 202.959, 0, 0, 0}, + {-299.294, -46.129, 201.913, 0, 0, 0}, + {-299.533, -46.064, 200.852, 0, 0, 0}, + {-299.778, -46.034, 199.792, 0, 0, 0}, + {-300.021, -46.009, 198.732, 0, 0, 0}, + {-300.230, -45.949, 197.678, 0, 0, 0}, + {-300.387, -45.645, 196.654, 0, 0, 0}, + {-300.517, -45.328, 195.618, 0, 0, 0}, + {-300.631, -45.131, 194.554, 0, 0, 0}, + {-300.736, -44.933, 193.489, 0, 0, 0}, + {-301.916, -41.039, 180.393, 0, 0, 0}, + {-301.952, -40.689, 179.362, 0, 0, 0}, + {-301.844, -40.380, 178.326, 0, 0, 0}, + {-301.584, -40.074, 177.315, 0, 0, 0}, + {-301.265, -39.777, 176.319, 0, 0, 0}, + {-300.939, -39.442, 175.363, 0, 0, 0}, + {-300.565, -38.942, 174.325, 0, 0, 0}, + {-300.181, -38.417, 173.289, 0, 0, 0}, + {-299.740, -37.873, 172.134, 0, 0, 0}, + {-299.364, -37.599, 171.148, 0, 0, 0}, + {-298.786, -37.338, 169.644, 0, 0, 0}, + {-298.402, -37.208, 168.635, 0, 0, 0}, + {-298.027, -37.092, 167.620, 0, 0, 0}, + {-297.779, -36.955, 166.573, 0, 0, 0}, + {-297.768, -36.779, 165.501, 0, 0, 0}, + {-297.893, -36.572, 164.441, 0, 0, 0}, + {-298.075, -36.378, 163.386, 0, 0, 0}, + {-298.291, -36.245, 162.328, 0, 0, 0}, + {-298.523, -36.191, 161.267, 0, 0, 0}, + {-299.099, -36.119, 158.749, 0, 0, 0}, + {-300.622, -35.272, 152.185, 0, 0, 0}, + {-300.546, -35.356, 151.112, 0, 0, 0}, + {-300.139, -35.533, 150.124, 0, 0, 0}, + {-299.563, -35.738, 149.226, 0, 0, 0}, + {-298.926, -35.974, 148.366, 0, 0, 0}, + {-298.292, -36.369, 147.566, 0, 0, 0}, + {-297.652, -36.771, 146.784, 0, 0, 0}, + {-296.598, -37.424, 145.524, 0, 0, 0}, + {-289.386, -38.662, 137.017, 0, 0, 0}, + {-288.751, -38.680, 136.135, 0, 0, 0}, + {-288.184, -38.716, 135.207, 0, 0, 0}, + {-287.656, -38.841, 134.261, 0, 0, 0}, + {-286.957, -39.001, 132.948, 0, 0, 0}, + {-286.436, -38.979, 131.993, 0, 0, 0}, + {-285.933, -39.086, 131.035, 0, 0, 0}, + {-279.544, -40.000, 118.786, 0, 0, 0}, + {-279.095, -40.000, 117.795, 0, 0, 0}, + {-278.723, -40.000, 116.773, 0, 0, 0}, + {-278.390, -40.000, 115.739, 0, 0, 0}, + {-278.077, -39.844, 114.705, 0, 0, 0}, + {-277.060, -39.500, 111.198, 0, 0, 0}, + {-271.665, -39.568, 92.294, 0, 0, 0}, + {-271.258, -39.819, 90.879, 0, 0, 0}, + {-269.650, -39.829, 85.218, 0, 0, 0}, + {-269.097, -39.500, 83.293, 0, 0, 0}, + {-266.809, -39.475, 75.200, 0, 0, 0}, + {-266.649, -39.287, 74.141, 0, 0, 0}, + {-266.706, -39.230, 73.057, 0, 0, 0}, + {-266.841, -39.182, 71.979, 0, 0, 0}, + {-267.013, -38.883, 70.972, 0, 0, 0}, + {-267.203, -38.458, 69.986, 0, 0, 0}, + {-267.405, -38.092, 68.997, 0, 0, 0}, + {-267.967, -37.205, 66.336, 0, 0, 0}, + {-269.169, -35.011, 60.768, 0, 0, 0}, + {-269.416, -34.755, 59.608, 0, 0, 0}, + {-271.049, -32.833, 52.036, 0, 0, 0}, + {-271.266, -32.500, 51.020, 0, 0, 0}, + {-271.939, -31.580, 47.963, 0, 0, 0}, + {-272.323, -31.133, 47.024, 0, 0, 0}, + {-273.091, -30.631, 46.207, 0, 0, 0}, + {-273.918, -30.234, 45.609, 0, 0, 0}, + {-274.847, -30.141, 45.052, 0, 0, 0}, + {-275.801, -30.049, 44.537, 0, 0, 0}, + {-276.767, -30.004, 44.039, 0, 0, 0}, + {-277.740, -30.000, 43.551, 0, 0, 0}, + {-295.029, -30.001, 35.084, 0, 0, 0}, + {-296.004, -30.028, 34.606, 0, 0, 0}, + {-298.320, -30.011, 33.472, 0, 0, 0}, + {-299.292, -30.127, 32.998, 0, 0, 0}, + {-300.744, -30.420, 32.287, 0, 0, 0}, + {-301.822, -30.660, 31.766, 0, 0, 0}, + {-305.449, -31.039, 29.961, 0, 0, 0}, + {-306.393, -31.150, 29.427, 0, 0, 0}, + {-307.322, -31.208, 28.864, 0, 0, 0}, + {-308.242, -31.225, 28.287, 0, 0, 0}, + {-309.370, -30.999, 27.554, 0, 0, 0}, + {-313.548, -30.951, 24.807, 0, 0, 0}, + {-314.496, -30.999, 24.278, 0, 0, 0}, + {-315.499, -31.051, 23.858, 0, 0, 0}, + {-316.537, -31.154, 23.544, 0, 0, 0}, + {-317.590, -31.206, 23.277, 0, 0, 0}, + {-318.646, -31.269, 23.025, 0, 0, 0}, + {-319.705, -31.330, 22.782, 0, 0, 0}, + {-328.585, -31.461, 20.809, 0, 0, 0}, + {-329.604, -31.452, 20.447, 0, 0, 0}, + {-330.576, -31.458, 19.959, 0, 0, 0}, + {-331.516, -31.525, 19.415, 0, 0, 0}, + {-332.434, -31.586, 18.835, 0, 0, 0}, + {-333.342, -31.637, 18.237, 0, 0, 0}, + {-334.808, -31.720, 17.253, 0, 0, 0}, + {-341.755, -31.512, 12.505, 0, 0, 0}, + {-342.587, -31.399, 11.814, 0, 0, 0}, + {-343.284, -31.293, 10.987, 0, 0, 0}, + {-343.903, -31.204, 10.098, 0, 0, 0}, + {-344.476, -31.068, 9.182, 0, 0, 0}, + {-345.021, -30.936, 8.250, 0, 0, 0}, + {-345.557, -30.848, 7.308, 0, 0, 0}, + {-346.944, -30.665, 4.819, 0, 0, 0}, + {-352.769, -30.134, -5.750, 0, 0, 0}, + {-353.430, -29.865, -6.908, 0, 0, 0}, + {-353.990, -29.703, -7.826, 0, 0, 0}, + {-354.571, -29.606, -8.750, 0, 0, 0}, + {-359.278, -30.020, -16.060, 0, 0, 0}, + {-359.865, -29.940, -16.974, 0, 0, 0}, + {-366.939, -29.873, -27.931, 0, 0, 0}, + {-367.528, -29.888, -28.845, 0, 0, 0}, + {-376.512, -29.969, -42.758, 0, 0, 0}, + {-377.103, -29.932, -43.671, 0, 0, 0}, + {-381.560, -29.108, -50.606, 0, 0, 0}, + {-382.097, -28.962, -51.540, 0, 0, 0}, + {-382.600, -28.786, -52.479, 0, 0, 0}, + {-383.076, -28.473, -53.406, 0, 0, 0}, + {-383.741, -28.044, -54.676, 0, 0, 0}, + {-384.273, -27.694, -55.554, 0, 0, 0}, + {-384.877, -27.241, -56.411, 0, 0, 0}, + {-385.524, -26.414, -57.283, 0, 0, 0}, + {-386.158, -25.591, -58.105, 0, 0, 0}, + {-386.828, -24.977, -58.949, 0, 0, 0}, + {-390.529, -22.315, -63.529, 0, 0, 0}, + {-392.262, -21.522, -65.653, 0, 0, 0}, + {-392.948, -21.380, -66.485, 0, 0, 0}, + {-393.689, -21.182, -67.244, 0, 0, 0}, + {-394.540, -20.930, -67.872, 0, 0, 0}, + {-395.454, -20.739, -68.440, 0, 0, 0}, + {-396.398, -20.635, -68.968, 0, 0, 0}, + {-397.357, -20.571, -69.479, 0, 0, 0}, + {-398.320, -20.508, -69.982, 0, 0, 0}, + {-400.858, -20.346, -71.281, 0, 0, 0}, + {-416.078, -20.016, -78.992, 0, 0, 0}, + {-417.048, -19.936, -79.480, 0, 0, 0}, + {-427.943, -19.760, -84.990, 0, 0, 0}, + {-428.913, -19.807, -85.480, 0, 0, 0}, + {-432.057, -20.048, -87.078, 0, 0, 0}, + {-433.018, -20.206, -87.563, 0, 0, 0}, + {-434.463, -20.382, -88.293, 0, 0, 0}, + {-435.430, -20.458, -88.786, 0, 0, 0}, + {-452.483, -21.459, -97.418, 0, 0, 0}, + {-453.453, -21.498, -97.910, 0, 0, 0}, + {-455.629, -21.682, -99.016, 0, 0, 0}, + {-456.597, -21.676, -99.507, 0, 0, 0}, + {-459.140, -21.836, -100.792, 0, 0, 0}, + {-459.946, -21.893, -101.510, 0, 0, 0}, + {-460.448, -21.846, -102.472, 0, 0, 0}, + {-460.755, -21.810, -103.514, 0, 0, 0}, + {-460.974, -21.743, -104.577, 0, 0, 0}, + {-461.155, -21.659, -105.647, 0, 0, 0}, + {-461.317, -21.591, -106.720, 0, 0, 0}, + {-461.468, -21.524, -107.796, 0, 0, 0}, + {-463.602, -21.103, -124.129, 0, 0, 0}, + {-463.619, -21.024, -125.213, 0, 0, 0}, + {-463.478, -21.006, -126.292, 0, 0, 0}, + {-463.249, -21.002, -127.355, 0, 0, 0}, + {-462.966, -21.089, -128.399, 0, 0, 0}, + {-462.668, -21.285, -129.427, 0, 0, 0}, + {-462.235, -21.446, -130.840, 0, 0, 0}, + {-460.657, -21.688, -135.754, 0, 0, 0}, + {-460.330, -21.662, -136.789, 0, 0, 0}, + {-455.015, -20.520, -153.317, 0, 0, 0}, + {-454.692, -20.245, -154.319, 0, 0, 0}, + {-452.376, -19.553, -161.505, 0, 0, 0}, + {-451.983, -19.504, -162.518, 0, 0, 0}, + {-451.383, -19.500, -163.425, 0, 0, 0}, + {-450.662, -19.500, -164.235, 0, 0, 0}, + {-449.881, -19.324, -164.978, 0, 0, 0}, + {-449.075, -19.183, -165.695, 0, 0, 0}, + {-448.256, -19.045, -166.398, 0, 0, 0}, + {-447.224, -18.874, -167.267, 0, 0, 0}, + {-446.393, -18.880, -167.969, 0, 0, 0}, + {-444.853, -18.565, -169.265, 0, 0, 0}, + {-429.819, -15.220, -181.753, 0, 0, 0}, + {-429.047, -15.136, -182.514, 0, 0, 0}, + {-428.378, -15.023, -183.364, 0, 0, 0}, + {-427.766, -14.929, -184.258, 0, 0, 0}, + {-427.184, -14.948, -185.176, 0, 0, 0}, + {-426.620, -14.981, -186.106, 0, 0, 0}, + {-420.939, -15.316, -195.861, 0, 0, 0}, + {-420.463, -15.644, -196.799, 0, 0, 0}, + {-420.179, -15.996, -197.782, 0, 0, 0}, + {-420.054, -16.013, -198.776, 0, 0, 0}, + {-420.006, -16.007, -199.863, 0, 0, 0}, + {-419.994, -16.007, -200.951, 0, 0, 0}, + {-420.002, -16.006, -202.039, 0, 0, 0}, + {-420.028, -16.012, -203.534, 0, 0, 0}, + {-420.136, -15.819, -208.158, 0, 0, 0}, + {-420.158, -15.863, -209.517, 0, 0, 0}, + {-420.217, -15.970, -212.114, 0, 0, 0}, + {-420.270, -15.849, -213.198, 0, 0, 0}, + {-420.324, -15.797, -214.692, 0, 0, 0}, + {-420.826, -15.902, -232.085, 0, 0, 0}, + {-420.854, -15.979, -233.178, 0, 0, 0}, + {-421.049, -16.137, -239.834, 0, 0, 0}, + {-421.117, -16.146, -240.920, 0, 0, 0}, + {-421.206, -16.172, -242.004, 0, 0, 0}, + {-421.315, -15.984, -243.070, 0, 0, 0}, + {-421.494, -15.643, -244.787, 0, 0, 0}, + {-421.819, -15.221, -247.595, 0, 0, 0}, + {-422.154, -15.128, -248.622, 0, 0, 0}, + {-422.758, -15.061, -249.519, 0, 0, 0}, + {-423.569, -14.987, -250.238, 0, 0, 0}, + {-424.447, -14.935, -250.876, 0, 0, 0}, + {-425.353, -14.944, -251.478, 0, 0, 0}, + {-426.272, -14.957, -252.060, 0, 0, 0}, + {-427.197, -14.990, -252.632, 0, 0, 0}, + {-435.669, -15.466, -257.761, 0, 0, 0}, + {-436.582, -15.703, -258.315, 0, 0, 0}, + {-437.807, -16.083, -259.079, 0, 0, 0}, + {-438.774, -16.063, -259.543, 0, 0, 0}, + {-439.841, -16.037, -259.752, 0, 0, 0}, + {-440.927, -16.028, -259.821, 0, 0, 0}, + {-442.012, -16.065, -259.827, 0, 0, 0}, + {-443.029, -15.716, -259.796, 0, 0, 0}, + {-444.055, -15.340, -259.815, 0, 0, 0}, + {-445.097, -15.219, -260.104, 0, 0, 0}, + {-446.074, -15.110, -260.570, 0, 0, 0}, + {-447.027, -15.057, -261.092, 0, 0, 0}, + {-447.959, -15.005, -261.650, 0, 0, 0}, + {-448.870, -15.018, -262.244, 0, 0, 0}, + {-452.834, -15.055, -264.874, 0, 0, 0}, + {-453.655, -15.037, -265.585, 0, 0, 0}, + {-454.313, -14.975, -266.448, 0, 0, 0}, + {-454.843, -14.943, -267.396, 0, 0, 0}, + {-455.317, -14.926, -268.376, 0, 0, 0}, + {-455.755, -14.934, -269.371, 0, 0, 0}, + {-456.179, -14.990, -270.372, 0, 0, 0}, + {-458.718, -15.924, -276.598, 0, 0, 0}, + {-459.454, -16.074, -278.487, 0, 0, 0}, + {-459.765, -16.035, -279.529, 0, 0, 0}, + {-460.018, -16.008, -280.586, 0, 0, 0}, + {-460.219, -16.034, -281.655, 0, 0, 0}, + {-460.388, -15.869, -282.697, 0, 0, 0}, + {-460.631, -15.373, -284.238, 0, 0, 0}, + {-463.079, -10.491, -301.043, 0, 0, 0}, + {-463.087, -10.158, -302.077, 0, 0, 0}, + {-462.960, -9.836, -303.109, 0, 0, 0}, + {-462.774, -9.560, -304.125, 0, 0, 0}, + {-462.522, -8.986, -305.196, 0, 0, 0}, + {-462.273, -8.643, -306.190, 0, 0, 0}, + {-462.021, -8.278, -307.184, 0, 0, 0}, + {-460.034, -6.387, -314.867, 0, 0, 0}, + {-459.871, -6.200, -315.926, 0, 0, 0}, + {-459.784, -6.106, -317.006, 0, 0, 0}, + {-459.729, -6.040, -318.091, 0, 0, 0}, + {-459.694, -6.044, -319.178, 0, 0, 0}, + {-459.585, -6.053, -324.342, 0, 0, 0}, + {-459.546, -5.772, -326.638, 0, 0, 0}, + {-459.503, -5.646, -328.802, 0, 0, 0}, + {-459.475, -5.742, -330.568, 0, 0, 0}, + {-459.458, -5.785, -331.654, 0, 0, 0}, + {-459.434, -5.762, -332.741, 0, 0, 0}, + {-459.407, -5.823, -334.235, 0, 0, 0}, + {-459.388, -5.885, -335.321, 0, 0, 0}, + {-459.238, -5.855, -343.748, 0, 0, 0}, + {-459.212, -5.653, -345.233, 0, 0, 0}, + {-459.171, -5.405, -347.661, 0, 0, 0}, + {-459.148, -5.488, -349.155, 0, 0, 0}, + {-459.102, -5.651, -351.733, 0, 0, 0}, + {-459.078, -5.694, -352.820, 0, 0, 0}, + {-459.029, -6.086, -355.647, 0, 0, 0}, + {-459.029, -6.127, -356.731, 0, 0, 0}, + {-459.140, -6.113, -357.812, 0, 0, 0}, + {-459.383, -6.083, -358.872, 0, 0, 0}, + {-459.727, -6.040, -359.903, 0, 0, 0}, + {-460.125, -6.022, -360.915, 0, 0, 0}, + {-460.547, -6.109, -361.916, 0, 0, 0}, + {-460.983, -5.974, -362.906, 0, 0, 0}, + {-461.694, -5.748, -364.503, 0, 0, 0}, + {-464.664, -4.937, -371.008, 0, 0, 0}, + {-465.236, -4.933, -371.931, 0, 0, 0}, + {-466.029, -4.964, -372.673, 0, 0, 0}, + {-466.928, -4.997, -373.282, 0, 0, 0}, + {-467.884, -5.034, -373.801, 0, 0, 0}, + {-468.857, -5.029, -374.286, 0, 0, 0}, + {-469.843, -5.023, -374.747, 0, 0, 0}, + {-470.833, -5.019, -375.197, 0, 0, 0}, + {-472.694, -5.035, -376.029, 0, 0, 0}, + {-473.677, -5.200, -376.472, 0, 0, 0}, + {-474.661, -5.361, -376.908, 0, 0, 0}, + {-476.374, -5.724, -377.667, 0, 0, 0}, + {-477.943, -6.254, -378.389, 0, 0, 0}, + {-478.940, -6.155, -378.806, 0, 0, 0}, + {-479.933, -6.100, -379.246, 0, 0, 0}, + {-480.918, -6.043, -379.707, 0, 0, 0}, + {-481.900, -6.081, -380.169, 0, 0, 0}, + {-484.013, -5.418, -381.186, 0, 0, 0}, + {-491.435, -5.052, -384.848, 0, 0, 0}, + {-492.353, -5.041, -385.430, 0, 0, 0}, + {-493.202, -5.007, -386.109, 0, 0, 0}, + {-493.992, -4.974, -386.856, 0, 0, 0}, + {-494.756, -4.940, -387.630, 0, 0, 0}, + {-495.507, -4.923, -388.417, 0, 0, 0}, + {-496.431, -4.977, -389.412, 0, 0, 0}, + {-497.107, -5.046, -390.261, 0, 0, 0}, + {-497.657, -5.110, -391.197, 0, 0, 0}, + {-498.112, -5.190, -392.182, 0, 0, 0}, + {-498.507, -5.332, -393.186, 0, 0, 0}, + {-498.873, -5.472, -394.200, 0, 0, 0}, + {-499.234, -5.613, -395.218, 0, 0, 0}, + {-499.678, -5.800, -396.489, 0, 0, 0}, + {-500.778, -6.103, -399.830, 0, 0, 0}, + {-501.068, -6.140, -400.878, 0, 0, 0}, + {-501.285, -6.187, -401.943, 0, 0, 0}, + {-501.455, -5.907, -402.972, 0, 0, 0}, + {-501.603, -5.583, -404.001, 0, 0, 0}, + {-501.743, -5.360, -405.062, 0, 0, 0}, + {-502.090, -4.776, -407.835, 0, 0, 0}, + {-503.105, -2.217, -416.217, 0, 0, 0}, + {-503.239, -1.832, -417.352, 0, 0, 0}, + {-503.333, -1.481, -418.377, 0, 0, 0}, + {-503.423, -1.100, -419.395, 0, 0, 0}, + {-503.386, -0.703, -420.402, 0, 0, 0}, + {-503.246, -0.351, -421.441, 0, 0, 0}, + {-502.988, -0.045, -422.453, 0, 0, 0}, + {-502.687, 0.254, -423.455, 0, 0, 0}, + {-502.373, 0.594, -424.430, 0, 0, 0}, + {-502.022, 1.109, -425.470, 0, 0, 0}, + {-501.691, 1.542, -426.415, 0, 0, 0}, + {-499.392, 3.206, -433.018, 0, 0, 0}, + {-499.253, 3.375, -434.080, 0, 0, 0}, + {-499.522, 3.599, -435.105, 0, 0, 0}, + {-500.032, 3.822, -436.033, 0, 0, 0}, + {-500.653, 3.809, -436.925, 0, 0, 0}, + {-501.312, 3.793, -437.789, 0, 0, 0}, + {-501.987, 3.745, -438.639, 0, 0, 0}, + {-503.010, 3.617, -439.904, 0, 0, 0}, + {-504.546, 3.195, -441.791, 0, 0, 0}, + {-505.474, 3.454, -442.943, 0, 0, 0}, + {-506.260, 3.535, -443.878, 0, 0, 0}, + {-506.956, 3.542, -444.714, 0, 0, 0}, + {-508.938, 3.486, -447.139, 0, 0, 0}, + {-509.594, 3.471, -448.007, 0, 0, 0}, + {-510.234, 3.489, -448.886, 0, 0, 0}, + {-512.427, 3.586, -451.998, 0, 0, 0}, + {-513.936, 3.984, -454.195, 0, 0, 0}, + {-514.540, 4.233, -455.064, 0, 0, 0}, + {-515.166, 4.378, -455.945, 0, 0, 0}, + {-516.262, 4.290, -457.499, 0, 0, 0}, + {-516.891, 4.174, -458.381, 0, 0, 0}, + {-517.627, 3.970, -459.154, 0, 0, 0}, + {-518.497, 3.965, -459.776, 0, 0, 0}, + {-519.472, 3.961, -460.252, 0, 0, 0}, + {-520.468, 3.907, -460.686, 0, 0, 0}, + {-521.475, 3.856, -461.097, 0, 0, 0}, + {-522.467, 3.899, -461.479, 0, 0, 0}, + {-523.431, 4.273, -461.837, 0, 0, 0}, + {-532.930, 4.970, -465.372, 0, 0, 0}, + {-533.836, 5.003, -465.964, 0, 0, 0}, + {-534.517, 5.036, -466.809, 0, 0, 0}, + {-535.063, 5.069, -467.748, 0, 0, 0}, + {-535.532, 5.071, -468.730, 0, 0, 0}, + {-535.968, 5.042, -469.726, 0, 0, 0}, + {-536.385, 4.985, -470.730, 0, 0, 0}, + {-536.996, 4.874, -472.240, 0, 0, 0}, + {-538.487, 4.135, -475.968, 0, 0, 0}, + {-538.877, 4.030, -476.973, 0, 0, 0}, + {-539.262, 3.887, -477.981, 0, 0, 0}, + {-539.575, 3.940, -479.021, 0, 0, 0}, + {-539.779, 3.965, -480.089, 0, 0, 0}, + {-539.916, 3.983, -481.168, 0, 0, 0}, + {-540.027, 3.990, -482.250, 0, 0, 0}, + {-540.122, 3.997, -483.334, 0, 0, 0}, + {-540.210, 3.984, -484.419, 0, 0, 0}, + {-541.090, 3.211, -496.324, 0, 0, 0}, + {-541.168, 3.029, -497.395, 0, 0, 0}, + {-541.225, 2.852, -498.466, 0, 0, 0}, + {-541.208, 2.688, -499.542, 0, 0, 0}, + {-541.137, 2.576, -500.620, 0, 0, 0}, + {-541.029, 2.491, -501.699, 0, 0, 0}, + {-540.901, 2.387, -502.777, 0, 0, 0}, + {-540.700, 2.348, -504.390, 0, 0, 0}, + {-539.072, 0.190, -516.318, 0, 0, 0}, + {-538.841, 0.175, -517.380, 0, 0, 0}, + {-538.530, 0.156, -518.422, 0, 0, 0}, + {-538.178, 0.134, -519.452, 0, 0, 0}, + {-537.805, 0.111, -520.473, 0, 0, 0}, + {-537.424, 0.087, -521.492, 0, 0, 0}, + {-536.306, 0.056, -524.412, 0, 0, 0}, + {-533.919, 0.072, -530.589, 0, 0, 0}, + {-534.307, 0.225, -529.584, 0, 0, 0}, + {-534.697, 0.361, -528.577, 0, 0, 0}, + {-538.121, 0.130, -519.723, 0, 0, 0}, + {-538.474, 0.153, -518.694, 0, 0, 0}, + {-538.752, 0.170, -517.643, 0, 0, 0}, + {-538.969, 0.183, -516.577, 0, 0, 0}, + {-539.157, 0.272, -515.513, 0, 0, 0}, + {-539.318, 0.485, -514.458, 0, 0, 0}, + {-539.542, 0.803, -512.873, 0, 0, 0}, + {-539.692, 0.970, -511.811, 0, 0, 0}, + {-539.838, 1.181, -510.753, 0, 0, 0}, + {-540.765, 2.421, -503.992, 0, 0, 0}, + {-540.907, 2.391, -502.915, 0, 0, 0}, + {-541.162, 2.543, -500.897, 0, 0, 0}, + {-541.213, 2.639, -499.816, 0, 0, 0}, + {-541.198, 2.814, -498.741, 0, 0, 0}, + {-541.153, 2.989, -497.668, 0, 0, 0}, + {-541.090, 3.167, -496.597, 0, 0, 0}, + {-540.901, 3.472, -493.766, 0, 0, 0}, + {-539.946, 3.986, -480.899, 0, 0, 0}, + {-539.758, 3.963, -479.829, 0, 0, 0}, + {-539.464, 3.926, -478.782, 0, 0, 0}, + {-539.127, 3.884, -477.750, 0, 0, 0}, + {-538.753, 4.055, -476.738, 0, 0, 0}, + {-538.086, 4.375, -474.991, 0, 0, 0}, + {-535.247, 5.074, -467.828, 0, 0, 0}, + {-534.701, 5.041, -466.858, 0, 0, 0}, + {-533.907, 5.008, -466.119, 0, 0, 0}, + {-532.972, 4.975, -465.566, 0, 0, 0}, + {-531.983, 4.943, -465.114, 0, 0, 0}, + {-530.979, 4.951, -464.695, 0, 0, 0}, + {-529.968, 4.959, -464.295, 0, 0, 0}, + {-528.951, 4.983, -463.907, 0, 0, 0}, + {-522.430, 3.916, -461.465, 0, 0, 0}, + {-521.404, 3.857, -461.086, 0, 0, 0}, + {-520.377, 3.902, -460.729, 0, 0, 0}, + {-519.369, 3.953, -460.322, 0, 0, 0}, + {-518.443, 3.963, -459.761, 0, 0, 0}, + {-517.644, 3.968, -459.040, 0, 0, 0}, + {-516.927, 4.138, -458.245, 0, 0, 0}, + {-516.257, 4.275, -457.397, 0, 0, 0}, + {-515.619, 4.360, -456.520, 0, 0, 0}, + {-514.989, 4.372, -455.633, 0, 0, 0}, + {-514.354, 4.148, -454.766, 0, 0, 0}, + {-513.569, 3.888, -453.690, 0, 0, 0}, + {-512.848, 3.701, -452.650, 0, 0, 0}, + {-512.268, 3.550, -451.781, 0, 0, 0}, + {-511.656, 3.532, -450.883, 0, 0, 0}, + {-510.565, 3.495, -449.323, 0, 0, 0}, + {-509.924, 3.478, -448.444, 0, 0, 0}, + {-509.263, 3.481, -447.580, 0, 0, 0}, + {-508.588, 3.498, -446.727, 0, 0, 0}, + {-507.732, 3.521, -445.671, 0, 0, 0}, + {-504.967, 3.235, -442.320, 0, 0, 0}, + {-504.184, 3.426, -441.405, 0, 0, 0}, + {-503.524, 3.552, -440.548, 0, 0, 0}, + {-502.838, 3.638, -439.709, 0, 0, 0}, + {-499.995, 3.863, -436.248, 0, 0, 0}, + {-499.458, 3.631, -435.332, 0, 0, 0}, + {-499.354, 3.427, -434.275, 0, 0, 0}, + {-499.518, 3.263, -433.213, 0, 0, 0}, + {-499.786, 3.119, -432.168, 0, 0, 0}, + {-500.093, 2.942, -431.138, 0, 0, 0}, + {-500.416, 2.698, -430.129, 0, 0, 0}, + {-500.756, 2.452, -429.125, 0, 0, 0}, + {-501.102, 2.205, -428.123, 0, 0, 0}, + {-501.993, 1.130, -425.598, 0, 0, 0}, + {-502.375, 0.625, -424.550, 0, 0, 0}, + {-502.760, 0.259, -423.439, 0, 0, 0}, + {-503.125, -0.073, -422.319, 0, 0, 0}, + {-503.344, -0.434, -421.301, 0, 0, 0}, + {-503.392, -0.782, -420.267, 0, 0, 0}, + {-503.345, -1.156, -419.237, 0, 0, 0}, + {-503.275, -1.517, -418.212, 0, 0, 0}, + {-503.200, -1.875, -417.190, 0, 0, 0}, + {-503.092, -2.185, -416.171, 0, 0, 0}, + {-501.571, -5.735, -403.501, 0, 0, 0}, + {-501.418, -6.069, -402.475, 0, 0, 0}, + {-501.176, -6.153, -401.405, 0, 0, 0}, + {-500.898, -6.118, -400.354, 0, 0, 0}, + {-500.586, -6.079, -399.313, 0, 0, 0}, + {-500.255, -6.038, -398.277, 0, 0, 0}, + {-499.919, -5.917, -397.250, 0, 0, 0}, + {-498.133, -5.162, -391.881, 0, 0, 0}, + {-497.607, -5.099, -390.933, 0, 0, 0}, + {-496.951, -5.030, -390.068, 0, 0, 0}, + {-496.247, -4.960, -389.242, 0, 0, 0}, + {-495.526, -4.922, -388.429, 0, 0, 0}, + {-494.798, -4.939, -387.620, 0, 0, 0}, + {-494.057, -4.973, -386.825, 0, 0, 0}, + {-493.242, -5.007, -386.107, 0, 0, 0}, + {-492.357, -5.040, -385.475, 0, 0, 0}, + {-491.422, -5.050, -384.920, 0, 0, 0}, + {-490.463, -5.046, -384.405, 0, 0, 0}, + {-489.496, -5.027, -383.907, 0, 0, 0}, + {-488.524, -5.008, -383.419, 0, 0, 0}, + {-483.903, -5.444, -381.144, 0, 0, 0}, + {-482.970, -5.764, -380.673, 0, 0, 0}, + {-482.046, -6.081, -380.195, 0, 0, 0}, + {-481.059, -6.036, -379.756, 0, 0, 0}, + {-480.068, -6.092, -379.310, 0, 0, 0}, + {-478.083, -6.252, -378.424, 0, 0, 0}, + {-475.939, -5.600, -377.478, 0, 0, 0}, + {-474.095, -5.269, -376.659, 0, 0, 0}, + {-472.988, -5.088, -376.167, 0, 0, 0}, + {-471.997, -4.996, -375.725, 0, 0, 0}, + {-467.519, -5.021, -373.745, 0, 0, 0}, + {-466.568, -4.988, -373.221, 0, 0, 0}, + {-465.785, -4.954, -372.473, 0, 0, 0}, + {-465.155, -4.938, -371.586, 0, 0, 0}, + {-464.613, -4.943, -370.644, 0, 0, 0}, + {-464.112, -4.970, -369.678, 0, 0, 0}, + {-463.636, -5.030, -368.702, 0, 0, 0}, + {-463.174, -5.119, -367.720, 0, 0, 0}, + {-462.721, -5.261, -366.742, 0, 0, 0}, + {-461.430, -5.878, -363.953, 0, 0, 0}, + {-460.990, -5.964, -362.965, 0, 0, 0}, + {-459.656, -6.049, -359.997, 0, 0, 0}, + {-459.353, -6.087, -358.954, 0, 0, 0}, + {-459.191, -6.107, -357.879, 0, 0, 0}, + {-459.106, -6.118, -356.795, 0, 0, 0}, + {-459.081, -6.089, -355.710, 0, 0, 0}, + {-459.074, -5.935, -354.633, 0, 0, 0}, + {-459.104, -5.658, -351.932, 0, 0, 0}, + {-459.120, -5.591, -350.846, 0, 0, 0}, + {-459.187, -5.479, -346.507, 0, 0, 0}, + {-459.430, -5.749, -332.941, 0, 0, 0}, + {-459.453, -5.802, -331.854, 0, 0, 0}, + {-459.471, -5.754, -330.767, 0, 0, 0}, + {-459.490, -5.694, -329.681, 0, 0, 0}, + {-459.512, -5.627, -328.459, 0, 0, 0}, + {-459.529, -5.682, -327.376, 0, 0, 0}, + {-459.596, -6.022, -323.863, 0, 0, 0}, + {-459.627, -6.068, -321.961, 0, 0, 0}, + {-459.653, -6.049, -320.465, 0, 0, 0}, + {-459.672, -6.047, -319.377, 0, 0, 0}, + {-459.690, -6.045, -318.289, 0, 0, 0}, + {-459.733, -6.098, -317.204, 0, 0, 0}, + {-459.866, -6.163, -316.126, 0, 0, 0}, + {-460.061, -6.354, -315.070, 0, 0, 0}, + {-460.284, -6.588, -314.031, 0, 0, 0}, + {-460.533, -6.826, -312.999, 0, 0, 0}, + {-460.823, -7.095, -311.840, 0, 0, 0}, + {-462.704, -9.301, -304.645, 0, 0, 0}, + {-462.954, -9.692, -303.546, 0, 0, 0}, + {-463.049, -10.017, -302.513, 0, 0, 0}, + {-463.025, -10.351, -301.479, 0, 0, 0}, + {-462.936, -10.689, -300.448, 0, 0, 0}, + {-462.818, -11.044, -299.424, 0, 0, 0}, + {-462.686, -11.409, -298.408, 0, 0, 0}, + {-462.388, -12.191, -296.252, 0, 0, 0}, + {-460.616, -15.430, -284.034, 0, 0, 0}, + {-460.460, -15.766, -283.004, 0, 0, 0}, + {-460.297, -16.098, -281.981, 0, 0, 0}, + {-460.138, -16.023, -280.905, 0, 0, 0}, + {-459.880, -16.021, -279.850, 0, 0, 0}, + {-459.524, -16.066, -278.793, 0, 0, 0}, + {-459.151, -16.112, -277.774, 0, 0, 0}, + {-458.760, -15.948, -276.768, 0, 0, 0}, + {-457.728, -15.418, -274.162, 0, 0, 0}, + {-457.121, -15.183, -272.663, 0, 0, 0}, + {-455.141, -14.929, -267.753, 0, 0, 0}, + {-454.605, -14.961, -266.809, 0, 0, 0}, + {-453.910, -14.994, -265.975, 0, 0, 0}, + {-453.106, -15.028, -265.243, 0, 0, 0}, + {-452.248, -15.071, -264.575, 0, 0, 0}, + {-451.363, -15.070, -263.944, 0, 0, 0}, + {-450.467, -15.049, -263.327, 0, 0, 0}, + {-449.339, -15.027, -262.566, 0, 0, 0}, + {-446.158, -15.106, -260.478, 0, 0, 0}, + {-445.146, -15.217, -260.096, 0, 0, 0}, + {-444.094, -15.313, -259.845, 0, 0, 0}, + {-443.059, -15.693, -259.832, 0, 0, 0}, + {-442.038, -16.061, -259.905, 0, 0, 0}, + {-440.926, -16.011, -259.961, 0, 0, 0}, + {-439.853, -16.029, -259.818, 0, 0, 0}, + {-438.834, -16.076, -259.442, 0, 0, 0}, + {-437.860, -16.135, -258.975, 0, 0, 0}, + {-436.944, -15.842, -258.482, 0, 0, 0}, + {-436.029, -15.561, -257.958, 0, 0, 0}, + {-435.103, -15.389, -257.408, 0, 0, 0}, + {-433.018, -15.096, -256.158, 0, 0, 0}, + {-423.253, -15.007, -250.244, 0, 0, 0}, + {-422.581, -15.076, -249.399, 0, 0, 0}, + {-422.162, -15.134, -248.398, 0, 0, 0}, + {-421.907, -15.243, -247.346, 0, 0, 0}, + {-421.727, -15.378, -246.282, 0, 0, 0}, + {-421.576, -15.511, -245.212, 0, 0, 0}, + {-421.436, -15.814, -244.166, 0, 0, 0}, + {-421.312, -15.977, -243.104, 0, 0, 0}, + {-421.161, -16.151, -241.633, 0, 0, 0}, + {-421.101, -16.144, -240.547, 0, 0, 0}, + {-421.054, -16.138, -239.460, 0, 0, 0}, + {-420.986, -16.129, -237.557, 0, 0, 0}, + {-420.237, -15.986, -212.018, 0, 0, 0}, + {-420.191, -15.916, -210.797, 0, 0, 0}, + {-420.120, -15.789, -207.812, 0, 0, 0}, + {-420.097, -15.820, -206.456, 0, 0, 0}, + {-419.913, -16.017, -199.259, 0, 0, 0}, + {-420.074, -16.138, -198.186, 0, 0, 0}, + {-420.394, -15.806, -197.200, 0, 0, 0}, + {-420.823, -15.475, -196.257, 0, 0, 0}, + {-421.315, -15.246, -195.308, 0, 0, 0}, + {-421.840, -15.131, -194.360, 0, 0, 0}, + {-422.374, -15.078, -193.413, 0, 0, 0}, + {-424.067, -15.028, -190.467, 0, 0, 0}, + {-427.695, -14.944, -184.241, 0, 0, 0}, + {-428.330, -15.027, -183.363, 0, 0, 0}, + {-429.060, -15.124, -182.563, 0, 0, 0}, + {-429.847, -15.204, -181.816, 0, 0, 0}, + {-430.657, -15.276, -181.094, 0, 0, 0}, + {-431.483, -15.340, -180.388, 0, 0, 0}, + {-432.919, -15.584, -179.168, 0, 0, 0}, + {-446.700, -18.848, -167.730, 0, 0, 0}, + {-447.838, -18.971, -166.769, 0, 0, 0}, + {-450.328, -19.379, -164.696, 0, 0, 0}, + {-451.060, -19.534, -163.909, 0, 0, 0}, + {-451.625, -19.500, -162.980, 0, 0, 0}, + {-452.083, -19.517, -161.994, 0, 0, 0}, + {-452.476, -19.566, -160.981, 0, 0, 0}, + {-452.841, -19.611, -159.956, 0, 0, 0}, + {-453.191, -19.646, -158.927, 0, 0, 0}, + {-454.367, -19.964, -155.331, 0, 0, 0}, + {-455.293, -20.791, -152.456, 0, 0, 0}, + {-455.619, -20.976, -151.448, 0, 0, 0}, + {-460.864, -21.582, -135.124, 0, 0, 0}, + {-461.198, -21.523, -134.089, 0, 0, 0}, + {-463.464, -20.982, -127.008, 0, 0, 0}, + {-463.628, -20.996, -125.935, 0, 0, 0}, + {-463.609, -21.038, -124.848, 0, 0, 0}, + {-463.521, -21.146, -123.767, 0, 0, 0}, + {-463.400, -21.146, -122.686, 0, 0, 0}, + {-463.201, -21.188, -121.067, 0, 0, 0}, + {-463.072, -21.257, -119.990, 0, 0, 0}, + {-462.932, -21.293, -118.911, 0, 0, 0}, + {-460.858, -21.810, -103.154, 0, 0, 0}, + {-460.394, -21.855, -102.181, 0, 0, 0}, + {-459.633, -21.864, -101.409, 0, 0, 0}, + {-458.751, -21.805, -100.775, 0, 0, 0}, + {-457.821, -21.747, -100.215, 0, 0, 0}, + {-456.871, -21.669, -99.690, 0, 0, 0}, + {-455.908, -21.711, -99.185, 0, 0, 0}, + {-452.652, -21.466, -97.507, 0, 0, 0}, + {-427.503, -19.772, -84.766, 0, 0, 0}, + {-426.533, -19.798, -84.273, 0, 0, 0}, + {-424.118, -20.060, -83.055, 0, 0, 0}, + {-423.148, -19.991, -82.567, 0, 0, 0}, } function onSpawn(npc) - npc:initNpcAi() - npc:setPos(tpz.path.first(path)) + npc:initNpcPathing(path[1][1], path[1][2], path[1][3]) onPath(npc) end function onPath(npc) - if npc:atPoint(tpz.path.get(path, 288)) then - GetNPCByID(npc:getID() + 4):showText(npc, ID.text.ZOVRIACE_REPORT) - -- small delay after path finish - npc:wait(8000) - end - tpz.path.patrol(npc, path) + tpz.path.advancedPath(npc, path, false) end function onTrade(player, npc, trade) @@ -1024,7 +1019,7 @@ end function onTrigger(player, npc) player:showText(npc, ID.text.ZOVRIACE_DIALOG) - npc:wait() + npc:clearTargID() end function onEventUpdate(player, csid, option) diff --git a/sql/npc_list.sql b/sql/npc_list.sql index 9a727d7342d..68122a8adcc 100644 --- a/sql/npc_list.sql +++ b/sql/npc_list.sql @@ -19499,7 +19499,7 @@ INSERT INTO `npc_list` VALUES (17461504,'Unity_Master','Unity Master',0,0.000,0. INSERT INTO `npc_list` VALUES (17461506,'NPC[ff]','',0,0.000,0.000,0.000,0,50,50,0,0,0,2,1,0x0000320000000000000000000000000000000000,0,NULL,1); INSERT INTO `npc_list` VALUES (17461507,'NPC[100]','',0,0.000,0.000,0.000,0,50,50,0,16,32,2,129,0x00002C0900000000000000000000000000000000,0,NULL,1); INSERT INTO `npc_list` VALUES (17461508,'NPC[101]','',0,0.000,0.000,0.000,0,50,50,0,0,0,2,3,0x0000320000000000000000000000000000000000,0,NULL,1); -INSERT INTO `npc_list` VALUES (17461509,'Novalmauge','Novalmauge',255,46.551,-24.042,19.937,3911,13,50,0,0,0,0,27,0x0100000303100320033017401750006000700000,32,NULL,1); +INSERT INTO `npc_list` VALUES (17461509,'Novalmauge','Novalmauge',255,46.551,-24.042,19.937,3911,10,40,0,0,0,0,27,0x0100000303100320033017401750006000700000,32,NULL,1); INSERT INTO `npc_list` VALUES (17461510,'Chumia','Chumia',131,102.419,-24.000,70.457,17,50,50,0,1,0,0,27,0x0100040416101620163016401650006000700000,32,NULL,1); INSERT INTO `npc_list` VALUES (17461511,'_4n0','Wooden Door',0,16.049,-25.500,20.000,1,40,40,9,0,0,0,4099,0x0200000000000000000000000000000000000000,0,NULL,0); INSERT INTO `npc_list` VALUES (17461512,'_4n1','Cell Door',0,19.999,-25.500,10.050,1,40,40,9,0,0,0,4099,0x0200000000000000000000000000000000000000,0,NULL,0); @@ -30597,9 +30597,9 @@ INSERT INTO `npc_list` VALUES (17801281,'_6y9','Shed',0,39.062,-12.212,-167.334, INSERT INTO `npc_list` VALUES (17801282,'Mhebi_Juhbily','Mhebi Juhbily',199,40.063,-11.000,-161.234,7,40,40,0,0,0,0,27,0x00009B0500000000000000000000000000000000,32,NULL,1); INSERT INTO `npc_list` VALUES (17801283,'blank',' ',0,38.036,-10.999,-167.000,1,50,50,0,0,0,0,2075,0x0000A90400000000000000000000000000000000,32,NULL,1); INSERT INTO `npc_list` VALUES (17801284,'_6yc','Door_c',0,40.126,-11.866,-161.000,1,40,40,9,0,0,0,6147,0x0200000000000000000000000000000000000000,0,NULL,0); -INSERT INTO `npc_list` VALUES (17801285,'blank',' ',0,98.726,-14.000,-100.304,192,50,50,0,0,0,0,2075,0x00000C0100000000000000000000000000000000,32,NULL,1); -INSERT INTO `npc_list` VALUES (17801286,'blank',' ',0,97.211,-14.000,-101.790,151,50,50,0,0,0,0,2075,0x00000D0100000000000000000000000000000000,32,NULL,1); -INSERT INTO `npc_list` VALUES (17801287,'blank',' ',0,98.459,-14.000,-102.772,218,50,50,0,0,0,0,2075,0x00000C0100000000000000000000000000000000,32,NULL,1); +INSERT INTO `npc_list` VALUES (17801285,'bunny01',' ',0,98.726,-14.000,-100.304,192,50,50,0,0,0,0,2075,0x00000C0100000000000000000000000000000000,32,NULL,1); +INSERT INTO `npc_list` VALUES (17801286,'bunny02',' ',0,97.211,-14.000,-101.790,151,50,50,0,0,0,0,2075,0x00000D0100000000000000000000000000000000,32,NULL,1); +INSERT INTO `npc_list` VALUES (17801287,'bunny02',' ',0,98.459,-14.000,-102.772,218,50,50,0,0,0,0,2075,0x00000C0100000000000000000000000000000000,32,NULL,1); INSERT INTO `npc_list` VALUES (17801288,'Lulupp','Lulupp',191,-26.567,-2.500,-3.544,692,40,40,0,0,0,0,4194331,0x0000A00100000000000000000000000000000000,32,NULL,1); INSERT INTO `npc_list` VALUES (17801289,'Kukupp','Kukupp',0,44.089,-11.000,-178.976,6,40,40,0,0,0,0,4194331,0x0000A00100000000000000000000000000000000,32,NULL,1); INSERT INTO `npc_list` VALUES (17801290,'Mumupp','Mumupp',122,93.222,-14.999,-116.799,151,40,40,0,0,0,0,4194331,0x0000A00100000000000000000000000000000000,32,NULL,1); diff --git a/src/map/ai/helpers/pathfind.h b/src/map/ai/helpers/pathfind.h index b6f9a718368..1b51d306eed 100644 --- a/src/map/ai/helpers/pathfind.h +++ b/src/map/ai/helpers/pathfind.h @@ -43,7 +43,7 @@ enum PATHFLAG { PATHFLAG_WALLHACK = 0x02, // run through walls if path is too long PATHFLAG_REVERSE = 0x04, // reverse the path PATHFLAG_SCRIPT = 0x08, // don't overwrite this path before completion (except via another script) - PATHFLAG_SLIDE = 0x10 // Slide to end point if close enough (so no over shoot) + PATHFLAG_SLIDE = 0x10 // Slide to end point if close enough (so no over shoot) }; class CPathFind @@ -57,6 +57,7 @@ class CPathFind // find and walk to the given point bool PathTo(const position_t& point, uint8 pathFlags = 0, bool clear = true); + // walk to the given point until in range bool PathInRange(const position_t& point, float range, uint8 pathFlags = 0, bool clear = true); diff --git a/src/map/lua/lua_baseentity.cpp b/src/map/lua/lua_baseentity.cpp index 8aebb313109..eebdf3bf680 100644 --- a/src/map/lua/lua_baseentity.cpp +++ b/src/map/lua/lua_baseentity.cpp @@ -1549,18 +1549,46 @@ inline int32 CLuaBaseEntity::isAlly(lua_State *L) } /************************************************************************ -* Function: initNpcAi() -* Purpose : Initiate pre-defined NPC AI -* Example : npc:initNpcAi(); -- Red Ghost in Port Jeuno (walks a path) -* Notes : To Do: Change name, this is ugly +* Function: initNpcPathing() +* Purpose : Initiate pre-defined NPC pathfinding AI +* Example : npc:initNpcPathing(); -- Red Ghost in Port Jeuno (walks a path) +* Notes : can set a start position by passing an x,y,z +* Notes : can override starting pathpoint by passing an int as the point +* Extra : npc:initNpcPathing(0,0,0,5) -- passing 0 as the x,y,z but setting +* ##### : the pathpoint to 5, setting x,y,z to 0 will bypass setting the pos ************************************************************************/ -inline int32 CLuaBaseEntity::initNpcAi(lua_State* L) +inline int32 CLuaBaseEntity::initNpcPathing(lua_State* L) { TPZ_DEBUG_BREAK_IF(m_PBaseEntity == nullptr); TPZ_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_NPC); + uint16 pathpoint = 1; + + // Set a starting position by passing an x,y,z pos. + if (!lua_isnil(L, 1) && lua_isnumber(L, 1)) + { + if (lua_tonumber(L, 1) != 0 && lua_tonumber(L, 2) != 0 && lua_tonumber(L, 3) != 0) + { + m_PBaseEntity->loc.p.x = (float)lua_tonumber(L, 1); + m_PBaseEntity->loc.p.y = (float)lua_tonumber(L, 2); + m_PBaseEntity->loc.p.z = (float)lua_tonumber(L, 3); + + m_PBaseEntity->updatemask |= UPDATE_POS; + } + } + + // override pathpoint if need to when setting up. + if (!lua_isnil(L, 4) && lua_isnumber(L, 4)) + { + pathpoint = (uint16)lua_tonumber(L, 4); + } + m_PBaseEntity->PAI = std::make_unique(m_PBaseEntity, std::make_unique(m_PBaseEntity), nullptr, nullptr); + // All mobs/npc's now have a pathpoint to refrence from, + // so can call last pathpoint to get back on track. + // see getPathPoint(), setPathPoint + m_PBaseEntity->SetPathPoint(pathpoint); return 0; } @@ -1771,7 +1799,7 @@ inline int32 CLuaBaseEntity::getPathPoint(lua_State* L) inline int32 CLuaBaseEntity::setPathPoint(lua_State* L) { TPZ_DEBUG_BREAK_IF(m_PBaseEntity == nullptr); - TPZ_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_NPC); + TPZ_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_PC); TPZ_DEBUG_BREAK_IF(lua_isnil(L, 1) || !lua_isnumber(L, 1)); uint16 pathPoint = (uint16)lua_tonumber(L, 1); @@ -1838,23 +1866,70 @@ inline int32 CLuaBaseEntity::pathTo(lua_State* L) TPZ_DEBUG_BREAK_IF(lua_isnil(L, 3) || !lua_isnumber(L, 3)); position_t point; + uint32 flags = 0; + bool clear = false; point.x = (float)lua_tonumber(L, 1); point.y = (float)lua_tonumber(L, 2); point.z = (float)lua_tonumber(L, 3); + if (!lua_isnil(L, 4) && lua_isnumber(L, 4)) { point.rotation = (uint8)lua_tonumber(L, 4); } + if (!lua_isnil(L, 5) && lua_isnumber(L, 5)) + { + flags = (uint32)lua_tonumber(L, 5); + } + + if (!lua_isnil(L, 6) && lua_isboolean(L, 6)) + { + clear = (bool)lua_toboolean(L, 6); + } + + if (m_PBaseEntity->PAI->PathFind) + { + m_PBaseEntity->PAI->PathFind->PathTo(point, flags, clear); + } + + return 0; +} + +/************************************************************************ +* Function: stepTo() +* Purpose : Makes a non-PC move toward a target without changing action +* Example : mob:stepTo(Pos.x, Pos.y, Pos.z, true) +************************************************************************/ + +inline int32 CLuaBaseEntity::stepTo(lua_State* L) +{ + TPZ_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_PC); + TPZ_DEBUG_BREAK_IF(lua_isnil(L, 1) || !lua_isnumber(L, 1)); + TPZ_DEBUG_BREAK_IF(lua_isnil(L, 2) || !lua_isnumber(L, 2)); + TPZ_DEBUG_BREAK_IF(lua_isnil(L, 3) || !lua_isnumber(L, 3)); + + position_t point; + bool run = false; + + point.x = (float)lua_tonumber(L, 1); + point.y = (float)lua_tonumber(L, 2); + point.z = (float)lua_tonumber(L, 3); + + if (!lua_isnil(L, 4) && lua_isboolean(L, 4)) + { + run = (bool)lua_toboolean(L, 4); + } + if (m_PBaseEntity->PAI->PathFind) { - m_PBaseEntity->PAI->PathFind->PathTo(point, PATHFLAG_RUN | PATHFLAG_WALLHACK | PATHFLAG_SCRIPT); + m_PBaseEntity->PAI->PathFind->StepTo(point, run); } return 0; } + /************************************************************************ * Function: pathThrough() * Purpose : Makes an Entity follow a given set of points @@ -1922,6 +1997,82 @@ inline int32 CLuaBaseEntity::isFollowingPath(lua_State* L) return 1; } +/************************************************************************ +* Function: pathStop() +* Purpose : stops an npc from pathing until pathResume() is used +* Example : npc:pathStop() +* Notes : used in conjunction with pathResume() +************************************************************************/ + +inline int32 CLuaBaseEntity::pathStop(lua_State* L) +{ + TPZ_DEBUG_BREAK_IF(m_PBaseEntity == nullptr); + TPZ_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_PC); + + CBattleEntity* PBattle = (CBattleEntity*)m_PBaseEntity; + + PBattle->speed = 0; + + return 1; +} + +/************************************************************************ +* Function: pathResume() +* Purpose : resumes an entity's pathing by looking at it's speed set in the DB +* Example : npc:pathResume() +* Notes : used in conjunction with pathStop() +************************************************************************/ + +inline int32 CLuaBaseEntity::pathResume(lua_State* L) +{ + TPZ_DEBUG_BREAK_IF(m_PBaseEntity == nullptr); + TPZ_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_PC); + + uint8 default_speed = 0; + + if (m_PBaseEntity != nullptr) + { + if (m_PBaseEntity->objtype == TYPE_NPC) + { + auto PNpc = static_cast(m_PBaseEntity); + uint32 npcID = PNpc->id; + const char* NPCQuery = "SELECT speed FROM npc_list WHERE npcid = %u"; + + int32 retNPC = Sql_Query(SqlHandle, NPCQuery, npcID); + + if (retNPC != SQL_ERROR && Sql_NumRows(SqlHandle) != 0) + { + if (Sql_NextRow(SqlHandle) == SQL_SUCCESS) + { + default_speed = (uint8)Sql_GetIntData(SqlHandle, 0); + } + } + } + + if (m_PBaseEntity->objtype == TYPE_MOB) + { + auto PMob = static_cast(m_PBaseEntity); + uint16 familyID = PMob->m_Family; + const char* MOBQuery = "SELECT speed FROM mob_family_system WHERE familyid = %u"; + + int32 retMOB = Sql_Query(SqlHandle, MOBQuery, familyID); + + if (retMOB != SQL_ERROR && Sql_NumRows(SqlHandle) != 0) + { + if (Sql_NextRow(SqlHandle) == SQL_SUCCESS) + { + default_speed = (uint8)Sql_GetIntData(SqlHandle, 0); + } + } + } + + m_PBaseEntity->speed = default_speed; + return 1; + } + + return 0; +} + /************************************************************************ * Function: clearPath() * Purpose : Clears all path points and stops entity movement @@ -14127,7 +14278,7 @@ Lunar::Register_t CLuaBaseEntity::methods[] = LUNAR_DECLARE_METHOD(CLuaBaseEntity,isAlly), // AI and Control - LUNAR_DECLARE_METHOD(CLuaBaseEntity,initNpcAi), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,initNpcPathing), LUNAR_DECLARE_METHOD(CLuaBaseEntity,resetAI), LUNAR_DECLARE_METHOD(CLuaBaseEntity,getStatus), LUNAR_DECLARE_METHOD(CLuaBaseEntity,setStatus), @@ -14140,10 +14291,13 @@ Lunar::Register_t CLuaBaseEntity::methods[] = LUNAR_DECLARE_METHOD(CLuaBaseEntity,setPathPoint), LUNAR_DECLARE_METHOD(CLuaBaseEntity,atPoint), LUNAR_DECLARE_METHOD(CLuaBaseEntity,pathTo), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,stepTo), LUNAR_DECLARE_METHOD(CLuaBaseEntity,pathThrough), LUNAR_DECLARE_METHOD(CLuaBaseEntity,isFollowingPath), LUNAR_DECLARE_METHOD(CLuaBaseEntity,clearPath), LUNAR_DECLARE_METHOD(CLuaBaseEntity,checkDistance), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,pathStop), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,pathResume), LUNAR_DECLARE_METHOD(CLuaBaseEntity,wait), LUNAR_DECLARE_METHOD(CLuaBaseEntity,openDoor), diff --git a/src/map/lua/lua_baseentity.h b/src/map/lua/lua_baseentity.h index fb693304e52..f88020e555a 100644 --- a/src/map/lua/lua_baseentity.h +++ b/src/map/lua/lua_baseentity.h @@ -99,7 +99,7 @@ class CLuaBaseEntity int32 isAlly(lua_State*); // AI and Control - int32 initNpcAi(lua_State* L); + int32 initNpcPathing(lua_State* L); int32 resetAI(lua_State* L); int32 getStatus(lua_State*); int32 setStatus(lua_State*); // Sets Character's Status @@ -112,8 +112,12 @@ class CLuaBaseEntity int32 setPathPoint(lua_State* L); int32 atPoint(lua_State* L); // is at given point int32 pathTo(lua_State* L); // set new path to point without changing action + int32 stepTo(lua_State* L); int32 pathThrough(lua_State* L); // walk at normal speed through the given points - int32 isFollowingPath(lua_State* L); // checks if the entity is following a path + int32 isFollowingPath(lua_State* L); + int32 pathStop(lua_State* L); + int32 pathResume(lua_State* L); + // checks if the entity is following a path int32 clearPath(lua_State* L); // removes current pathfind and stops moving int32 checkDistance(lua_State*); // Check Distacnce and returns distance number int32 wait(lua_State* L); // make the npc wait a number of ms and then back into roam