mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Merge branch 'Jorge/quest_system' into ioncannon/quest_system
This commit is contained in:
		| @@ -0,0 +1,3 @@ | |||||||
|  | function init(npc) | ||||||
|  | 	return false, false, 0, 0, 0, 0;	 | ||||||
|  | end | ||||||
							
								
								
									
										18
									
								
								Data/scripts/base/chara/npc/object/OpeningStoperW0B1.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Data/scripts/base/chara/npc/object/OpeningStoperW0B1.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | require("global"); | ||||||
|  |  | ||||||
|  | function init(npc) | ||||||
|  | 	return false, false, 0, 0;	 | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onEventStarted(player, npc, eventType, eventName) | ||||||
|  |  | ||||||
|  |     if (eventType == ETYPE_PUSH) then | ||||||
|  |         if (eventName == "caution") then | ||||||
|  |             worldMaster = GetWorldMaster(); | ||||||
|  |             player:SendGameMessage(player, worldMaster, 34109, 0x20); | ||||||
|  |         elseif (eventName == "exit") then | ||||||
|  |             GetWorldManager():DoPlayerMoveInZone(player, 5.36433, 196, 133.656, -2.84938); | ||||||
|  |         end | ||||||
|  |     end | ||||||
|  | 	player:EndEvent(); | ||||||
|  | end | ||||||
| @@ -49,8 +49,9 @@ function init(npc) | |||||||
| end | end | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName)	 | function onEventStarted(player, npc, triggerName)	 | ||||||
|  |     local classId = npc:GetActorClassId(); | ||||||
| 	local curLevel = 20; -- TODO: pull from character | 	local curLevel = 20; -- TODO: pull from character | ||||||
| 	local hasIssuance = player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(gcIssuances[npc:GetActorClassId()]); | 	local hasIssuance = player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(gcIssuances[classId]); | ||||||
| 	local hasChocobo = player.hasChocobo; | 	local hasChocobo = player.hasChocobo; | ||||||
| 	 | 	 | ||||||
| 	if (hasChocobo == false) then -- Let GMs auto have the issuance for debugging  | 	if (hasChocobo == false) then -- Let GMs auto have the issuance for debugging  | ||||||
| @@ -59,6 +60,19 @@ function onEventStarted(player, npc, triggerName) | |||||||
|  |  | ||||||
| 	local hasFunds = (player:GetCurrentGil() >= rentalPrice); | 	local hasFunds = (player:GetCurrentGil() >= rentalPrice); | ||||||
|      |      | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     if ((classId == 1000840) and (player:HasQuest(110009))) then -- Cross-script Man0u0 dialog | ||||||
|  |         local sequence = player:GetQuest(110009):getSequence(); | ||||||
|  |          | ||||||
|  |         if (sequence == 0) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, GetStaticActor("Man0u0"), "processEvent000_13");  | ||||||
|  |         elseif (sequence == 10) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, GetStaticActor("Man0u0"), "processEvent020_7");  | ||||||
|  |         else | ||||||
|  |             player:EndEvent(); | ||||||
|  |         end | ||||||
|  |     else | ||||||
|         callClientFunction(player, "eventTalkWelcome", player); |         callClientFunction(player, "eventTalkWelcome", player); | ||||||
|          |          | ||||||
|         local menuChoice = callClientFunction(player, "eventAskMainMenu", player, curLevel, hasFunds, hasIssuance, hasChocobo, hasChocobo, 0); |         local menuChoice = callClientFunction(player, "eventAskMainMenu", player, curLevel, hasFunds, hasIssuance, hasChocobo, hasChocobo, 0); | ||||||
| @@ -74,7 +88,7 @@ function onEventStarted(player, npc, triggerName) | |||||||
|                 player:EndEvent(); |                 player:EndEvent(); | ||||||
|                 return; |                 return; | ||||||
|             else		 |             else		 | ||||||
| 			local appearance = startAppearances[npc:GetActorClassId()];			 |                 local appearance = startAppearances[classId];			 | ||||||
|                 player:IssueChocobo(appearance, nameResponse); |                 player:IssueChocobo(appearance, nameResponse); | ||||||
|                  |                  | ||||||
|                 callClientFunction(player, "eventAfterChocoboName", player);			 |                 callClientFunction(player, "eventAfterChocoboName", player);			 | ||||||
| @@ -83,24 +97,25 @@ function onEventStarted(player, npc, triggerName) | |||||||
|                 if (player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(2001007) == false) then |                 if (player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(2001007) == false) then | ||||||
|                     player:GetItemPackage(INVENTORY_KEYITEMS):AddItem(2001007); |                     player:GetItemPackage(INVENTORY_KEYITEMS):AddItem(2001007); | ||||||
|                 end |                 end | ||||||
| 			player:GetItemPackage(INVENTORY_KEYITEMS):RemoveItem(gcIssuances[npc:GetActorClassId()], 1); |                 player:GetItemPackage(INVENTORY_KEYITEMS):RemoveItem(gcIssuances[classId], 1); | ||||||
|                  |                  | ||||||
|                 --Warp with the special chocobo warp mode. |                 --Warp with the special chocobo warp mode. | ||||||
|                 mountChocobo(player);			 |                 mountChocobo(player);			 | ||||||
| 			GetWorldManager():DoZoneChange(player, cityExits[npc:GetActorClassId()][1], nil, 0, SPAWN_CHOCOBO_GET, cityExits[npc:GetActorClassId()][2], cityExits[npc:GetActorClassId()][3], cityExits[npc:GetActorClassId()][4], cityExits[npc:GetActorClassId()][5]);		 |                 GetWorldManager():DoZoneChange(player, cityExits[classId][1], nil, 0, SPAWN_CHOCOBO_GET, cityExits[classId][2], cityExits[classId][3], cityExits[classId][4], cityExits[classId][5]);		 | ||||||
|             end |             end | ||||||
|                      |                      | ||||||
|         elseif(menuChoice == 2) then -- Summon Bird |         elseif(menuChoice == 2) then -- Summon Bird | ||||||
|             mountChocobo(player); |             mountChocobo(player); | ||||||
| 		GetWorldManager():DoZoneChange(player, cityExits[npc:GetActorClassId()][1], nil, 0, SPAWN_NO_ANIM, cityExits[npc:GetActorClassId()][2], cityExits[npc:GetActorClassId()][3], cityExits[npc:GetActorClassId()][4], cityExits[npc:GetActorClassId()][5]);		 |             GetWorldManager():DoZoneChange(player, cityExits[classId][1], nil, 0, SPAWN_NO_ANIM, cityExits[classId][2], cityExits[classId][3], cityExits[classId][4], cityExits[classId][5]);		 | ||||||
|         elseif(menuChoice == 3) then -- Change Barding |         elseif(menuChoice == 3) then -- Change Barding | ||||||
|             callClientFunction(player, "eventTalkStepBreak", player); |             callClientFunction(player, "eventTalkStepBreak", player); | ||||||
|         elseif(menuChoice == 5) then -- Rent Bird |         elseif(menuChoice == 5) then -- Rent Bird | ||||||
|             mountChocobo(player, true, 1); |             mountChocobo(player, true, 1); | ||||||
| 		GetWorldManager():DoZoneChange(player, cityExits[npc:GetActorClassId()][1], nil, 0, SPAWN_CHOCOBO_RENTAL, cityExits[npc:GetActorClassId()][2], cityExits[npc:GetActorClassId()][3], cityExits[npc:GetActorClassId()][4], cityExits[npc:GetActorClassId()][5]); |             GetWorldManager():DoZoneChange(player, cityExits[classId][1], nil, 0, SPAWN_CHOCOBO_RENTAL, cityExits[classId][2], cityExits[classId][3], cityExits[classId][4], cityExits[classId][5]); | ||||||
|         else |         else | ||||||
|             callClientFunction(player, "eventTalkStepBreak", player); |             callClientFunction(player, "eventTalkStepBreak", player); | ||||||
|         end |         end | ||||||
|  |     end | ||||||
|      |      | ||||||
| 	player:EndEvent(); | 	player:EndEvent(); | ||||||
| end | end | ||||||
| @@ -115,6 +130,6 @@ function mountChocobo(player, isRental, rentalMinutes) | |||||||
| 	 | 	 | ||||||
| 	player:SendMountAppearance(); | 	player:SendMountAppearance(); | ||||||
| 	player:SetMountState(1); | 	player:SetMountState(1); | ||||||
| 	player:ChangeSpeed(0.0, 5.0, 10.0, 10.0); | 	player:ChangeSpeed(0.0, 3.6, 9.0, 9.0); | ||||||
| 	player:ChangeState(15);	 | 	player:ChangeState(15);	 | ||||||
| end | end | ||||||
| @@ -7,7 +7,7 @@ Functions: | |||||||
| eventTalkWelcome(player)        - Start Text | eventTalkWelcome(player)        - Start Text | ||||||
| eventAskMainMenu(player, index) - Shows teleport menu, hides the teleport location at index value to prevent warping to the spot you're at | eventAskMainMenu(player, index) - Shows teleport menu, hides the teleport location at index value to prevent warping to the spot you're at | ||||||
| eventAfterWarpOtherZone(player) - Fades out for warp | eventAfterWarpOtherZone(player) - Fades out for warp | ||||||
| eventTalkStepBreak() - Ends talk | eventTalkStepBreak()            - Holds the client up for whatever reason? | ||||||
| --]] | --]] | ||||||
|  |  | ||||||
| require ("global") | require ("global") | ||||||
| @@ -82,39 +82,50 @@ function onEventStarted(player, npc, triggerName) | |||||||
|     npcId = npc:GetActorClassId(); |     npcId = npc:GetActorClassId(); | ||||||
|     city = warpNpc[npcId][2]; |     city = warpNpc[npcId][2]; | ||||||
|      |      | ||||||
|      |     if (city == 1) then | ||||||
|     if city == 1 then |  | ||||||
|         if player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(passLimsa) then |         if player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(passLimsa) then | ||||||
|             passCheck = 1; |             passCheck = 1; | ||||||
|         else |         else | ||||||
|             if passCheck == 0 then callClientFunction(player, "eventTalkWelcome", player); end |             if (passCheck == 0) then callClientFunction(player, "eventTalkWelcome", player); end | ||||||
|         end; |         end; | ||||||
|     elseif city == 2 then |     elseif (city == 2) then | ||||||
|         if player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(passGrid) then |       --  if player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(passGrid) then | ||||||
|  |             passCheck = 1; | ||||||
|  |        -- else | ||||||
|  |          --  if passCheck == 0 then callClientFunction(player, "eventTalkWelcome", player); end | ||||||
|  |         --end; | ||||||
|  |     elseif (city == 3) then | ||||||
|  |         if (player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(passUldah)) then | ||||||
|             passCheck = 1; |             passCheck = 1; | ||||||
|         else |         else | ||||||
|            if passCheck == 0 then callClientFunction(player, "eventTalkWelcome", player); end |             if (passCheck == 0) then callClientFunction(player, "eventTalkWelcome", player); end | ||||||
|         end; |  | ||||||
|     elseif city == 3 then |  | ||||||
|         if player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(passUldah) then |  | ||||||
|             passCheck = 1; |  | ||||||
|         else |  | ||||||
|             if passCheck == 0 then callClientFunction(player, "eventTalkWelcome", player); end |  | ||||||
|         end |         end | ||||||
|     end |     end | ||||||
|      |      | ||||||
|     if passCheck == 1 then |      | ||||||
|  |     if (passCheck == 1) then | ||||||
|         choice = callClientFunction(player, "eventAskMainMenu", player, warpNpc[npcId][1]); |         choice = callClientFunction(player, "eventAskMainMenu", player, warpNpc[npcId][1]); | ||||||
|      |      | ||||||
|         if choice == 0 then |          | ||||||
|             --callClientFunction(player, "playereventTalkStepBreak"); |         if (choice ~= 0) then | ||||||
|  |              | ||||||
|  |              | ||||||
|  |             | ||||||
|  |            callClientFunction(player, "eventAfterWarpOtherZone", player); | ||||||
|  |            wait(1); | ||||||
|            player:EndEvent(); |            player:EndEvent(); | ||||||
|  |             local player_zone = player:GetPos()[5]; | ||||||
|  |             spawnType = 0x0A; | ||||||
|  |             if (player_zone == aethernet[city][choice].zone) then | ||||||
|  |                  | ||||||
|  |                 GetWorldManager():DoPlayerMoveInZone(player, aethernet[city][choice].x, aethernet[city][choice].y, aethernet[city][choice].z, aethernet[city][choice].r, spawnType);     | ||||||
|  |             else | ||||||
|  |                 GetWorldManager():DoZoneChange(player, aethernet[city][choice].zone, nil, 0, spawnType, aethernet[city][choice].x, aethernet[city][choice].y, aethernet[city][choice].z, aethernet[city][choice].r);     | ||||||
|  |             end; | ||||||
|         else |         else | ||||||
|          --   callClientFunction(player, "eventAfterWarpOtherZone", player);   -- Commented out for now to prevent double fade-to-black for warp |  | ||||||
|             player:EndEvent(); |             player:EndEvent(); | ||||||
|            GetWorldManager():DoZoneChange(player, aethernet[city][choice].zone, nil, 0, 15, aethernet[city][choice].x, aethernet[city][choice].y, aethernet[city][choice].z, aethernet[city][choice].r);     |  | ||||||
|         end |         end | ||||||
|     end |     end | ||||||
|      |      | ||||||
|     player:EndEvent(); |      | ||||||
| end | end | ||||||
|   | |||||||
| @@ -6,8 +6,50 @@ Handles mounting and dismounting the Chocobo and Goobbue | |||||||
|  |  | ||||||
| --]] | --]] | ||||||
|  |  | ||||||
|  | require ("global") | ||||||
|  |  | ||||||
| function onEventStarted(player, actor, triggerName, isGoobbue) | function onEventStarted(player, actor, triggerName, isGoobbue) | ||||||
|  |  | ||||||
|  | <<<<<<< HEAD | ||||||
|  |     if (player:GetState() == 0) then         | ||||||
|  |                  | ||||||
|  |         worldMaster = GetWorldMaster();      | ||||||
|  |          | ||||||
|  |         if (isGoobbue ~= true) then | ||||||
|  |             player:ChangeMusic(83, MUSIC_FADEIN); | ||||||
|  |             player:SendGameMessage(player, worldMaster, 26001, 0x20); | ||||||
|  |             player:SetMountState(1); | ||||||
|  |         else | ||||||
|  |             player:ChangeMusic(98, MUSIC_FADEIN); | ||||||
|  |             player:SendGameMessage(player, worldMaster, 26019, 0x20); | ||||||
|  |             player:SetMountState(2); | ||||||
|  |         end | ||||||
|  |          | ||||||
|  |         player:ChangeSpeed(0.0, 3.6, 9.0, 9.0); | ||||||
|  |         player:ChangeState(15); | ||||||
|  |     else | ||||||
|  |         player:ChangeMusic(player:GetZone().bgmDay, MUSIC_FADEIN); | ||||||
|  |          | ||||||
|  |         worldMaster = GetWorldMaster(); | ||||||
|  |          | ||||||
|  |         if (player.rentalExpireTime != 0) then | ||||||
|  |             player:SendGameMessage(player, worldMaster, 26004, 0x20); --You dismount. | ||||||
|  |         else | ||||||
|  |             if (player:GetMountState() == 1) then | ||||||
|  |                 player:SendGameMessage(player, worldMaster, 26003, 0x20); --You dismount X. | ||||||
|  |             else | ||||||
|  |                 player:SendGameMessage(player, worldMaster, 26021, 0x20); --You dismount your Gobbue. | ||||||
|  |             end | ||||||
|  |         end | ||||||
|  |          | ||||||
|  |         player:SetMountState(0); | ||||||
|  |         player:ChangeSpeed(0.0, 2.0, 5.0, 5.0) | ||||||
|  |         player:ChangeState(0);  | ||||||
|  |     end | ||||||
|  |      | ||||||
|  |     player:EndEvent(); | ||||||
|  |      | ||||||
|  | ======= | ||||||
| 	if (player:GetState() == 0) then		 | 	if (player:GetState() == 0) then		 | ||||||
| 				 | 				 | ||||||
| 		worldMaster = GetWorldMaster();		 | 		worldMaster = GetWorldMaster();		 | ||||||
| @@ -46,4 +88,5 @@ function onEventStarted(player, actor, triggerName, isGoobbue) | |||||||
| 	 | 	 | ||||||
| 	player:EndEvent(); | 	player:EndEvent(); | ||||||
| 	 | 	 | ||||||
|  | >>>>>>> ioncannon/quest_system | ||||||
| end | end | ||||||
| @@ -6,7 +6,7 @@ Functions: | |||||||
|  |  | ||||||
| eventRegion(numAnima) | eventRegion(numAnima) | ||||||
| eventAetheryte(region, animaCost1, animaCost2, animaCost3, animaCost4, animaCost5, animaCost6) | eventAetheryte(region, animaCost1, animaCost2, animaCost3, animaCost4, animaCost5, animaCost6) | ||||||
| eventConfirm(isReturn, isInBattle, cityReturnNum, 138821, forceAskReturnOnly) | eventConfirm(isReturn, isInBattle, HomePointInn, HomePoint, forceAskReturnOnly) | ||||||
|  |  | ||||||
| --]] | --]] | ||||||
|  |  | ||||||
| @@ -52,41 +52,112 @@ teleportMenuToAetheryte = { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | zoneIdToRegionChoice = | ||||||
|  | { | ||||||
|  |     [128] = 1, [129] = 1, [130] = 1, [131] = 1, [132] = 1, [133] = 1, [134] = 1, [135] = 1, [230] = 1, | ||||||
|  |     [143] = 2, [144] = 2, [145] = 2, [147] = 2, [148] = 2, | ||||||
|  |     [150] = 3, [151] = 3, [152] = 3, [153] = 3, [154] = 3, [155] = 3, [157] = 3, [158] = 3, [159] = 3, [160] = 3, [206] = 3, | ||||||
|  |     [170] = 4, [171] = 4, [172] = 4, [173] = 4, [174] = 4, [175] = 4, [176] = 4, [178] = 4, [180] = 4, [181] = 4, [209] = 4, | ||||||
|  |     [190] = 5 | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| function onEventStarted(player, actor, eventType, eventName, isTeleport) | function onEventStarted(player, actor, eventType, eventName, isTeleport) | ||||||
|  |  | ||||||
|     local worldMaster = GetWorldMaster(); |     local worldMaster = GetWorldMaster(); | ||||||
|  |     local playerState = player:GetState(); | ||||||
|  |     local currentAnima = 100; | ||||||
|  |     local baseAnimaCost = 6; | ||||||
|  |     local animaCost = 0; | ||||||
|  |     local favoredLocation = {1280003, 1280005, 1280062}; | ||||||
|  |     local currentRegion = zoneIdToRegionChoice[player:GetPos()[5]] or 0; | ||||||
|  |     local isCity = {[1280001] = true, [1280061] = true, [1280031] = true}; | ||||||
|  |     local isFavoredDesination = false; | ||||||
|  |     local destination = 0; | ||||||
|  |  | ||||||
| 	if (isTeleport == 0) then		 |  | ||||||
|  |     if (isTeleport == 0) then -- Teleport hit | ||||||
|         while (true) do |         while (true) do | ||||||
| 			regionChoice = callClientFunction(player, "delegateCommand", actor, "eventRegion", 100); |             regionChoice = callClientFunction(player, "delegateCommand", actor, "eventRegion", currentAnima); | ||||||
|              |              | ||||||
|             if (regionChoice == nil) then break end |             if (regionChoice == nil) then break end | ||||||
|          |          | ||||||
|             while (true) do |             while (true) do | ||||||
| 				aetheryteChoice = callClientFunction(player, "delegateCommand", actor, "eventAetheryte", regionChoice, 2, 2, 2, 4, 4, 4); |                 if (regionChoice > 0 and regionChoice < 6) then -- If Region selected | ||||||
|  |  | ||||||
|  |                     if (regionChoice == currentRegion) then -- Check if selected region matches player's region, reduce cost if so. | ||||||
|  |                         baseAnimaCost = baseAnimaCost - 2; | ||||||
|  |                     else | ||||||
|  |                         baseAnimaCost = 6; | ||||||
|  |                     end | ||||||
|  |                      | ||||||
|  |                     -- Assign anima cost to the six possible slots after factoring in same region or not. | ||||||
|  |                     animaCost = {baseAnimaCost, baseAnimaCost, baseAnimaCost, baseAnimaCost, baseAnimaCost, baseAnimaCost}; | ||||||
|  |      | ||||||
|  |                     if (isCity[teleportMenuToAetheryte[regionChoice][1]] == true) then | ||||||
|  |                         -- Halve the cost of applicable city aetheryte | ||||||
|  |                         animaCost[1] = animaCost[1] / 2; | ||||||
|  |                     end | ||||||
|  |  | ||||||
|  |                 elseif (regionChoice == 6) then -- Favored Destinations selected. | ||||||
|  |                     -- Dummy info.  Favored would be half price after factoring in same region cost or not. | ||||||
|  |                     animaCost = {2, 3, 3, favoredLocation[1], favoredLocation[2], favoredLocation[3]}; | ||||||
|  |                     isFavoredDesination = true; | ||||||
|  |                 end | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                 aetheryteChoice = callClientFunction( | ||||||
|  |                                                 player,  | ||||||
|  |                                                 "delegateCommand",  | ||||||
|  |                                                 actor,  | ||||||
|  |                                                 "eventAetheryte",  | ||||||
|  |                                                 regionChoice,  | ||||||
|  |                                                 animaCost[1], | ||||||
|  |                                                 animaCost[2], | ||||||
|  |                                                 animaCost[3], | ||||||
|  |                                                 animaCost[4], | ||||||
|  |                                                 animaCost[5], | ||||||
|  |                                                 animaCost[6] | ||||||
|  |                                                 ); | ||||||
|  |                  | ||||||
|                  |                  | ||||||
|                 if (aetheryteChoice == nil) then break end |                 if (aetheryteChoice == nil) then break end | ||||||
|                  |                  | ||||||
|                 player:PlayAnimation(0x4000FFA); |                 player:PlayAnimation(0x4000FFA); | ||||||
| 				player:SendGameMessage(worldMaster, 34101, 0x20, 2, teleportMenuToAetheryte[regionChoice][aetheryteChoice], 100, 100);	 |                  | ||||||
|  |                 if (isFavoredDesination == true) then | ||||||
|  |                     destination = aetheryteTeleportPositions[favoredLocation[aetheryteChoice]]; | ||||||
|  |                     player:SendGameMessage(worldMaster, 34101, 0x20, 2, favoredLocation[aetheryteChoice], animaCost[aetheryteChoice], currentAnima);                 | ||||||
|  |                 else | ||||||
|  |                     destination = aetheryteTeleportPositions[teleportMenuToAetheryte[regionChoice][aetheryteChoice]]; | ||||||
|  |                     player:SendGameMessage(worldMaster, 34101, 0x20, 2, teleportMenuToAetheryte[regionChoice][aetheryteChoice], animaCost[aetheryteChoice], currentAnima);   | ||||||
|  |                 end | ||||||
|  |                  | ||||||
|                 confirmChoice = callClientFunction(player, "delegateCommand", actor, "eventConfirm", false, false, 1, 138824, false);                |                 confirmChoice = callClientFunction(player, "delegateCommand", actor, "eventConfirm", false, false, 1, 138824, false);                | ||||||
|  |                      | ||||||
|                 if (confirmChoice == 1) then |                 if (confirmChoice == 1) then | ||||||
|                     player:PlayAnimation(0x4000FFB); |                     player:PlayAnimation(0x4000FFB); | ||||||
|                     player:SendGameMessage(worldMaster, 34105, 0x20);            |                     player:SendGameMessage(worldMaster, 34105, 0x20);            | ||||||
| 					--Do teleport		 |  | ||||||
| 					destination = aetheryteTeleportPositions[teleportMenuToAetheryte[regionChoice][aetheryteChoice]];			 |                     if (destination ~= 0) then                         | ||||||
| 					if (destination ~= nil) then						 |  | ||||||
|                         randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5); |                         randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5); | ||||||
|                         rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]); |                         rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]); | ||||||
|  |                         if (playerState == ACTORSTATE_MOUNTED) then  | ||||||
|  |                             player:SetMountState(0); | ||||||
|  |                             player:ChangeSpeed(0.0, 2.0, 5.0, 5.0) | ||||||
|  |                             player:ChangeState(ACTORSTATE_PASSIVE); | ||||||
|  |                         end | ||||||
|  |                          | ||||||
|                         GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation); |                         GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation); | ||||||
|                     end |                     end | ||||||
|                 end |                 end | ||||||
|  |                      | ||||||
|             player:endEvent(); |             player:endEvent(); | ||||||
|             return; |             return; | ||||||
|             end |             end | ||||||
| 			 |  | ||||||
|         end |         end | ||||||
| 	else |          | ||||||
|  |     else -- Return hit | ||||||
|         player:PlayAnimation(0x4000FFA); |         player:PlayAnimation(0x4000FFA); | ||||||
|         local choice, isInn = callClientFunction(player, "delegateCommand", actor, "eventConfirm", true, false, player:GetHomePointInn(), player:GetHomePoint(), false);         |         local choice, isInn = callClientFunction(player, "delegateCommand", actor, "eventConfirm", true, false, player:GetHomePointInn(), player:GetHomePoint(), false);         | ||||||
|         if (choice == 1) then |         if (choice == 1) then | ||||||
| @@ -115,8 +186,13 @@ function onEventStarted(player, actor, eventType, eventName, isTeleport) | |||||||
|                 if (destination ~= nil) then |                 if (destination ~= nil) then | ||||||
|                     randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5); |                     randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5); | ||||||
|                     rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]); |                     rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]); | ||||||
| 					GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation); |                     if (playerState == ACTORSTATE_MOUNTED) then  | ||||||
|  |                         player:SetMountState(0); | ||||||
|  |                         player:ChangeSpeed(0.0, 2.0, 5.0, 5.0) | ||||||
|  |                         player:ChangeState(ACTORSTATE_PASSIVE); | ||||||
|  |                     end | ||||||
|                      |                      | ||||||
|  |                     GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation); | ||||||
|                 end |                 end | ||||||
|             end |             end | ||||||
|         end |         end | ||||||
| @@ -124,3 +200,4 @@ function onEventStarted(player, actor, eventType, eventName, isTeleport) | |||||||
|  |  | ||||||
|     player:endEvent(); |     player:endEvent(); | ||||||
| end | end | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,14 +1,17 @@ | |||||||
| properties = { | properties = { | ||||||
|     permissions = 0, |     permissions = 0, | ||||||
|     parameters = "s", |     parameters = "ss", | ||||||
|     description = |     description = | ||||||
| [[ | [[ | ||||||
| Plays music <id> to player. | Plays music <id> to player. | ||||||
| !music <id> | !music <id> | ||||||
|  | !music <id> <transition_type> | ||||||
| ]], | ]], | ||||||
| } | } | ||||||
|  |  | ||||||
| function onTrigger(player, argc, music) | function onTrigger(player, argc, music, transition) | ||||||
|     music = tonumber(music) or 0; |     music = tonumber(music) or 0; | ||||||
|     player:ChangeMusic(music); |     transition = tonumber(transition) or nil; | ||||||
|  |     player:SendMessage(0x20, "", tostring(argc).." "..tostring(music).." "..tostring(transition)); | ||||||
|  |     player:ChangeMusic(music, transition); | ||||||
| end; | end; | ||||||
| @@ -22,6 +22,5 @@ function onTrigger(player, argc, actorClassId) | |||||||
|     if actor then |     if actor then | ||||||
|         actor:ChangeNpcAppearance(actorClassId); |         actor:ChangeNpcAppearance(actorClassId); | ||||||
|         player:SendMessage(messageID, sender,  string.format("appearance %u", actorClassId)); |         player:SendMessage(messageID, sender,  string.format("appearance %u", actorClassId)); | ||||||
|     end; |     end | ||||||
|             | end | ||||||
| end; |  | ||||||
| @@ -29,7 +29,7 @@ function onTrigger(player, argc, actorClassId, width, height) | |||||||
|         --local x, y, z = player.GetPos(); |         --local x, y, z = player.GetPos(); | ||||||
|         for i = 0, w do |         for i = 0, w do | ||||||
|             for j = 0, h do |             for j = 0, h do | ||||||
| 				actor = player.CurrentArea:SpawnActor(actorClassId, "test", pos[0] + (i - (w / 2) * 3), pos[1], pos[2] + (j - (h / 2) * 3), pos[3]); | 				actor = player.CurrentArea:SpawnActor(actorClassId, "test", x + (i - (w / 2) * 3), y, z + (j - (h / 2) * 3), rot); | ||||||
| 				actor.SetAppearance(1001149) | 				actor.SetAppearance(1001149) | ||||||
| 			end | 			end | ||||||
| 		end | 		end | ||||||
|   | |||||||
| @@ -56,7 +56,8 @@ function onTrigger(player, argc, p1, p2, p3, p4, privateArea, privateAreaType, n | |||||||
|             local x = tonumber(applyPositionOffset(p2, player_x)) or player_x; |             local x = tonumber(applyPositionOffset(p2, player_x)) or player_x; | ||||||
|             local y = tonumber(applyPositionOffset(p3, player_y)) or player_y; |             local y = tonumber(applyPositionOffset(p3, player_y)) or player_y; | ||||||
|             local z = tonumber(applyPositionOffset(p4, player_z)) or player_z; |             local z = tonumber(applyPositionOffset(p4, player_z)) or player_z; | ||||||
|             if privateArea == "" then privateArea = nil end; |             if privateArea == nil then privateArea = nil end; | ||||||
|  |             if privateAreaType == nila then privateAreaType = 0 end; | ||||||
|             player:SendMessage(messageID, sender, string.format("setting coordinates X:%d Y:%d Z:%d to new zone (%d) private area:%s", x, y, z, zone, privateArea or "unspecified")); |             player:SendMessage(messageID, sender, string.format("setting coordinates X:%d Y:%d Z:%d to new zone (%d) private area:%s", x, y, z, zone, privateArea or "unspecified")); | ||||||
|             worldManager:DoZoneChange(player, zone, privateArea, tonumber(privateAreaType), 0x02, x, y, z, 0.00); |             worldManager:DoZoneChange(player, zone, privateArea, tonumber(privateAreaType), 0x02, x, y, z, 0.00); | ||||||
|         end |         end | ||||||
|   | |||||||
| @@ -18,21 +18,22 @@ function onTrigger(player, argc, uID) | |||||||
|     end;  |     end;  | ||||||
|      |      | ||||||
|     actor = GetWorldManager():GetActorInWorldByUniqueId(uID);         |     actor = GetWorldManager():GetActorInWorldByUniqueId(uID);         | ||||||
|  |     actorId = actor:GetActorClassId(); | ||||||
|     if (actor ~= nil) then |     if (actor ~= nil) then | ||||||
|         local actorPos = actor:GetPos(); |         local actorPos = actor:GetPos(); | ||||||
|         local playerPos = player:GetPos(); |         local playerPos = player:GetPos(); | ||||||
|  |  | ||||||
|         if actorPos[4] == playerPos[4] then |         if actorPos[5] == playerPos[5] then | ||||||
|             worldManager:DoPlayerMoveInZone(player, actorPos[0], actorPos[1], actorPos[2], actorPos[3], 0x00); |             worldManager:DoPlayerMoveInZone(player, actorPos[1], actorPos[2], actorPos[3], actorPos[4], 0x00); | ||||||
|         else |         else | ||||||
|             worldManager:DoZoneChange(player, actorPos[4], nil, 0, 0x02, actorPos[0], actorPos[1], actorPos[2], actorPos[3]);   |             worldManager:DoZoneChange(player, actorPos[5], nil, 0, 0x02, actorPos[1], actorPos[2], actorPos[3], actorPos[4]);   | ||||||
|         end |         end | ||||||
|          |          | ||||||
|         message =  string.format("Moving to %s 's coordinates @ zone %s, %.3f %.3f %.3f ", uID, actorPos[4], actorPos[0], actorPos[1], actorPos[2]); |         message =  string.format("Moving to %s 's coordinates @ zone %s, %.3f %.3f %.3f ", uID, actorPos[5], actorPos[1], actorPos[2], actorPos[3]); | ||||||
| 	end	; | 	end	; | ||||||
|  |  | ||||||
|     player:SendMessage(messageID, sender, message); |     player:SendMessage(messageID, sender, message); | ||||||
|  |     player:SendMessage(0x20, "", "Actor Class Id: "..actorId); | ||||||
|  |  | ||||||
| end | end | ||||||
|  |  | ||||||
|   | |||||||
| @@ -11,7 +11,28 @@ function init() | |||||||
| 	return "/Director/Quest/QuestDirectorMan0u001"; | 	return "/Director/Quest/QuestDirectorMan0u001"; | ||||||
| end | end | ||||||
|  |  | ||||||
| function onEventStarted(player, actor, triggerName)	 |  | ||||||
|  | function onCreateContentArea(players, director, contentArea, contentGroup) | ||||||
|  | 	 | ||||||
|  | 	niellefresne = contentArea:SpawnActor(2290003, "niellefresne", -11.86, 192, 35.06, -0.8); | ||||||
|  | 	thancred = contentArea:SpawnActor(2290004, "thancred", -26.41, 192, 39.52, 1.2); | ||||||
|  | 	thancred:ChangeState(2); | ||||||
|  | 	 | ||||||
|  | 	mob1 = contentArea:SpawnActor(2203301, "mob1", -6.193, 192, 47.658, -2.224); | ||||||
|  |  | ||||||
|  | 	openingStoper = contentArea:SpawnActor(1090385, "openingstoper", -24.34, 192, 34.22, 0); | ||||||
|  | 	 | ||||||
|  | 	for _, player in pairs(players) do | ||||||
|  |         contentGroup:AddMember(player); | ||||||
|  |     end; | ||||||
|  |      | ||||||
|  | 	contentGroup:AddMember(director); | ||||||
|  | 	contentGroup:AddMember(niellefresne); | ||||||
|  | 	contentGroup:AddMember(thancred); | ||||||
|  | 	contentGroup:AddMember(mob1); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onEventStarted(player, director, triggerName)	 | ||||||
|  |  | ||||||
| 	man0u0Quest = player:GetQuest("Man0u0"); | 	man0u0Quest = player:GetQuest("Man0u0"); | ||||||
| 	startTutorialMode(player); | 	startTutorialMode(player); | ||||||
| @@ -19,7 +40,8 @@ function onEventStarted(player, actor, triggerName) | |||||||
| 	player:EndEvent(); | 	player:EndEvent(); | ||||||
| 	waitForSignal("playerActive"); | 	waitForSignal("playerActive"); | ||||||
| 	wait(1); --If this isn't here, the scripts bugs out. TODO: Find a better alternative. | 	wait(1); --If this isn't here, the scripts bugs out. TODO: Find a better alternative. | ||||||
| 	kickEventContinue(player, actor, "noticeEvent", "noticeEvent");	 | 	kickEventContinue(player, director, "noticeEvent", "noticeEvent");	 | ||||||
|  |      | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrBtl002", nil, nil, nil); | 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrBtl002", nil, nil, nil); | ||||||
| 	player:EndEvent(); | 	player:EndEvent(); | ||||||
| 	wait(4); | 	wait(4); | ||||||
| @@ -40,7 +62,7 @@ function onEventStarted(player, actor, triggerName) | |||||||
| 	wait(7); | 	wait(7); | ||||||
| 	player:ChangeMusic(7); | 	player:ChangeMusic(7); | ||||||
| 	player:ChangeState(0);  | 	player:ChangeState(0);  | ||||||
| 	kickEventContinue(player, actor, "noticeEvent", "noticeEvent"); | 	kickEventContinue(player, director, "noticeEvent", "noticeEvent"); | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent020", nil, nil, nil);	 | 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent020", nil, nil, nil);	 | ||||||
| 	 | 	 | ||||||
| 	--[[ | 	--[[ | ||||||
| @@ -56,9 +78,8 @@ function onEventStarted(player, actor, triggerName) | |||||||
| 		OpenWidget (DEFEAT ENEMY)			 | 		OpenWidget (DEFEAT ENEMY)			 | ||||||
| 	]] | 	]] | ||||||
| 	 | 	 | ||||||
| 	man0u0Quest:NextPhase(10);	 | 	man0u0Quest:StartSequence(10);		 | ||||||
| 	player:EndEvent();	 |  | ||||||
| 	 |  | ||||||
| 	player.CurrentArea:ContentFinished(); | 	player.CurrentArea:ContentFinished(); | ||||||
| 	GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 3, 15, -22.81, 196, 87.82, 2.98); | 	GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 3, 15, -22.81, 196, 87.82, 2.98); | ||||||
|  |     player:EndEvent(); | ||||||
| end | end | ||||||
|   | |||||||
| @@ -164,6 +164,14 @@ QFLAG_NONE = 0; | |||||||
| QFLAG_PLATE = 2; | QFLAG_PLATE = 2; | ||||||
| QFLAG_MAP = 3; | QFLAG_MAP = 3; | ||||||
|  |  | ||||||
|  | -- MUSIC | ||||||
|  | MUSIC_IMMEDIATE = 1; | ||||||
|  | MUSIC_CROSSFADE = 2; | ||||||
|  | MUSIC_LAYER = 3; | ||||||
|  | MUSIC_FADEIN = 4; | ||||||
|  | MUSIC_NORMAL_CHANNEL = 5; | ||||||
|  | MUSIC_BATTLE_CHANNEL = 6; | ||||||
|  |  | ||||||
| -- Common Helper Functions | -- Common Helper Functions | ||||||
| function attentionMessage(player, textId, ...) | function attentionMessage(player, textId, ...) | ||||||
| 	player:SendGameMessage(GetWorldMaster(), textId, 0x20, ...); | 	player:SendGameMessage(GetWorldMaster(), textId, 0x20, ...); | ||||||
|   | |||||||
| @@ -46,18 +46,17 @@ function onBeginLogin(player) | |||||||
| 		player:GetQuest(110005):ClearQuestData(); | 		player:GetQuest(110005):ClearQuestData(); | ||||||
| 		player:GetQuest(110005):ClearQuestFlags(); | 		player:GetQuest(110005):ClearQuestFlags(); | ||||||
| 	elseif (player:HasQuest(110009) == true and player.CurrentArea.ZoneId == 184) then | 	elseif (player:HasQuest(110009) == true and player.CurrentArea.ZoneId == 184) then | ||||||
| 		--director = player.CurrentArea:CreateDirector("OpeningDirector", false);		 | 		director = player.CurrentArea:CreateDirector("OpeningDirector", false);		 | ||||||
| 		--player:AddDirector(director); | 		player:AddDirector(director); | ||||||
| 		--director:StartDirector(false);		 | 		director:StartDirector(true); | ||||||
| 		--player:SetLoginDirector(director);		 | 		player:SetLoginDirector(director);		 | ||||||
| 		--player:KickEvent(director, "noticeEvent", true); | 		player:KickEvent(director, "noticeEvent", true); | ||||||
| 		-- | 		 | ||||||
| 		player.positionX = 5.364327; | 		player.positionX = 5.364327; | ||||||
| 		player.positionY = 196.0; | 		player.positionY = 196.0; | ||||||
| 		player.positionZ = 133.6561; | 		player.positionZ = 133.6561; | ||||||
| 		player.rotation = -2.849384; | 		player.rotation = -2.849384; | ||||||
| 		player:GetQuest(110009):ClearQuestData(); | 		player:GetQuest(110009):ClearClearData(); | ||||||
| 		player:GetQuest(110009):ClearQuestFlags(); |  | ||||||
| 	end	 | 	end	 | ||||||
| end | end | ||||||
|  |  | ||||||
|   | |||||||
| @@ -18,13 +18,22 @@ local defaultTalkFst = { | |||||||
| 	[1001081] = "defaultTalkWithKhumamoshroca_001",			-- Khuma Moshroca | 	[1001081] = "defaultTalkWithKhumamoshroca_001",			-- Khuma Moshroca | ||||||
| 	[1001103] = "defaultTalkWithMestonnaux_001", 			-- Mestonnaux | 	[1001103] = "defaultTalkWithMestonnaux_001", 			-- Mestonnaux | ||||||
| 	[1001396] = "defaultTalkWithLefwyne_001",				-- Lefwyne | 	[1001396] = "defaultTalkWithLefwyne_001",				-- Lefwyne | ||||||
| 	[1001430] = "defaultTalkWithKinnison_001",				-- Kinnison | 	[1001430] = "defaultTalkWithKinnison_001",				-- Kinnison             - Two args (nil errors client).  If either >= 0, dialog mentions you've met Kan-E-Senna. | ||||||
| 	[1001437] = "defaultTalkWithSybell_001", 				-- Sybell	 | 	[1001437] = "defaultTalkWithSybell_001" 				-- Sybell	 | ||||||
|  |  --   [1000458] = "defaultTalkWithInn_Desk" | ||||||
| } | } | ||||||
|  |  | ||||||
| function onTalk(player, quest, npc, eventName) | function onTalk(player, quest, npc, eventName) | ||||||
| 	local clientFunc = defaultTalkFst[npc:GetActorClassId()]; |  | ||||||
|  |     local npcId = npc:GetActorClassId(); | ||||||
|  | 	local clientFunc = defaultTalkFst[npcId]; | ||||||
|  |      | ||||||
|  |     if (npcId == 1001430) then -- Kinnison | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, clientFunc, -1,-1); | ||||||
|  |     else | ||||||
|         callClientFunction(player, "delegateEvent", player, quest, clientFunc); |         callClientFunction(player, "delegateEvent", player, quest, clientFunc); | ||||||
|  |     end | ||||||
|  |      | ||||||
| 	player:EndEvent(); | 	player:EndEvent(); | ||||||
| end | end | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,6 +13,270 @@ Contains all default lines for talkable npcs in the Sea Region (aka La Noscea). | |||||||
| -- [ActorClassId] = "client_function_name" | -- [ActorClassId] = "client_function_name" | ||||||
| local defaultTalkSea = { | local defaultTalkSea = { | ||||||
| 	[1234] = "defaultTalkWithLefchild_001" -- Lefchild | 	[1234] = "defaultTalkWithLefchild_001" -- Lefchild | ||||||
|  |  | ||||||
|  | --[[ | ||||||
|  |  | ||||||
|  | defaultTalkStartMan(A0_1, A1_2, A2_3) | ||||||
|  | defaultTalkOiSAM(A0_4, A1_5, A2_6) | ||||||
|  | defaultTalkMLinhbo(A0_7, A1_8, A2_9) | ||||||
|  | defaultTalkWithMytesyn_001(A0_10, A1_11, A2_12) | ||||||
|  | defaultTalkWithUrsulie_001(A0_13, A1_14, A2_15) | ||||||
|  | defaultTalkWithAshakkal_001(A0_16, A1_17, A2_18) | ||||||
|  | defaultTalkWithPiralnaut_001(A0_19, A1_20, A2_21) | ||||||
|  | defaultTalkWithBaderon_001(A0_22, A1_23, A2_24) | ||||||
|  | defaultTalkWithCharlys_001(A0_25, A1_26, A2_27) | ||||||
|  | defaultTalkWithNoline_001(A0_28, A1_29, A2_30) | ||||||
|  | defaultTalkWithJossy_001(A0_31, A1_32, A2_33) | ||||||
|  | defaultTalkWithPrudentia_001(A0_34, A1_35, A2_36) | ||||||
|  | defaultTalkWithPulmia_001(A0_37, A1_38, A2_39) | ||||||
|  | defaultTalkWithAentfoet_001(A0_40, A1_41, A2_42) | ||||||
|  | defaultTalkWithKikichua_001(A0_43, A1_44, A2_45) | ||||||
|  | defaultTalkWithGerulf_001(A0_46, A1_47, A2_48) | ||||||
|  | defaultTalkWithHobriaut_001(A0_49, A1_50, A2_51) | ||||||
|  | defaultTalkWithRsushmo_001(A0_52, A1_53, A2_54) | ||||||
|  | defaultTalkWithFrailoise_001(A0_55, A1_56, A2_57) | ||||||
|  | defaultTalkWithIsaudorel_001(A0_58, A1_59, A2_60) | ||||||
|  | defaultTalkWithTotoruto_001(A0_61, A1_62, A2_63) | ||||||
|  | defaultTalkWithChaunollet_001(A0_64, A1_65, A2_66) | ||||||
|  | defaultTalkWithRaragun_001(A0_67, A1_68, A2_69) | ||||||
|  | defaultTalkWithMynadaeg_001(A0_70, A1_71, A2_72) | ||||||
|  | defaultTalkWithTefhmoshroca_001(A0_73, A1_74, A2_75) | ||||||
|  | defaultTalkWithGinnade_001(A0_76, A1_77, A2_78) | ||||||
|  | defaultTalkWithArthurioux_001(A0_79, A1_80, A2_81) | ||||||
|  | defaultTalkWithBodenolf_001(A0_82, A1_83, A2_84) | ||||||
|  | defaultTalkWithBodenolf_002(A0_85, A1_86, A2_87) | ||||||
|  | defaultTalkWithQhaschalahko_001(A0_88, A1_89, A2_90) | ||||||
|  | defaultTalkWithJoellaut_001(A0_91, A1_92, A2_93) | ||||||
|  | defaultTalkWithIofa_001(A0_94, A1_95, A2_96) | ||||||
|  | defaultTalkWithSyngsmyd_001(A0_97, A1_98, A2_99) | ||||||
|  | defaultTalkWithMartiallais_001(A0_100, A1_101, A2_102) | ||||||
|  | defaultTalkWithFaucillien_001(A0_103, A1_104, A2_105) | ||||||
|  | defaultTalkWithNnmulika_001(A0_106, A1_107, A2_108) | ||||||
|  | defaultTalkWithLouviaune_001(A0_109, A1_110, A2_111) | ||||||
|  | defaultTalkWithClifton_001(A0_112, A1_113, A2_114) | ||||||
|  | defaultTalkWithUndsatz_001(A0_115, A1_116, A2_117) | ||||||
|  | defaultTalkWithRerenasu_001(A0_118, A1_119, A2_120) | ||||||
|  | defaultTalkWithDacajinjahl_001(A0_121, A1_122, A2_123) | ||||||
|  | defaultTalkWithBloemerl_001(A0_124, A1_125, A2_126) | ||||||
|  | defaultTalkWithXavalien_001(A0_127, A1_128, A2_129) | ||||||
|  | defaultTalkWithAstrid_001(A0_130, A1_131, A2_132) | ||||||
|  | defaultTalkWithWaekbyrt_001(A0_133, A1_134, A2_135) | ||||||
|  | defaultTalkWithWaekbyrt_002(A0_136, A1_137, A2_138) | ||||||
|  | defaultTalkWithNunuba_001(A0_139, A1_140, A2_141) | ||||||
|  | defaultTalkWithSraemha_001(A0_142, A1_143, A2_144) | ||||||
|  | defaultTalkWithOsitha_001(A0_145, A1_146, A2_147) | ||||||
|  | defaultTalkWithNeale_001(A0_148, A1_149, A2_150) | ||||||
|  | defaultTalkWithBayard_001(A0_151, A1_152, A2_153) | ||||||
|  | defaultTalkWithTriaine_001(A0_154, A1_155, A2_156) | ||||||
|  | defaultTalkWithWyrakhamazom_001(A0_157, A1_158, A2_159) | ||||||
|  | defaultTalkWithDhemsunn_001(A0_160, A1_161, A2_162) | ||||||
|  | defaultTalkWithNanapiri_001(A0_163, A1_164, A2_165) | ||||||
|  | defaultTalkWithMharelak_001(A0_166, A1_167, A2_168) | ||||||
|  | defaultTalkWithHasthwab_001(A0_169, A1_170, A2_171) | ||||||
|  | defaultTalkWithIghiimoui_001(A0_172, A1_173, A2_174) | ||||||
|  | defaultTalkWithMimiroon_001(A0_175, A1_176, A2_177) | ||||||
|  | defaultTalkWithJojoroon_001(A0_178, A1_179, A2_180) | ||||||
|  | defaultTalkWithChichiroon_001(A0_181, A1_182, A2_183) | ||||||
|  | defaultTalkWithBuburoon_001(A0_184, A1_185, A2_186) | ||||||
|  | defaultTalkWithHaldberk_001(A0_187, A1_188, A2_189) | ||||||
|  | defaultTalkWithP_tahjha_001(A0_190, A1_191, A2_192) | ||||||
|  | defaultTalkWithElilwaen_001(A0_193, A1_194, A2_195) | ||||||
|  | defaultTalkWithDodoroba_001(A0_196, A1_197, A2_198) | ||||||
|  | defaultTalkWithIvan_001(A0_199, A1_200, A2_201) | ||||||
|  | defaultTalkWithLilina_001(A0_202, A1_203, A2_204) | ||||||
|  | defaultTalkWithThosinbaen_001(A0_205, A1_206, A2_207) | ||||||
|  | defaultTalkWithRubh_epocan_001(A0_208, A1_209, A2_210) | ||||||
|  | defaultTalkWithRubh_hob_001(A0_211, A1_212, A2_213) | ||||||
|  | defaultTalkWithMaunie_001(A0_214, A1_215, A2_216) | ||||||
|  | defaultTalkWithMaunie_002(A0_217, A1_218, A2_219) | ||||||
|  | defaultTalkWithMaunie_003(A0_220, A1_221, A2_222) | ||||||
|  | defaultTalkWithGigirya_001(A0_223, A1_224, A2_225) | ||||||
|  | defaultTalkWithGigirya_002(A0_226, A1_227, A2_228) | ||||||
|  | defaultTalkWithGigirya_003(A0_229, A1_230, A2_231) | ||||||
|  | defaultTalkWithKokoto_001(A0_232, A1_233, A2_234) | ||||||
|  | defaultTalkWithKokoto_002(A0_235, A1_236, A2_237) | ||||||
|  | defaultTalkWithKokoto_003(A0_238, A1_239, A2_240) | ||||||
|  | defaultTalkWithTirauland_001(A0_241, A1_242, A2_243) | ||||||
|  | defaultTalkWithTirauland_010(A0_244, A1_245, A2_246) | ||||||
|  | defaultTalkWithTirauland_002(A0_247, A1_248, A2_249) | ||||||
|  | defaultTalkWithTirauland_003(A0_250, A1_251, A2_252) | ||||||
|  | defaultTalkWithEstrilda_001(A0_253, A1_254, A2_255) | ||||||
|  | defaultTalkWithEstrilda_002(A0_256, A1_257, A2_258) | ||||||
|  | defaultTalkWithEstrilda_003(A0_259, A1_260, A2_261) | ||||||
|  | defaultTalkWithGregory_001(A0_262, A1_263, A2_264) | ||||||
|  | defaultTalkWithGregory_002(A0_265, A1_266, A2_267) | ||||||
|  | defaultTalkWithGregory_003(A0_268, A1_269, A2_270) | ||||||
|  | defaultTalkWithChantine_001(A0_271, A1_272, A2_273) | ||||||
|  | defaultTalkWithChantine_002(A0_274, A1_275, A2_276) | ||||||
|  | defaultTalkWithChantine_003(A0_277, A1_278, A2_279) | ||||||
|  | defaultTalkWithNanaka_001(A0_280, A1_281, A2_282) | ||||||
|  | defaultTalkWithNanaka_002(A0_283, A1_284, A2_285) | ||||||
|  | defaultTalkWithNanaka_003(A0_286, A1_287, A2_288) | ||||||
|  | defaultTalkWithKakamehi_001(A0_289, A1_290, A2_291) | ||||||
|  | defaultTalkWithKakamehi_002(A0_292, A1_293, A2_294) | ||||||
|  | defaultTalkWithKakamehi_003(A0_295, A1_296, A2_297) | ||||||
|  | defaultTalkWithStephannot_001(A0_298, A1_299, A2_300) | ||||||
|  | defaultTalkWithStephannot_002(A0_301, A1_302, A2_303) | ||||||
|  | defaultTalkWithStephannot_003(A0_304, A1_305, A2_306) | ||||||
|  | defaultTalkWithJosias_001(A0_307, A1_308, A2_309) | ||||||
|  | defaultTalkWithJosias_002(A0_310, A1_311, A2_312) | ||||||
|  | defaultTalkWithJosias_003(A0_313, A1_314, A2_315) | ||||||
|  | defaultTalkWithFrithuric_001(A0_316, A1_317, A2_318) | ||||||
|  | defaultTalkWithFrithuric_002(A0_319, A1_320, A2_321) | ||||||
|  | defaultTalkWithFrithuric_003(A0_322, A1_323, A2_324) | ||||||
|  | defaultTalkWithLauda_001(A0_325, A1_326, A2_327) | ||||||
|  | defaultTalkWithLauda_002(A0_328, A1_329, A2_330) | ||||||
|  | defaultTalkWithLauda_003(A0_331, A1_332, A2_333) | ||||||
|  | defaultTalkWithH_lahono_001(A0_334, A1_335, A2_336) | ||||||
|  | defaultTalkWithWyrstmann_001(A0_337, A1_338, A2_339) | ||||||
|  | defaultTalkWithTraveler030_001(A0_340, A1_341, A2_342) | ||||||
|  | defaultTalkWithTraveler031_001(A0_343, A1_344, A2_345) | ||||||
|  | defaultTalkWithTraveler032_001(A0_346, A1_347, A2_348) | ||||||
|  | defaultTalkWithYouty001_001(A0_349, A1_350, A2_351) | ||||||
|  | defaultTalkWithMerchant002_001(A0_352, A1_353, A2_354) | ||||||
|  | defaultTalkWithPirate030_001(A0_355, A1_356, A2_357) | ||||||
|  | defaultTalkWithLady002_001(A0_358, A1_359, A2_360) | ||||||
|  | defaultTalkWithSlaiboli_001(A0_361, A1_362, A2_363) | ||||||
|  | defaultTalkWithSyhrdaeg_001(A0_364, A1_365, A2_366) | ||||||
|  | defaultTalkWithPfynhaemr_001(A0_367, A1_368, A2_369) | ||||||
|  | defaultTalkWithMzimzizi_001(A0_370, A1_371, A2_372) | ||||||
|  | defaultTalkWithCarrilaut_001(A0_373, A1_374, A2_375) | ||||||
|  | defaultTalkWithGautzelin_001(A0_376, A1_377, A2_378) | ||||||
|  | defaultTalkWithZonggo_001(A0_379, A1_380, A2_381) | ||||||
|  | defaultTalkWithAdventurer032_001(A0_382, A1_383, A2_384) | ||||||
|  | defaultTalkWithKob031_001(A0_385, A1_386, A2_387) | ||||||
|  | defaultTalkWithJainelette_001(A0_388, A1_389, A2_390) | ||||||
|  | defaultTalkWithBrictt_001(A0_391, A1_392, A2_393) | ||||||
|  | defaultTalkWithLiautroix_001(A0_394, A1_395, A2_396) | ||||||
|  | defaultTalkWithLaniaitte_001(A0_397, A1_398, A2_399) | ||||||
|  | defaultTalkWithNyaalamo_001(A0_400, A1_401, A2_402) | ||||||
|  | defaultTalkWithFaezbroes_001(A0_403, A1_404, A2_405) | ||||||
|  | defaultTalkWithIsleen_001(A0_406, A1_407, A2_408) | ||||||
|  | defaultTalkWithSundhimal_001(A0_409, A1_410, A2_411) | ||||||
|  | defaultTalkWithEugennoix_001(A0_412, A1_413, A2_414) | ||||||
|  | defaultTalkWithRyssfloh_001(A0_415, A1_416, A2_417, A3_418) | ||||||
|  | defaultTalkWithKihtgamduhla_001(A0_419, A1_420, A2_421, A3_422) | ||||||
|  | defaultTalkWithFabodji_001(A0_423, A1_424, A2_425) | ||||||
|  | defaultTalkWithRobairlain_001(A0_426, A1_427, A2_428) | ||||||
|  | defaultTalkWithNorman_001(A0_429, A1_430, A2_431) | ||||||
|  | defaultTalkWithBaenskylt_001(A0_432, A1_433, A2_434) | ||||||
|  | defaultTalkWithAimiliens_001(A0_435, A1_436, A2_437) | ||||||
|  | defaultTalkWithFongho_001(A0_438, A1_439, A2_440, A3_441) | ||||||
|  | defaultTalkWithBaenryss_001(A0_442, A1_443, A2_444) | ||||||
|  | defaultTalkWithChachapi_001(A0_445, A1_446, A2_447) | ||||||
|  | defaultTalkWithForchetaix_001(A0_448, A1_449, A2_450) | ||||||
|  | defaultTalkWithSosoze_001(A0_451, A1_452, A2_453) | ||||||
|  | defaultTalkWithColson_001(A0_454, A1_455, A2_456) | ||||||
|  | defaultTalkWithHihine_001(A0_457, A1_458, A2_459) | ||||||
|  | defaultTalkWithTrinne_001(A0_460, A1_461, A2_462) | ||||||
|  | defaultTalkWithSailor031_001(A0_463, A1_464, A2_465) | ||||||
|  | defaultTalkWithPorter001_001(A0_466, A1_467, A2_468) | ||||||
|  | defaultTalkWithAdventurer030_001(A0_469, A1_470, A2_471) | ||||||
|  | defaultTalkWithPirate031_001(A0_472, A1_473, A2_474) | ||||||
|  | defaultTalkWithLady001_001(A0_475, A1_476, A2_477) | ||||||
|  | defaultTalkWithAdventurer031_001(A0_478, A1_479, A2_480) | ||||||
|  | defaultTalkWithSolelle_001(A0_481, A1_482, A2_483) | ||||||
|  | defaultTalkWithZanthael_001(A0_484, A1_485, A2_486) | ||||||
|  | defaultTalkWithJghonako_001(A0_487, A1_488, A2_489) | ||||||
|  | defaultTalkWithAhldskyff_001(A0_490, A1_491, A2_492) | ||||||
|  | defaultTalkWithSkarnwaen_001(A0_493, A1_494, A2_495) | ||||||
|  | defaultTalkWithGnibnpha_001(A0_496, A1_497, A2_498) | ||||||
|  | defaultTalkWithAudaine_001(A0_499, A1_500, A2_501) | ||||||
|  | defaultTalkWithCeadda_001(A0_502, A1_503, A2_504) | ||||||
|  | defaultTalkWithZehrymm_001(A0_505, A1_506, A2_507) | ||||||
|  | defaultTalkWithTatasako_001(A0_508, A1_509, A2_510) | ||||||
|  | defaultTalkWithDympna_001(A0_511, A1_512, A2_513) | ||||||
|  | defaultTalkWithBmallpa_001(A0_514, A1_515, A2_516) | ||||||
|  | defaultTalkWithFerdillaix_001(A0_517, A1_518, A2_519) | ||||||
|  | defaultTalkWithFufuna_001(A0_520, A1_521, A2_522) | ||||||
|  | defaultTalkWithDavyd_001(A0_523, A1_524, A2_525) | ||||||
|  | defaultTalkWithOrtolf_001(A0_526, A1_527, A2_528) | ||||||
|  | defaultTalkWithMaetistym_001(A0_529, A1_530, A2_531) | ||||||
|  | defaultTalkWithFzhumii_001(A0_532, A1_533, A2_534) | ||||||
|  | defaultTalkWithShoshoma_001(A0_535, A1_536, A2_537) | ||||||
|  | defaultTalkWithArnegis_001(A0_538, A1_539, A2_540) | ||||||
|  | defaultTalkWithRbaharra_001(A0_541, A1_542, A2_543) | ||||||
|  | defaultTalkWithAergwynt_001(A0_544, A1_545, A2_546) | ||||||
|  | defaultTalkWithKakalan_001(A0_547, A1_548, A2_549) | ||||||
|  | defaultTalkWithSathzant_001(A0_550, A1_551, A2_552) | ||||||
|  | defaultTalkWithNnagali_001(A0_553, A1_554, A2_555) | ||||||
|  | defaultTalkWithVhynho_001(A0_556, A1_557, A2_558) | ||||||
|  | defaultTalkWithZuzule_001(A0_559, A1_560, A2_561) | ||||||
|  | defaultTalkWithFuzakanzak_001(A0_562, A1_563, A2_564) | ||||||
|  | defaultTalkWithBnhapla_001(A0_565, A1_566, A2_567) | ||||||
|  | defaultTalkWithMerlzirn_001(A0_568, A1_569, A2_570) | ||||||
|  | defaultTalkWithMerlzirn_002(A0_571, A1_572, A2_573) | ||||||
|  | defaultTalkWithNinianne_001(A0_574, A1_575, A2_576) | ||||||
|  | defaultTalkWithNheujawantal_001(A0_577, A1_578, A2_579) | ||||||
|  | defaultTalkWithMaisie_001(A0_580, A1_581, A2_582) | ||||||
|  | defaultTalkWithWhahtoa_001(A0_583, A1_584, A2_585) | ||||||
|  | defaultTalkWithGnanghal_001(A0_586, A1_587, A2_588) | ||||||
|  | defaultTalkWithKehdamujuuk_001(A0_589, A1_590, A2_591) | ||||||
|  | defaultTalkWithGert_001(A0_592, A1_593, A2_594) | ||||||
|  | defaultTalkWithLorhzant_001(A0_595, A1_596, A2_597) | ||||||
|  | defaultTalkWithNahctahr_001(A0_598, A1_599, A2_600) | ||||||
|  | defaultTalkWithKokomui_001(A0_601, A1_602, A2_603) | ||||||
|  | defaultTalkWithEptolmi_001(A0_604, A1_605, A2_606) | ||||||
|  | defaultTalkWithZabinie_001(A0_607, A1_608, A2_609) | ||||||
|  | defaultTalkWithDeladomadalado_001(A0_610, A1_611, A2_612) | ||||||
|  | defaultTalkWithSkoefmynd_001(A0_613, A1_614, A2_615) | ||||||
|  | defaultTalkWithBubusha_001(A0_616, A1_617, A2_618) | ||||||
|  | defaultTalkWithFupepe_001(A0_619, A1_620, A2_621) | ||||||
|  | defaultTalkWithOadebh_001(A0_622, A1_623, A2_624) | ||||||
|  | defaultTalkWithMyndeidin_001(A0_625, A1_626, A2_627) | ||||||
|  | defaultTalkWithModestmouse_001(A0_628, A1_629, A2_630) | ||||||
|  | defaultTalkWithDuchesnelt_001(A0_631, A1_632, A2_633) | ||||||
|  | defaultTalkWithSkribskoef_001(A0_634, A1_635, A2_636) | ||||||
|  | defaultTalkWithYalabali_001(A0_637, A1_638, A2_639) | ||||||
|  | defaultTalkWithSyzfrusk_001(A0_640, A1_641, A2_642) | ||||||
|  | defaultTalkWithInairoh_001(A0_643, A1_644, A2_645) | ||||||
|  | defaultTalkWithMagaswyn_001(A0_646, A1_647, A2_648) | ||||||
|  | defaultTalkWithSenahchalahko_001(A0_649, A1_650, A2_651) | ||||||
|  | defaultTalkWithWaldibert_001(A0_652, A1_653, A2_654) | ||||||
|  | defaultTalkWithEbandala_001(A0_655, A1_656, A2_657) | ||||||
|  | defaultTalkWithGuidingstar_001(A0_658, A1_659, A2_660) | ||||||
|  | defaultTalkWithHundredeyes_001(A0_661, A1_662, A2_663) | ||||||
|  | defaultTalkWithSizhaepocan_001(A0_664, A1_665, A2_666) | ||||||
|  | defaultTalkWithMareillie_001(A0_667, A1_668, A2_669) | ||||||
|  | defaultTalkWithAngryriver_001(A0_670, A1_671, A2_672) | ||||||
|  | defaultTalkWithSyntberk_001(A0_673, A1_674, A2_675) | ||||||
|  | defaultTalkWithBibiraka_001(A0_676, A1_677, A2_678) | ||||||
|  | defaultTalkWithThatakhamazom_001(A0_679, A1_680, A2_681) | ||||||
|  | defaultTalkWithRoostingcrow_001(A0_682, A1_683, A2_684) | ||||||
|  | defaultTalkWithZentsa_001(A0_685, A1_686, A2_687) | ||||||
|  | defaultTalkWithAldyet_001(A0_688, A1_689, A2_690) | ||||||
|  | defaultTalkWithAjinZukajin_001(A0_691, A1_692, A2_693) | ||||||
|  | defaultTalkWithRaplulu_001(A0_694, A1_695, A2_696) | ||||||
|  | defaultTalkWithMurlskylt_001(A0_697, A1_698, A2_699) | ||||||
|  | defaultTalkWith_Aenore001(A0_700, A1_701, A2_702) | ||||||
|  | defaultTalkWithANSGOR_100(A0_703, A1_704, A2_705) | ||||||
|  | defaultTalkWithImania_001(A0_706, A1_707, A2_708) | ||||||
|  | defaultTalkWithSweetnix_001(A0_709, A1_710, A2_711) | ||||||
|  | defaultTalkWithLolojo_001(A0_712, A1_713, A2_714) | ||||||
|  | defaultTalkWithQmolosi_001(A0_715, A1_716, A2_717) | ||||||
|  | defaultTalkWithBran_001(A0_718, A1_719, A2_720) | ||||||
|  | defaultTalkWithTutumoko_001(A0_721, A1_722, A2_723) | ||||||
|  | defaultTalkWithBrianna_001(A0_724, A1_725, A2_726) | ||||||
|  | defaultTalkWithFaine_001(A0_727, A1_728, A2_729) | ||||||
|  | defaultTalkWithAerghaemr_001(A0_730, A1_731, A2_732) | ||||||
|  | defaultTalkWithWalcher_001(A0_733, A1_734, A2_735) | ||||||
|  | defaultTalkWithKurtz_001(A0_736, A1_737, A2_738) | ||||||
|  | defaultTalkWithAlain_001(A0_739, A1_740, A2_741) | ||||||
|  | defaultTalkCaravanChocoboLim_001(A0_742, A1_743, A2_744) | ||||||
|  | downTownTalk(A0_745, A1_746, A2_747, A3_748, A4_749, A5_750) | ||||||
|  | tribeTalk(A0_752, A1_753, A2_754) | ||||||
|  | talkIdayCap(A0_755, A1_756, A2_757) | ||||||
|  | talkIday1(A0_758, A1_759, A2_760) | ||||||
|  | talkIday2(A0_761, A1_762, A2_763) | ||||||
|  | defaultTalkWithInn_Desk(A0_764, A1_765, A2_766) | ||||||
|  | defaultTalkWithInn_ExitDoor(A0_767, A1_768, A2_769) | ||||||
|  | defaultTalkWithExit01(A0_770, A1_771, A2_772) | ||||||
|  | defaultTalkWithMarketNpc(A0_773, A1_774, A2_775) | ||||||
|  | defaultTalkWithHamletGuardLim_001(A0_776, A1_777, A2_778) | ||||||
|  | --]] | ||||||
|  |      | ||||||
|  |      | ||||||
|  |      | ||||||
| } | } | ||||||
|  |  | ||||||
| function onTalk(player, quest, npc, eventName) | function onTalk(player, quest, npc, eventName) | ||||||
|   | |||||||
| @@ -14,12 +14,14 @@ Contains all default lines for talkable npcs in the Wilderness Region (aka Thana | |||||||
|  |  | ||||||
| -- [ActorClassId] = "client_function_name" | -- [ActorClassId] = "client_function_name" | ||||||
| local defaultTalkWil = { | local defaultTalkWil = { | ||||||
|  |      | ||||||
|     [1000046] = "defaultTalkWithGogofu_001",            -- Gogofu |     [1000046] = "defaultTalkWithGogofu_001",            -- Gogofu | ||||||
|     [1000047] = "defaultTalkWithHahayo_001",            -- Hahayo |     [1000047] = "defaultTalkWithHahayo_001",            -- Hahayo | ||||||
|     [1000070] = "defaultTalkWithKukumuko_001",          -- Kukumuko |     [1000070] = "defaultTalkWithKukumuko_001",          -- Kukumuko | ||||||
|     [1000293] = "defaultTalkWithDeaustie_001",          -- Deaustie     - defaultTalkWithDeaustie_002 (flavor for being on WVR?) |     [1000293] = "defaultTalkWithDeaustie_001",          -- Deaustie     - defaultTalkWithDeaustie_002 (her dialog after unlocking WVR?) | ||||||
|     [1000374] = "defaultTalkWithRorojaru_001",          -- Rorojaru |     [1000374] = "defaultTalkWithRorojaru_001",          -- Rorojaru | ||||||
|     [1000597] = "defaultTalkWithNogeloix_001",          -- Nogeloix |     [1000597] = "defaultTalkWithNogeloix_001",          -- Nogeloix | ||||||
|  |     [1000635] = "defaultTalkWithHnaufrid_001",          -- Hnaufrid     - Will not fire since he isn't PplStd | ||||||
|     [1000638] = "defaultTalkWithHawazizowazi_001",      -- Hawazi Zowazi |     [1000638] = "defaultTalkWithHawazizowazi_001",      -- Hawazi Zowazi | ||||||
|     [1000639] = "defaultTalkWithIsabella_001",          -- Isabella |     [1000639] = "defaultTalkWithIsabella_001",          -- Isabella | ||||||
|     [1000640] = "defaultTalkWithCiceroix_001",          -- Ciceroix |     [1000640] = "defaultTalkWithCiceroix_001",          -- Ciceroix | ||||||
| @@ -31,6 +33,8 @@ local defaultTalkWil = { | |||||||
|     [1000646] = "defaultTalkWithRinhmaimhov_001",       -- Rinh Maimhov |     [1000646] = "defaultTalkWithRinhmaimhov_001",       -- Rinh Maimhov | ||||||
|     [1000647] = "defaultTalkWithLyngwaek_001",          -- Lyngwaek |     [1000647] = "defaultTalkWithLyngwaek_001",          -- Lyngwaek | ||||||
|     [1000648] = "defaultTalkWithWawaton_001",           -- Wawaton |     [1000648] = "defaultTalkWithWawaton_001",           -- Wawaton | ||||||
|  |     [1000649] = "defaultTalkWithDyalwann_001",          -- <<<NOT IMPLEMENTED>>> - D'yalwann - Empty function.  No wiki info, likely unused.  Has book prop. | ||||||
|  |     [1000650] = "defaultTalkWithSedemode_001",          -- <<<NOT IMPLEMENTED>>> - Sedemode  - Empty function.  No wiki info, likely unused. | ||||||
|     [1000651] = "defaultTalkWithPopori_001",            -- Popori |     [1000651] = "defaultTalkWithPopori_001",            -- Popori | ||||||
|     [1000652] = "defaultTalkWithMamaza_001",            -- Mamaza |     [1000652] = "defaultTalkWithMamaza_001",            -- Mamaza | ||||||
|     [1000653] = "defaultTalkWithNhagiamariyo_001",      -- Nhagi Amariyo |     [1000653] = "defaultTalkWithNhagiamariyo_001",      -- Nhagi Amariyo | ||||||
| @@ -42,24 +46,29 @@ local defaultTalkWil = { | |||||||
|     [1000665] = "defaultTalkWithRosalind_001",          -- Rosalind |     [1000665] = "defaultTalkWithRosalind_001",          -- Rosalind | ||||||
|     [1000666] = "defaultTalkWithOcoco_001",             -- Ococo |     [1000666] = "defaultTalkWithOcoco_001",             -- Ococo | ||||||
|     [1000668] = "defaultTalkWithUbokhn_001",            -- U'bokhn |     [1000668] = "defaultTalkWithUbokhn_001",            -- U'bokhn | ||||||
|     [1000780] = "defaultTalkWithKiora_001",             -- Kiora |     [1000672] = "defaultTalkWithBlandhem_001",          -- <<<NOT IMPLEMENTED>>> - Blandhem (Camp Black Brush: X:56.089 Y:199.983 Z:-462.182 rough estimate) | ||||||
|     [1000781] = "defaultTalkWithOpondhao_001",          -- O'pondhao |     [1000673] = "defaultTalkWithChechedoba_001",        -- <<<NOT IMPLEMENTED>>> - Chechedoba (Camp Black Brush: X:8.436 Y:199.973 Z:-484.073 rough estimate) | ||||||
|     [1000782] = "defaultTalkWithBertram_001",           -- Bertram |     [1000674] = "defaultTalkWithZllayan_001",           -- <<<NOT IMPLEMENTED>>> - Z'llayan (Camp Drybone) | ||||||
|     [1000783] = "defaultTalkWithMinerva_001",           -- Minvera |     [1000780] = "defaultTalkWithKiora_001",             -- Kiora        - defaultTalkWithKiora_002 / 003 (informs about MRD guild) | ||||||
|     [1000784] = "defaultTalkWithZoengterbin_001",       -- Zoengterbin  - defaultTalkWithZoengterbin_002 / defaultTalkWithZoengterbin_003 (informs about LNC guild) |     [1000781] = "defaultTalkWithOpondhao_001",          -- O'pondhao    - defaultTalkWithOpondhao_002 / 003 (informs about FSH guild) | ||||||
|     [1000785] = "defaultTalkWithStyrmoeya_001",         -- Styrmoeya |     [1000782] = "defaultTalkWithBertram_001",           -- Bertram      - defaultTalkWithBertram_002 / 003 (informs about CUL guild) | ||||||
|     [1000786] = "defaultTalkWithYhahamariyo_001",       -- Yhah Amariyo |     [1000783] = "defaultTalkWithMinerva_001",           -- Minvera      - defaultTalkWithMinerva_002 / 003 / 004 (informs about BSM guild. Extra dialog also if you're on a DoW/M?) | ||||||
|     [1000787] = "defaultTalkWithHildie_001",            -- Hildie |     [1000784] = "defaultTalkWithZoengterbin_001",       -- Zoengterbin  - defaultTalkWithZoengterbin_002 / 003 (informs about LNC guild) | ||||||
|     [1000788] = "defaultTalkWithLettice_001",           -- Lettice |     [1000785] = "defaultTalkWithStyrmoeya_001",         -- Styrmoeya    - defaultTalkWithStyrmoeya_002 / 003 (informs about ARC guild) | ||||||
|     [1000789] = "defaultTalkWithTyon_001",              -- Tyon         - defaultTalkWithTyon_002 / defaultTalkWithTyon_003 (informs about BTN guild) |     [1000786] = "defaultTalkWithYhahamariyo_001",       -- Yhah Amariyo - defaultTalkWithYhahamariyo_002 / 003 (informs about CNJ guild) | ||||||
|  |     [1000787] = "defaultTalkWithHildie_001",            -- Hildie       - defaultTalkWithHildie_002 / 003 (informs about CRP guild) | ||||||
|  |     [1000788] = "defaultTalkWithLettice_001",           -- Lettice      - defaultTalkWithLettice_002 / 003 (informs about LTW guild) | ||||||
|  |     [1000789] = "defaultTalkWithTyon_001",              -- Tyon         - defaultTalkWithTyon_002 / 003 (informs about BTN guild) | ||||||
|     [1000840] = "defaultTalkWithRururaji_001",          -- Rururaji     - Presumably dialog pre-Chocobo update. Will not fire due to actor class change since then. |     [1000840] = "defaultTalkWithRururaji_001",          -- Rururaji     - Presumably dialog pre-Chocobo update. Will not fire due to actor class change since then. | ||||||
|     [1000841] = "defaultTalkWithMomodi_001",            -- Momodi |     [1000841] = "defaultTalkWithMomodi_001",            -- Momodi | ||||||
|     [1000846] = "defaultTalkWithYayake_001",            -- Yayake |     [1000846] = "defaultTalkWithYayake_001",            -- Yayake       - defaultTalkWithYayake_002 (her dialog after unlocking THM?) | ||||||
|     [1000847] = "defaultTalkWithIllofii_001",           -- I'llofii |     [1000847] = "defaultTalkWithIllofii_001",           -- I'llofii | ||||||
|     [1000861] = "defaultTalkWithLinette_001",           -- Linette |     [1000861] = "defaultTalkWithLinette_001",           -- Linette | ||||||
|     [1000862] = "defaultTalkWithGagaruna_001",          -- Gagaruna |     [1000862] = "defaultTalkWithGagaruna_001",          -- Gagaruna | ||||||
|     [1000863] = "defaultTalkWithLulutsu_001",           -- Lulutsu |     [1000863] = "defaultTalkWithLulutsu_001",           -- Lulutsu | ||||||
|     [1000864] = "defaultTalkWithInn_Desk",              -- Otopa Pottopa |     [1000864] = "defaultTalkWithInn_Desk",              -- Otopa Pottopa - defaultTalkWithOtopapottopa_001 (pre-Inn unlock?) | ||||||
|  |     [1000865] = "defaultTalkWithThaisie_001",           -- Thaisie      - Mentions retainers, but will not fire since she's not PplStd. | ||||||
|  |     [1000887] = "defaultTalkWithZssapa_001",            -- <<<NOT IMPLEMENTED>>> - Z'ssapa  (Central Thanalan: Black Brush: 92.779999 183.837 -1030.310059) alt actor ID: 1001217 (used in a quest presumably, different outfit from wiki image) | ||||||
|     [1000915] = "defaultTalkWithCahernaut_001",         -- Cahernaut |     [1000915] = "defaultTalkWithCahernaut_001",         -- Cahernaut | ||||||
|     [1000916] = "defaultTalkWithAspipi_001",            -- Aspipi |     [1000916] = "defaultTalkWithAspipi_001",            -- Aspipi | ||||||
|     [1000917] = "defaultTalkWithGloiucen_001",          -- Gloiucen |     [1000917] = "defaultTalkWithGloiucen_001",          -- Gloiucen | ||||||
| @@ -89,6 +98,10 @@ local defaultTalkWil = { | |||||||
|     [1001143] = "defaultTalkWithTotono_001",            -- Totono |     [1001143] = "defaultTalkWithTotono_001",            -- Totono | ||||||
|     [1001144] = "defaultTalkWithFyrilsunn_001",         -- Fyrilsunn |     [1001144] = "defaultTalkWithFyrilsunn_001",         -- Fyrilsunn | ||||||
|     [1001145] = "defaultTalkWithSinette_001",           -- Sinette |     [1001145] = "defaultTalkWithSinette_001",           -- Sinette | ||||||
|  |     [1001146] = "defaultTalkWithZirnbyrt_001",          -- <<<NOT IMPLEMENTED>>> - Zirnbyrt - Entry Denier Guard (East Thanalan: X:1831.565 Y:248.576 Z:448.872 Educated guess from wiki picture.  Guards unused dun01) | ||||||
|  |     [1001147] = "defaultTalkWithVhasotayuun_001",       -- <<<NOT IMPLEMENTED>>> - Vhaso Tayuun - (Entry Denier?  No wiki info) | ||||||
|  |     [1001148] = "defaultTalkWithPulbeiyalbei_001",      -- <<<NOT IMPLEMENTED>>> - Pulbei Yalbei - (Entry Denier?  No wiki info) | ||||||
|  |     [1001149] = "defaultTalkWithGembert_001",           -- <<<NOT IMPLEMENTED>>> - Gembert - Entry Denier Guard (South Thanalan: X:1707.143 Y:238.150 Z:1617.570 Rough estimate. Guards unused dun06) | ||||||
|     [1001165] = "defaultTalkWithMumukiya_001",          -- Mumukiya |     [1001165] = "defaultTalkWithMumukiya_001",          -- Mumukiya | ||||||
|     [1001166] = "defaultTalkWithYuyubesu_001",          -- Yuyubesu |     [1001166] = "defaultTalkWithYuyubesu_001",          -- Yuyubesu | ||||||
|     [1001167] = "defaultTalkWithChachai_001",           -- Chachai |     [1001167] = "defaultTalkWithChachai_001",           -- Chachai | ||||||
| @@ -106,6 +119,34 @@ local defaultTalkWil = { | |||||||
|     [1001256] = "defaultTalkWithMaginfred_001",         -- Gunnulf |     [1001256] = "defaultTalkWithMaginfred_001",         -- Gunnulf | ||||||
|     [1001257] = "defaultTalkWithOrisic_001",            -- Heibert |     [1001257] = "defaultTalkWithOrisic_001",            -- Heibert | ||||||
|     [1001260] = "defaultTalkWithKlamahni_001",          -- I'paghlo |     [1001260] = "defaultTalkWithKlamahni_001",          -- I'paghlo | ||||||
|  |     [1001295] = "defaultTalkWithChamberlain_001",       -- <<<NOT IMPLEMENTED>>> - Chamberlain (Entry Denier?  No wiki info) | ||||||
|  |     [1001296] = "defaultTalkWithWyntkelt_001",          -- <<<NOT IMPLEMENTED>>> - Wyntkelt (Entry Denier?  No wiki info) | ||||||
|  |     [1001297] = "defaultTalkWithAudrye_001",            -- <<<NOT IMPLEMENTED>>> - Audrye (Entry Denier?  No wiki info) | ||||||
|  |     [1001314] = "defaultTalkWithFromelaut_001",         -- <<<NOT IMPLEMENTED>>> - Fromelaut (Eastern Thanalan: The Golden Bazaar) | ||||||
|  |     [1001315] = "defaultTalkWithZilili_001",            -- <<<NOT IMPLEMENTED>>> - Zilili (Eastern Thanalan: The Golden Bazaar) - Dialog doesn't match wiki, but wiki dialog isn't addressed by any function.  Changed in an update perhaps. | ||||||
|  |     [1001316] = "defaultTalkWithPapala_001",            -- <<<NOT IMPLEMENTED>>> - Papala (Eastern Thanalan: The Golden Bazaar: 1099.540039, 312.674, -1145.719971) | ||||||
|  |     [1001317] = "defaultTalkWithSasapano_001",          -- <<<NOT IMPLEMENTED>>> - Sasapano (Eastern Thanalan: The Golden Bazaar: 1134.599976, 312.193, -1128.23999) | ||||||
|  |     [1001318] = "defaultTalkWithBibiroku_001",          -- <<<NOT IMPLEMENTED>>> - Bibiroku (Eastern Thanalan: The Golden Bazaar) | ||||||
|  |     [1001319] = "defaultTalkWithBernier_001",           -- <<<NOT IMPLEMENTED>>> - Bernier (Eastern Thanalan: The Golden Bazaar) | ||||||
|  |     [1001320] = "defaultTalkWithJajaba_001",            -- <<<NOT IMPLEMENTED>>> - Jajaba (Eastern Thanalan: The Golden Bazaar) | ||||||
|  |     [1001321] = "defaultTalkWithJujuya_001",            -- <<<NOT IMPLEMENTED>>> - Jujuya (Eastern Thanalan: The Golden Bazaar) | ||||||
|  |     [1001322] = "defaultTalkWithKikinori_001",          -- <<<NOT IMPLEMENTED>>> - Kikinori (Western Thanalan: The Silver Bazaar) | ||||||
|  |     [1001323] = "defaultTalkWithCelie_001",             -- <<<NOT IMPLEMENTED>>> - Celie (Western Thanalan: The Silver Bazaar) | ||||||
|  |     [1001324] = "defaultTalkWithAgzurungzu_001",        -- <<<NOT IMPLEMENTED>>> - Agzu Rungzu (Western Thanalan: The Silver Bazaar) | ||||||
|  |     [1001325] = "defaultTalkWithDarimbeh_001",          -- <<<NOT IMPLEMENTED>>> - D'arimbeh (Western Thanalan: The Silver Bazaar) | ||||||
|  |     [1001326] = "defaultTalkWithIudprost_001",          -- <<<NOT IMPLEMENTED>>> - Iudprost (Western Thanalan: The Silver Bazaar) | ||||||
|  |     [1001327] = "defaultTalkWithTatafu_001",            -- <<<NOT IMPLEMENTED>>> - Tatafu (Western Thanalan: The Silver Bazaar) | ||||||
|  |     [1001328] = "defaultTalkWithAthalwolf_001",         -- <<<NOT IMPLEMENTED>>> - Athalwolf (Western Thanalan: The Silver Bazaar) | ||||||
|  |     [1001329] = "defaultTalkWithPadakusondaku_001",     -- <<<NOT IMPLEMENTED>>> - Padaku Sondaku (Western Thanalan: The Silver Bazaar) | ||||||
|  |     [1001330] = "defaultTalkWithBellinda_001",          -- <<<NOT IMPLEMENTED>>> - Bellinda (Eastern Thanalan, Little Ala Mhigo) | ||||||
|  |     [1001331] = "defaultTalkWithRonthfohc_001",         -- <<<NOT IMPLEMENTED>>> - Ronthfohc (Eastern Thanalan, Little Ala Mhigo) | ||||||
|  |     [1001332] = "defaultTalkWithBerahthraben_001",      -- <<<NOT IMPLEMENTED>>> - Berahthraben (Eastern Thanalan, Little Ala Mhigo) | ||||||
|  |     [1001333] = "defaultTalkWithOtho_001",              -- <<<NOT IMPLEMENTED>>> - Otho (Eastern Thanalan, Little Ala Mhigo) | ||||||
|  |     [1001334] = "defaultTalkWithRadulf_001",            -- <<<NOT IMPLEMENTED>>> - Radulf (Eastern Thanalan, Little Ala Mhigo: 1131.75, 251.29, 206.339996) | ||||||
|  |     [1001335] = "defaultTalkWithHonmeme_001",           -- <<<NOT IMPLEMENTED>>> - Honmeme (Eastern Thanalan, Little Ala Mhigo) | ||||||
|  |     [1001336] = "defaultTalkWithCatriona_001",          -- <<<NOT IMPLEMENTED>>> - Catriona (Eastern Thanalan, Little Ala Mhigo) | ||||||
|  |     [1001337] = "defaultTalkWithGrifiud_001",           -- <<<NOT IMPLEMENTED>>> - Grifiud (Eastern Thanalan, Little Ala Mhigo) | ||||||
|  |     [1001392] = "defaultTalkWithNomomo_001",            -- <<<NOT IMPLEMENTED>>> - Nomomo (Camp Black Brush: X:24.274 Y:200.003 Z:-473.548 rough estimate) - If arg1=true, says different dialog. | ||||||
|     [1001415] = "defaultTalkWithAnthoinette_001",       -- Anthoinette |     [1001415] = "defaultTalkWithAnthoinette_001",       -- Anthoinette | ||||||
|     [1001416] = "defaultTalkWithWisemoon_001",          -- Wise Moon |     [1001416] = "defaultTalkWithWisemoon_001",          -- Wise Moon | ||||||
|     [1001417] = "defaultTalkWithApachonaccho_001",      -- Apacho Naccho |     [1001417] = "defaultTalkWithApachonaccho_001",      -- Apacho Naccho | ||||||
| @@ -116,6 +157,7 @@ local defaultTalkWil = { | |||||||
|     [1001422] = "defaultTalkWithMilgogo_001",           -- Milgogo |     [1001422] = "defaultTalkWithMilgogo_001",           -- Milgogo | ||||||
|     [1001423] = "defaultTalkWithMumutano_001",          -- Mumutano |     [1001423] = "defaultTalkWithMumutano_001",          -- Mumutano | ||||||
|     [1001424] = "defaultTalkWithGegeissa_001",          -- Gegeissa |     [1001424] = "defaultTalkWithGegeissa_001",          -- Gegeissa | ||||||
|  |     [1001425] = "defaultTalkWithGdatnan_001",           -- G'datnan  | ||||||
|     [1001426] = "defaultTalkWithHehena_001",            -- Hehena |     [1001426] = "defaultTalkWithHehena_001",            -- Hehena | ||||||
|     [1001427] = "defaultTalkWithGuillaunaux_001",       -- Guillaunaux |     [1001427] = "defaultTalkWithGuillaunaux_001",       -- Guillaunaux | ||||||
|     [1001428] = "defaultTalkWithYuyuhase_001",          -- Yuyuhase |     [1001428] = "defaultTalkWithYuyuhase_001",          -- Yuyuhase | ||||||
| @@ -128,6 +170,11 @@ local defaultTalkWil = { | |||||||
|     [1001443] = "defaultTalkWithJudithe_001",           -- Judithe |     [1001443] = "defaultTalkWithJudithe_001",           -- Judithe | ||||||
|     [1001444] = "defaultTalkWithRobyn_001",             -- Robyn |     [1001444] = "defaultTalkWithRobyn_001",             -- Robyn | ||||||
|     [1001445] = "defaultTalkWithSingleton_001",         -- Singleton |     [1001445] = "defaultTalkWithSingleton_001",         -- Singleton | ||||||
|  |     [1001446] = "defaultTalkWithFiachre_001",           -- <<<NOT IMPLEMENTED>>> - Fiachre (Western Thanalan Ferry Docks) | ||||||
|  |     [1001447] = "defaultTalkWithTaylor_001",            -- <<<NOT IMPLEMENTED>>> - Taylor (Western Thanalan Ferry Docks: -2195.070068, 14.495, -417.200012) | ||||||
|  |     [1001448] = "defaultTalkWithWalhbert_001",          -- <<<NOT IMPLEMENTED>>> - Walhbert (Western Thanalan Ferry Docks) | ||||||
|  |     [1001449] = "defaultTalkWithSpiralingpath_001",     -- <<<NOT IMPLEMENTED>>> - Spiraling Path (Western Thanalan Ferry Docks) | ||||||
|  |     [1001450] = "defaultTalkWithSasapiku_001",          -- <<<NOT IMPLEMENTED>>> - Sasapiku (Western Thanalan Ferry Docks) | ||||||
|     [1001451] = "defaultTalkWithDoll001_001",           -- Mammet (Eshtaime's Lapidaries [GSM]) |     [1001451] = "defaultTalkWithDoll001_001",           -- Mammet (Eshtaime's Lapidaries [GSM]) | ||||||
|     [1001452] = "defaultTalkWithDoll002_001",           -- Mammet (Eshtaime's Lapidaries [GSM] #2) |     [1001452] = "defaultTalkWithDoll002_001",           -- Mammet (Eshtaime's Lapidaries [GSM] #2) | ||||||
|     [1001453] = "defaultTalkWithDoll003_001",           -- Mammet (Sunsilk Tapestries [WVR]) |     [1001453] = "defaultTalkWithDoll003_001",           -- Mammet (Sunsilk Tapestries [WVR]) | ||||||
| @@ -144,29 +191,81 @@ local defaultTalkWil = { | |||||||
|     [1001476] = "defaultTalkWithCrhabye_001",           -- C'rhabye |     [1001476] = "defaultTalkWithCrhabye_001",           -- C'rhabye | ||||||
|     [1001471] = "downTownTalk",                         -- Kokobi |     [1001471] = "downTownTalk",                         -- Kokobi | ||||||
|     [1001472] = "defaultTalkWithMimishu_001",           -- Mimishu |     [1001472] = "defaultTalkWithMimishu_001",           -- Mimishu | ||||||
|  |     [1001503] = "defaultTalkWithGerland_001",           -- <<<NOT IMPLEMENTED>>> - Gerland (Western Thanalan Ferry Docks) | ||||||
|     [1001565] = "defaultTalkWithEleanor_001",           -- Eleanor |     [1001565] = "defaultTalkWithEleanor_001",           -- Eleanor | ||||||
|  |     [1001596] = "defaultTalkWithAbelard_001",           -- <<<NOT IMPLEMENTED>>> - Abelard (Western Thanalan: The Coffer & Coffin: -1726, 56.625, -317 | ||||||
|  |     [1001597] = "defaultTalkWithHaipoeipo_001",         -- <<<NOT IMPLEMENTED>>> - Haipo Eipo (Western Thanalan: The Coffer & Coffin) | ||||||
|  |     [1001598] = "defaultTalkWithBartholomew_001",       -- <<<NOT IMPLEMENTED>>> - Bartholomew (Western Thanalan: The Coffer & Coffin) | ||||||
|  |     [1001599] = "defaultTalkWithKokofubu_001",          -- <<<NOT IMPLEMENTED>>> - Kokofubu (Eastern Thanalan: Mythril Pit T-8) | ||||||
|  |     [1001600] = "defaultTalkWithBertouaint_001",        -- <<<NOT IMPLEMENTED>>> - Bertouaint (Eastern Thanalan: Mythril Pit T-8) | ||||||
|  |     [1001601] = "defaultTalkWithAldebrand_001",         -- <<<NOT IMPLEMENTED>>> - Aldebrand (Eastern Thanalan: Mythril Pit T-8) | ||||||
|  |     [1001602] = "defaultTalkWithPyhajawantal_001",      -- <<<NOT IMPLEMENTED>>> - Pyha Jawantal (Eastern Thanalan: Mythril Pit T-8) | ||||||
|  |     [1001624] = "talkIdayCap",                          -- <<<NOT IMPLEMENTED>>> - Flame Lieutenant Somber Meadow   (Foundation Day 2011 Dialog) - OLD EVENT NPC: Replaced by 2012 version | ||||||
|  |     [1001625] = "talkIday1",                            -- <<<NOT IMPLEMENTED>>> - Flame Sergeant Mimio Mio         (Foundation Day 2011 Dialog) - OLD EVENT NPC: Replaced by 2012 version | ||||||
|  |     [1001626] = "talkIday2",                            -- <<<NOT IMPLEMENTED>>> - Flame Private Sisimuza Tetemuza  (Foundation Day 2011 Dialog) - OLD EVENT NPC: Replaced by 2012 version | ||||||
|  |     [1001630] = "defaultTalkWithChocobo_001",           -- <<<NOT IMPLEMENTED>>> - Chocobo (Western Thanalan: The Coffer & Coffin) - Stands beside Haipo Eipo | ||||||
|  |     [1001685] = "defaultTalkWithAdalbert_001",          -- <<<NOT IMPLEMENTED>>> - Flame Sergeant Cotter (Ul'dah: Merchant Strip: -0.92 196.100 126.32) - Double check caps. | ||||||
|  |     [1001699] = "defaultTalkWithJandonaut_001",         -- <<<NOT IMPLEMENTED>>> - Flame Sergeant Fouillel (Southern Thanalan: Camp Broken Water: 1704 296.001 999) | ||||||
|     [1001712] = "defaultTalkWithGuillestet_001",        -- Guillestet |     [1001712] = "defaultTalkWithGuillestet_001",        -- Guillestet | ||||||
|     [1001713] = "defaultTalkWithHCidjaa_001",           -- H'cidjaa |     [1001713] = "defaultTalkWithHCidjaa_001",           -- H'cidjaa | ||||||
|  |     [1001714] = "defaultTalkWithAutgar_001",            -- <<<NOT IMPLEMENTED>>> - Autgar (Ul'dah: Airship Landing) | ||||||
|  |     [1001715] = "defaultTalkWithAhldbyrt_001",          -- <<<NOT IMPLEMENTED>>> - Ahldbyrt (Ul'dah: Airship Landing) | ||||||
|  |     [1001716] = "defaultTalkWithNeymiFunomi_001",       -- <<<NOT IMPLEMENTED>>> - Neymi Funomi (Ul'dah: Airship Landing) | ||||||
|     [1001717] = "defaultTalkWithGoodife_001",           -- Goodife |     [1001717] = "defaultTalkWithGoodife_001",           -- Goodife | ||||||
|     [1001726] = "defaultTalkWithAistan_001",            -- Aistan |     [1001726] = "defaultTalkWithAistan_001",            -- Aistan | ||||||
|  |     [1001727] = "defaultTalkWithMateria_001",           -- <<<NOT IMPLEMENTED>>> - Mutamix Bubblypots (Central Thanalan: 243.858002, 247.8, -1030.136963) - Check feet clipping @ pos | ||||||
|  |     [1001728] = "defaultTalkWithSWYNBROES_001",         -- <<<NOT IMPLEMENTED>>> - Swynbroes (Central Thanalan: 242.641006, 247.6, -1024.494019) | ||||||
|  |     [1001729] = "defaultTalkWithKokosamu_001",          -- <<<NOT IMPLEMENTED>>> - Kokosamu (Central Thanalan: 255.651001, 248.5, -1030.152954) - Check feet clipping @ pos | ||||||
|  |     [1001730] = "defaultTalkWithF_HOBHAS_001",          -- <<<NOT IMPLEMENTED>>> - F'hobhas (Central Thanalan: 258.665009, 248, -1021.666992) | ||||||
|  |     [1001753] = "defaultTalkWithPelhiEpocan_001",       -- <<<NOT IMPLEMENTED>>> - Pelhi Epocan (Ul'dah: Airship Landing) | ||||||
|  |     [1001754] = "defaultTalkWithViolenne_001",          -- <<<NOT IMPLEMENTED>>> - Violenne (Ul'dah: Airship Landing) | ||||||
|     [1001770] = "defaultTalkWithEara_001",              -- Eara |     [1001770] = "defaultTalkWithEara_001",              -- Eara | ||||||
|     [1001771] = "defaultTalkWithLiaime_001",            -- Liaime |     [1001771] = "defaultTalkWithLiaime_001",            -- Liaime | ||||||
|  |     [1001834] = "defaultTalkWithLUDOLD_001",            -- <<<NOT IMPLEMENTED>>> - Flame Commander Ashdale - (Eastern Thanalan: 1410, 256, 187) | ||||||
|  |     [1001840] = "defaultTalkWithPAHJAZHWAN_001",        -- <<<NOT IMPLEMENTED>>> - Pahja Zhwan - (Ul'dah: Miner's Guild: -113.190002 194.2 324.25) - Double check caps. | ||||||
|  |     [1001894] = "defaultTalkWithDonner_001",            -- <<<NOT IMPLEMENTED>>> - Flame Private Greave - (North Thanalan: Bluefog) | ||||||
|  |     [1001911] = "defaultTalkWithLolomaya_001",          -- <<<NOT IMPLEMENTED>>> - Lolomaya - (North Thanalan: Camp Bluefog) Has unused argument. Dialog doesn't match wiki, but dftwil doesn't call it anywhere.  Update change perhaps. | ||||||
|  |     [1001925] = "defaultTalkWithHortwann_001",          -- <<<NOT IMPLEMENTED>>> - Flame Private Hanskalsyn - (North Thanalan: Camp Bluefog) | ||||||
|     [1001932] = "defaultTalkWithSIBOLD_001",            -- Sibold |     [1001932] = "defaultTalkWithSIBOLD_001",            -- Sibold | ||||||
|     [1001953] = "defaultTalkWithBerndan_001",           -- Berndan |     [1001953] = "defaultTalkWithBerndan_001",           -- Berndan | ||||||
|     [1002047] = "defaultTalkWithInn_Desk_2",            -- Kopuru Fupuru - Inn NPC. |     [1002047] = "defaultTalkWithInn_Desk_2",            -- Kopuru Fupuru - Inn NPC. -  defaultTalkWithKopuruFupuru_001 (pre-Inn unlock?) | ||||||
|     [1002101] = "defaultTalkWithDuraltharal_001",       -- Dural Tharal |     [1002101] = "defaultTalkWithDuraltharal_001",       -- Dural Tharal | ||||||
|  |     [1002116] = "defaultTalkWithHAVAK_ALVAK_001",       -- <<<NOT IMPLEMENTED>>> - Havak Alvak (Ul'dah: Milvaneth Sacrarium) | ||||||
|  |     [1060028] = "defaultTalkWithCURIOUS_001",           -- <<<NOT IMPLEMENTED>>> - Curious Gorge (Western Thanalan: -1116.040039, 53.2, 285.48999)? - defaultTalkWithCURIOUS_002 | ||||||
|  |     [1060029] = "defaultTalkWithSarra_001",             -- <<<NOT IMPLEMENTED>>> - Sarra (Location unknown) defaultTalkWithSarra_002 / 003 | ||||||
|  |     [1060032] = "defaultTalkWithWidargeli_001",         -- <<<NOT IMPLEMENTED>>> - Widargelt (Eastern Thanalan: Little Ala Mhigo: 1213.670044, 251.439, 107.290001) - defaultTalkWithWidargeli_002 | ||||||
|  |     [1060033] = "defaultTalkWithErik_001",              -- <<<NOT IMPLEMENTED>>> - Erik  (Ul'dah: -32.75 192.1 45.810001) - defaultTalkWithErik_002 | ||||||
|  |     [1060035] = "defaultTalkWithLalai_001",             -- <<<NOT IMPLEMENTED>>> - Lalai (Ul'dah: Milvaneth Sacrarium: 18.16, 206, 283.670013)        defaultTalkWithLalai_002 / 003 / 004 / 005 / 006 / 007 / 101 | ||||||
|  |     [1060036] = "defaultTalkWithKazagg_001",            -- <<<NOT IMPLEMENTED>>> - Kazagg Chah (Western Thalanan: -1506.540039, 10.241, -233.970001)  defaultTalkWithKazagg_002 / 003 / 004 / 005 / 006 / 007 | ||||||
|  |     [1060037] = "defaultTalkWithHateli_001",            -- <<<NOT IMPLEMENTED>>> - Dozol Meloc (Western Thanalan: -1513.660034, 10.617, -235.220001)  defaultTalkWithHateli_002 / 003 / 004 / 005 / 006 / 007 | ||||||
|  |     [1060038] = "defaultTalkWithDaza_001",              -- <<<NOT IMPLEMENTED>>> - 269th Order Mendicant Da Za (Western Thanalan: Somewhere in the cave around -1567, 25, -170) -  defaultTalkWithDaza_002 / 003 / 004 / 005 / 006 / 007 | ||||||
|     [1060042] = "defaultTalkWithJenlyns_001",           -- Jenlyns      - defaultTalkWithJenlyns_002 (PLD-unlocked specific dialog?) |     [1060042] = "defaultTalkWithJenlyns_001",           -- Jenlyns      - defaultTalkWithJenlyns_002 (PLD-unlocked specific dialog?) | ||||||
|  |     [1200120] = "bookTalk",                             -- Dusty Tomes - - Will not fire since it isn't PplStd.  Identical dialog regardless. | ||||||
|  |     [1500059] = "defaultTalkWithLdhakya_001",           -- <<<NOT IMPLEMENTED>>> - L'dhakya (Western Thanalan Ferry Docks) | ||||||
|  |     [1500109] = "defaultTalkWithSylviel_001",           -- <<<NOT IMPLEMENTED>>> - Sylviel (Western Thanalan Ferry Docks) | ||||||
|  |     [1500110] = "defaultTalkWithSamigamduhla_001",      -- <<<NOT IMPLEMENTED>>> - Sami Gamduhla (Western Thanalan Ferry Docks) | ||||||
|     [1500126] = "tribeTalk",                            -- Vavaki |     [1500126] = "tribeTalk",                            -- Vavaki | ||||||
|     [1500129] = "defaultTalkWithYayatoki_001",          -- Yayatoki |     [1500129] = "defaultTalkWithYayatoki_001",          -- Yayatoki | ||||||
|     [1700039] = "defaultTalkWithBATERICH_100"           -- Baterich |     [1700039] = "defaultTalkWithBATERICH_100",          -- Baterich | ||||||
|          |          | ||||||
| --[[ Fix Later |     [1000001] = "defaultTalkWithHamletGuardUld_001"            -- TEST TEST TEST | ||||||
|     [1002110] = "processEventSOMBER", arg1,             -- Flame Lieutenant Somber Meadow   - uses Spl000 staticactor not dftWil |      | ||||||
|     [1002111] = "processEventMIMIO",                    -- Flame Sergeant Mimio Mio         - uses Spl000 staticactor not dftWil |     --[1090549] = "defaultTalkWithInn_ExitDoor"         -- Ul'dah Inn Exit Door pushEvent - "Leave your room?" | ||||||
|     [1002112] = "processEventSISIMUZA",                 -- Flame Private Sisimuza Tetemuza  - uses Spl000 staticactor not dftWil |     --[1200336] = "defaultTalkWithInn_ExitDoor"         -- Ul'dah Inn Exit Door talkEvent - "Leave your room?" | ||||||
|  |      | ||||||
|  | --[[ Need sourcing | ||||||
|  |     [???] = "defaultTalkCaravanChocoboUld_001"           -- Presumably used on the Caravan Chocobo escorts? Does a little animation. | ||||||
|  |     [???] = "defaultTalkWithExit01"                      -- "Leave this place?" - For quest locations like that four-bedroom room perhaps? | ||||||
|  |     [???] = "defaultTalkWithMarketNpc"                   -- NPC in the middle of the market wards that lets you port around I'm guessing? | ||||||
|  |     [???] = "defaultTalkWithHamletGuardUld_001"          --  | ||||||
| --]] | --]] | ||||||
|      |      | ||||||
| }     |     -- [1002110] = "processEventSOMBER", arg1,          -- Flame Lieutenant Somber Meadow   (Foundation Day 2012 Dialog) Spl000 staticactor | ||||||
|  |     -- [1002111] = "processEventMIMIO"                  -- Flame Sergeant Mimio Mio         (Foundation Day 2012 Dialog) Spl000 staticactor | ||||||
|  |     -- [1002112] = "processEventSISIMUZA"               -- Flame Private Sisimuza Tetemuza  (Foundation Day 2012 Dialog) Spl000 staticactor | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     } | ||||||
|   |   | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -177,6 +276,22 @@ function onTalk(player, quest, npc, eventName) | |||||||
|     local clientFunc = defaultTalkWil[npcId]; |     local clientFunc = defaultTalkWil[npcId]; | ||||||
|      |      | ||||||
|     if (npcId == 1002047) then -- Kopuru Fupuru - Inn NPC |     if (npcId == 1002047) then -- Kopuru Fupuru - Inn NPC | ||||||
|  |         defaultTalkWithInn(player, quest, clientFunc); | ||||||
|  |     else | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, clientFunc); | ||||||
|  |     end | ||||||
|  |      | ||||||
|  |     player:EndEvent(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function IsQuestENPC(player, quest, npc) | ||||||
|  |     return defaultTalkWil[npc:GetActorClassId()] ~= nil; | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function defaultTalkWithInn(player, quest, clientFunc) | ||||||
|     local choice = callClientFunction(player, "delegateEvent", player, quest, clientFunc); |     local choice = callClientFunction(player, "delegateEvent", player, quest, clientFunc); | ||||||
|          |          | ||||||
|     if (choice == 1) then |     if (choice == 1) then | ||||||
| @@ -189,13 +304,4 @@ function onTalk(player, quest, npc, eventName) | |||||||
|             player:SendGameMessage(GetWorldMaster(), 51140, 0x20); --This inn is already your Secondary Homepoint |             player:SendGameMessage(GetWorldMaster(), 51140, 0x20); --This inn is already your Secondary Homepoint | ||||||
|         end |         end | ||||||
|     end |     end | ||||||
|     else |  | ||||||
|         callClientFunction(player, "delegateEvent", player, quest, clientFunc); |  | ||||||
|     end |  | ||||||
|      |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
|  |  | ||||||
| function IsQuestENPC(player, quest, npc) |  | ||||||
| 	return defaultTalkWil[npc:GetActorClassId()] ~= nil; |  | ||||||
| end | end | ||||||
| @@ -38,6 +38,9 @@ FLAG_TALKED_NELLAURE 		= 2; | |||||||
| FLAG_TALKED_KHUMA_MOSHROCA 	= 3; | FLAG_TALKED_KHUMA_MOSHROCA 	= 3; | ||||||
| FLAG_TALKED_LEFWYNE 		= 4; | FLAG_TALKED_LEFWYNE 		= 4; | ||||||
|  |  | ||||||
|  | -- Quest Counters | ||||||
|  | COUNTER_TALKED              = 0; | ||||||
|  |  | ||||||
| --offerQuestResult = callClientFunction(player, "delegateEvent", player, quest, "processEventOffersStart"); | --offerQuestResult = callClientFunction(player, "delegateEvent", player, quest, "processEventOffersStart"); | ||||||
|  |  | ||||||
| function onStart(player, quest)	 | function onStart(player, quest)	 | ||||||
| @@ -48,33 +51,32 @@ function onFinish(player, quest) | |||||||
| end | end | ||||||
|  |  | ||||||
| function onSequence(player, quest, sequence)	 | function onSequence(player, quest, sequence)	 | ||||||
| 	quest:ClearENpcs();	 |  | ||||||
| 	 |  | ||||||
| 	if (sequence == SEQ_000) then | 	if (sequence == SEQ_000) then | ||||||
| 		quest:AddENpc(SYBELL, qflag(quest, FLAG_TALKED_SYBELL)); |  | ||||||
| 		quest:AddENpc(KHUMA_MOSHROCA, qflag(quest, FLAG_TALKED_KHUMA_MOSHROCA)); |  | ||||||
| 		quest:AddENpc(NELLAURE, qflag(quest, FLAG_TALKED_NELLAURE)); |  | ||||||
| 		quest:AddENpc(MESTONNAUX, qflag(quest, FLAG_TALKED_MESTONNAUX)); |  | ||||||
| 		quest:AddENpc(LEFWYNE, qflag(quest, FLAG_TALKED_LEFWYNE)); |  | ||||||
| 	elseif (sequence == SEQ_001) then |  | ||||||
|         quest:AddENpc(KINNISON); |         quest:AddENpc(KINNISON); | ||||||
|  | 		quest:AddENpc(SYBELL,           (not quest:GetFlag(FLAG_TALKED_SYBELL) and QFLAG_PLATE or QFLAG_NONE)); | ||||||
|  | 		quest:AddENpc(KHUMA_MOSHROCA,   (not quest:GetFlag(FLAG_TALKED_KHUMA_MOSHROCA) and QFLAG_PLATE or QFLAG_NONE)); | ||||||
|  | 		quest:AddENpc(NELLAURE,         (not quest:GetFlag(FLAG_TALKED_NELLAURE) and QFLAG_PLATE or QFLAG_NONE)); | ||||||
|  | 		quest:AddENpc(MESTONNAUX,       (not quest:GetFlag(FLAG_TALKED_MESTONNAUX) and QFLAG_PLATE or QFLAG_NONE)); | ||||||
|  | 		quest:AddENpc(LEFWYNE,          (not quest:GetFlag(FLAG_TALKED_LEFWYNE) and QFLAG_PLATE or QFLAG_NONE)); | ||||||
|  | 	elseif (sequence == SEQ_001) then | ||||||
|  | 		quest:AddENpc(KINNISON, QFLAG_PLATE); | ||||||
| 	end	 | 	end	 | ||||||
| end | end | ||||||
|  |  | ||||||
| function qflag(quest, flag) |  | ||||||
| 	return quest:GetFlag(flag) and QFLAG_ALL or QFLAG_NONE; |  | ||||||
| end |  | ||||||
|  |  | ||||||
| function onTalk(player, quest, npc, eventName) | function onTalk(player, quest, npc, eventName) | ||||||
| 	local npcClassId = npc.GetActorClassId(); | 	local npcClassId = npc.GetActorClassId(); | ||||||
| 	local seq = quest:GetSequence(); | 	local seq = quest:GetSequence(); | ||||||
|  | 	local incCounter = false; | ||||||
|      |      | ||||||
| 	if (seq == SEQ_000) then | 	if (seq == SEQ_000) then | ||||||
| 		if (npcClassId == SYBELL) then |         if (npcClassId == KINNISON) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processEventOffersAfter"); | ||||||
|  | 		elseif (npcClassId == SYBELL) then | ||||||
| 			if (not quest:GetFlag(FLAG_TALKED_SYBELL)) then | 			if (not quest:GetFlag(FLAG_TALKED_SYBELL)) then | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventSybellSpeak"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventSybellSpeak"); | ||||||
| 				quest:SetFlag(FLAG_TALKED_SYBELL); | 				quest:SetFlag(FLAG_TALKED_SYBELL); | ||||||
| 				--quest:UpdateENpc(SYBELL, QFLAG_NONE);				 |                 incCounter = true; | ||||||
| 			else | 			else | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventSybellSpeakAfter"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventSybellSpeakAfter"); | ||||||
| 			end | 			end | ||||||
| @@ -82,7 +84,7 @@ function onTalk(player, quest, npc, eventName) | |||||||
| 			if (not quest:GetFlag(FLAG_TALKED_KHUMA_MOSHROCA)) then | 			if (not quest:GetFlag(FLAG_TALKED_KHUMA_MOSHROCA)) then | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventKhumaSpeak"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventKhumaSpeak"); | ||||||
| 				quest:SetFlag(FLAG_TALKED_KHUMA_MOSHROCA); | 				quest:SetFlag(FLAG_TALKED_KHUMA_MOSHROCA); | ||||||
| 				--quest:UpdateENpc(KHUMA_MOSHROCA, QFLAG_NONE);				 |                incCounter = true; | ||||||
| 			else | 			else | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventKhumaSpeakAfter"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventKhumaSpeakAfter"); | ||||||
| 			end | 			end | ||||||
| @@ -90,7 +92,7 @@ function onTalk(player, quest, npc, eventName) | |||||||
| 			if (not quest:GetFlag(FLAG_TALKED_NELLAURE)) then | 			if (not quest:GetFlag(FLAG_TALKED_NELLAURE)) then | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventNellaureSpeak"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventNellaureSpeak"); | ||||||
| 				quest:SetFlag(FLAG_TALKED_NELLAURE);	 | 				quest:SetFlag(FLAG_TALKED_NELLAURE);	 | ||||||
| 				--quest:UpdateENpc(NELLAURE, QFLAG_NONE);				 |                 incCounter = true; | ||||||
| 			else | 			else | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventNellaureSpeakAfter"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventNellaureSpeakAfter"); | ||||||
| 			end | 			end | ||||||
| @@ -98,7 +100,7 @@ function onTalk(player, quest, npc, eventName) | |||||||
| 			if (not quest:GetFlag(FLAG_TALKED_MESTONNAUX)) then | 			if (not quest:GetFlag(FLAG_TALKED_MESTONNAUX)) then | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventMestonnauxSpeak"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventMestonnauxSpeak"); | ||||||
| 				quest:SetFlag(FLAG_TALKED_MESTONNAUX); | 				quest:SetFlag(FLAG_TALKED_MESTONNAUX); | ||||||
| 				--quest:UpdateENpc(MESTONNAUX, QFLAG_NONE);				 |                 incCounter = true;                 | ||||||
| 			else | 			else | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventMestonnauxSpeakAfter"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventMestonnauxSpeakAfter"); | ||||||
| 			end | 			end | ||||||
| @@ -106,27 +108,40 @@ function onTalk(player, quest, npc, eventName) | |||||||
| 			if (not quest:GetFlag(FLAG_TALKED_LEFWYNE)) then | 			if (not quest:GetFlag(FLAG_TALKED_LEFWYNE)) then | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventLefwyneSpeak"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventLefwyneSpeak"); | ||||||
| 				quest:SetFlag(FLAG_TALKED_LEFWYNE);	 | 				quest:SetFlag(FLAG_TALKED_LEFWYNE);	 | ||||||
| 				--quest:UpdateENpc(LEFWYNE, QFLAG_NONE);				 |                 incCounter = true; | ||||||
| 			else | 			else | ||||||
| 				callClientFunction(player, "delegateEvent", player, quest, "processEventLefwyneSpeakAfter"); | 				callClientFunction(player, "delegateEvent", player, quest, "processEventLefwyneSpeakAfter"); | ||||||
| 			end | 			end | ||||||
| 		end | 		end | ||||||
| 		 | 		 | ||||||
| 		-- Check condition to go to the next sequence |          | ||||||
| 		if (seq000_checkCondition(quest)) then | 		-- Increase objective counter & play relevant messages | ||||||
|  | 		if (incCounter == true) then | ||||||
|  |             quest:IncCounter(COUNTER_TALKED); | ||||||
|  |             local counterAmount = quest:GetCounter(COUNTER_TALKED); | ||||||
|  |  | ||||||
|  |             attentionMessage(player, 51061, 0, counterAmount, 5); -- You have heard word of the Seedseers. (... of 5) | ||||||
|  |              | ||||||
|  |             if (seq000_checkCondition(quest)) then -- All Seers spoken to | ||||||
|  |                 attentionMessage(player, 25225, 110674); -- "Seeing the Seers" objectives complete! | ||||||
|  |                 quest:UpdateENPCs(); -- Band-aid for a QFLAG_PLATE issue | ||||||
|                 quest:StartSequence(SEQ_001); |                 quest:StartSequence(SEQ_001); | ||||||
|             end |             end | ||||||
|  |         end | ||||||
|  |          | ||||||
| 	elseif (seq == SEQ_001) then | 	elseif (seq == SEQ_001) then | ||||||
| 		--Quest Complete | 		--Quest Complete | ||||||
| 		if (npcClassId == KINNISON) then | 		if (npcClassId == KINNISON) then | ||||||
| 			callClientFunction(player, "delegateEvent", player, quest, "processEventClear"); | 			callClientFunction(player, "delegateEvent", player, quest, "processEventClear"); | ||||||
| 			callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9); | 			callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9); | ||||||
|  |             player:CompleteQuest(quest:GetQuestId()); | ||||||
| 		end | 		end | ||||||
| 	end | 	end | ||||||
| 	 | 	quest:UpdateENPCs();	 | ||||||
| 	player:EndEvent(); | 	player:EndEvent(); | ||||||
| end | end | ||||||
|  |  | ||||||
|  |  | ||||||
| -- Check if all seers are talked to | -- Check if all seers are talked to | ||||||
| function seq000_checkCondition(quest) | function seq000_checkCondition(quest) | ||||||
| 	return (quest:GetFlag(FLAG_TALKED_SYBELL) and | 	return (quest:GetFlag(FLAG_TALKED_SYBELL) and | ||||||
| @@ -136,14 +151,20 @@ function seq000_checkCondition(quest) | |||||||
| 			quest:GetFlag(FLAG_TALKED_LEFWYNE)); | 			quest:GetFlag(FLAG_TALKED_LEFWYNE)); | ||||||
| end | end | ||||||
|  |  | ||||||
| -- This is called by the RequestQuestJournalCommand when map markers are request. |  | ||||||
| -- Check quest_marker for valid values. This should return a table of map markers. |  | ||||||
| function getJournalMapMarkerList(player, quest) |  | ||||||
| 	local seq = quest:GetSequence(); |  | ||||||
|  |  | ||||||
| 	if (seq == SEQ_000) then | function getJournalMapMarkerList(player, quest) | ||||||
| 		return MRKR_SYBELL, MRKR_KHUMA_MOSHROCA, MRKR_NELLAURE, MRKR_MESTONNAUX, MRKR_LEFWYNE; |     local sequence = quest:getSequence(); | ||||||
| 	elseif (seq == SEQ_001) then |     local possibleMarkers = {}; | ||||||
| 		return MRKR_KINNISON; |      | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         if (not quest:GetFlag(FLAG_TALKED_SYBELL)) then table.insert(possibleMarkers, MRKR_SYBELL); end | ||||||
|  |         if (not quest:GetFlag(FLAG_TALKED_KHUMA_MOSHROCA)) then table.insert(possibleMarkers, MRKR_KHUMA_MOSHROCA); end | ||||||
|  |         if (not quest:GetFlag(FLAG_TALKED_NELLAURE)) then table.insert(possibleMarkers, MRKR_NELLAURE); end | ||||||
|  |         if (not quest:GetFlag(FLAG_TALKED_MESTONNAUX)) then table.insert(possibleMarkers, MRKR_MESTONNAUX); end | ||||||
|  |         if (not quest:GetFlag(FLAG_TALKED_LEFWYNE)) then table.insert(possibleMarkers, MRKR_LEFWYNE); end | ||||||
|  |     elseif (sequence == SEQ_001) then | ||||||
|  |         table.insert(possibleMarkers, MRKR_KINNISON); | ||||||
|     end |     end | ||||||
|  |      | ||||||
|  |     return unpack(possibleMarkers) | ||||||
| end | end | ||||||
| @@ -1,21 +1,103 @@ | |||||||
| --Quest Flags | require("global"); | ||||||
| TALKED_PFARAHR = 0; |  | ||||||
|  |  | ||||||
| function canAcceptQuest(player) | --[[ | ||||||
| 	return (player:HasQuest("etc5g0") == false and player:IsQuestCompleted("Etc5g0") == false and player:GetHighestLevel() >= 1); |  | ||||||
|  | Quest Script | ||||||
|  |  | ||||||
|  | Name:   Waste Not Want Not | ||||||
|  | Code:   Etc5g0 | ||||||
|  | Id:     110828 | ||||||
|  | Prereq: Level 1 on any class.  Second MSQ completed. (110002 Man0l1 / 110006 Man0g1 / 110010 Man0u1) | ||||||
|  | Notes:  Rewards 200 gil | ||||||
|  |  | ||||||
|  | ]] | ||||||
|  |  | ||||||
|  | -- Sequence Numbers | ||||||
|  | SEQ_000 = 0;  -- Talk to Pfarahr | ||||||
|  | SEQ_001 = 1;  -- Return to V'korolon | ||||||
|  |  | ||||||
|  | -- Actor Class Ids | ||||||
|  | VKOROLON                = 1000458; | ||||||
|  | PFARAHR                 = 1001707; | ||||||
|  |  | ||||||
|  | -- Quest Item | ||||||
|  | ITEM_WELL_WORN_BAG      = 11000224; | ||||||
|  |  | ||||||
|  | -- Quest Markers | ||||||
|  | MRKR_PFARAHR            = 11082001; | ||||||
|  | MRKR_VKOROLON           = 11082002; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function onStart(player, quest) | ||||||
|  |     -- processEventVKOROLONStart -- No means of properly accepting quests yet | ||||||
|  |     quest:StartSequence(SEQ_000); | ||||||
|  |     player:SendGameMessage(GetWorldMaster(), 25246, MESSAGE_TYPE_SYSTEM, ITEM_WELL_WORN_BAG, 1); | ||||||
| end | end | ||||||
|  |  | ||||||
| function isObjectivesComplete(player, quest) | function onFinish(player, quest) | ||||||
| 	return (quest:GetPhase() == 2); |  | ||||||
| end | end | ||||||
|  |  | ||||||
| function onAbandonQuest(player, quest)	 |  | ||||||
| 	vkorolon = GetWorldManager():GetActorInWorldByUniqueId("vkorolon"); |  | ||||||
| 	pfarahr = GetWorldManager():GetActorInWorldByUniqueId("pfarahr"); | function onSequence(player, quest, sequence) | ||||||
| 	if (vkorolon ~= nil and canAcceptQuest(player)) then |     if (sequence == SEQ_000) then | ||||||
| 		vkorolon:SetQuestGraphic(player, 0x2);		 |         quest:AddENpc(VKOROLON); | ||||||
| 	end	 |         quest:AddENpc(PFARAHR, QFLAG_PLATE); | ||||||
| 	if (pfarahr ~= nil) then |     elseif (sequence == SEQ_001) then  | ||||||
| 		pfarahr:SetQuestGraphic(player, 0x0); |         quest:AddENpc(VKOROLON, QFLAG_PLATE); | ||||||
|  |         quest:AddENpc(PFARAHR); | ||||||
|     end |     end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | function onTalk(player, quest, npc) | ||||||
|  |     local sequence = quest:getSequence(); | ||||||
|  |     local classId = npc:GetActorClassId(); | ||||||
|  |      | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         if (classId == VKOROLON) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processEvent_000_1"); | ||||||
|  |         elseif (classId == PFARAHR) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processEvent_010"); | ||||||
|  |             quest:StartSequence(SEQ_001); | ||||||
|  |             quest:DoComplete(); -- Need ref since it feels out of place. Just placing it here since original script had it. | ||||||
|  |         end | ||||||
|  |         | ||||||
|  |     elseif (sequence == SEQ_001) then | ||||||
|  |         if (classId == VKOROLON) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processEvent_020"); | ||||||
|  |             --callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1); -- Reward window, shouldn't be handled by quest script | ||||||
|  | 			player:CompleteQuest(quest:GetQuestId()); | ||||||
|  |         elseif (classId == PFARAHR) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processEvent_010_1"); | ||||||
|  |         end   | ||||||
|  |     end | ||||||
|  |     player:EndEvent() | ||||||
|  | 	quest:UpdateENPCs(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function getJournalInformation(player, quest) | ||||||
|  |     local sequence = quest:getSequence(); | ||||||
|  |      | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         return ITEM_WELL_WORN_BAG; | ||||||
|  |     end | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function getJournalMapMarkerList(player, quest) | ||||||
|  |     local sequence = quest:getSequence(); | ||||||
|  |     local possibleMarkers = {}; | ||||||
|  |      | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         table.insert(possibleMarkers, MRKR_PFARAHR); | ||||||
|  |     elseif (sequence == SEQ_001) then | ||||||
|  |         table.insert(possibleMarkers, MRKR_VKOROLON); | ||||||
|  |     end | ||||||
|  |      | ||||||
|  |     return unpack(possibleMarkers) | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,8 +1,331 @@ | |||||||
| --Quest Flags | require("global"); | ||||||
| MAN0U0_FLAG_TUTORIAL1_DONE = 0; |  | ||||||
| MAN0U0_FLAG_TUTORIAL2_DONE = 1; | --[[ | ||||||
| MAN0U0_FLAG_TUTORIAL3_DONE = 2; |  | ||||||
|  | Quest Script | ||||||
|  |  | ||||||
|  | Name:   Flowers for All | ||||||
|  | Code:   Man0u0 | ||||||
|  | Id:     110009 | ||||||
|  | Prereq: None (Given on chara creation) | ||||||
|  | Notes: RURURAJI scripting handled via PopulaceChocoboLender.lua | ||||||
|  | TO-DO: Sequence 000 - Crowd NPCs. | ||||||
|  |        Sequence 010 - Adv. Guild NPCs | ||||||
|  |  | ||||||
|  |  | ||||||
|  | https://www.youtube.com/watch?v=XXGrSFrfYo4 | ||||||
|  |  | ||||||
|  | ]] | ||||||
|  |  | ||||||
|  | -- Sequence Numbers | ||||||
|  | SEQ_000 = 0;  -- On the Merchant Strip in Ul'dah; contains the basic tutorial. | ||||||
|  | SEQ_005 = 5;  -- Combat on the Sapphire Avenue Exchange | ||||||
|  | SEQ_010 = 10; -- Back on the Merchant Strip in Ul'dah | ||||||
|  |  | ||||||
|  | -- Actor Class Ids | ||||||
|  | ASCILIA                 = 1000042; | ||||||
|  | WARBURTON               = 1000186; | ||||||
|  | RURURAJI                = 1000840; | ||||||
|  | BIG_BELLIED_BARKER      = 1001490; | ||||||
|  | FRETFUL_FARMHAND        = 1001491; | ||||||
|  | DEBAUCHED_DEMONESS      = 1001492; | ||||||
|  | DAPPER_DAN              = 1001493; | ||||||
|  | LOUTISH_LAD             = 1001494; | ||||||
|  | GIL_DIGGING_MISTRESS    = 1001495; | ||||||
|  | TWITTERING_TOMBOY       = 1001496; | ||||||
|  | STOCKY_STRANGER         = 1001644; | ||||||
|  | EXIT_TRIGGER            = 1090372; | ||||||
|  | OPENING_STOPER_ULDAH    = 1090373; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | KEEN_EYED_MERCHANT      = 1000401; | ||||||
|  | --MUMPISH_MIQOTE          = 1000992; -- Unused on this client version.  Calls processEvent020_6 | ||||||
|  | HIGH_SPIRITED_FELLOW    = 1001042; | ||||||
|  | DISREPUTABLE_MIDLANDER  = 1001044; | ||||||
|  | LONG_LEGGED_LADY        = 1001112; | ||||||
|  | LARGE_LUNGED_LABORER    = 1001645; | ||||||
|  | TOOTH_GRINDING_TRAVELER = 1001646; | ||||||
|  | FULL_LIPPED_FILLE       = 1001647; | ||||||
|  | YAYATOKI                = 1500129; | ||||||
|  |  | ||||||
|  | BLOCKER                 = 1090372; | ||||||
|  | ULDAH_OPENING_EXIT      = 1099046; | ||||||
|  |  | ||||||
|  | -- Non-interactive NPCs | ||||||
|  | CROWD_HYUR_M            = 1001114; | ||||||
|  | CROWD_HYUR_F            = 1001115; | ||||||
|  | CROWD_ELEZEN_M          = 1001116; | ||||||
|  | CROWD_ELEZEN_F          = 1001117; | ||||||
|  | CROWD_LALAFELL_M        = 1001118; | ||||||
|  | CROWD_LALAFELL_F        = 1001119; | ||||||
|  | CROWD_MIQOTE            = 1001120; | ||||||
|  | CROWD_ROEGADYN          = 1001121; | ||||||
|  | GUILD_KIORA             = 1000780; | ||||||
|  | GUILD_OPONDHAO          = 1000781; | ||||||
|  | GUILD_BERTRAM           = 1000782; | ||||||
|  | GUILD_MINERVA           = 1000783; | ||||||
|  | GUILD_ZOENGTERBIN       = 1000784; | ||||||
|  | GUILD_STYRMOEYA         = 1000785; | ||||||
|  | GUILD_YHAH_AMARIYO      = 1000786; | ||||||
|  | GUILD_HILDIE            = 1000787; | ||||||
|  | GUILD_LETTICE           = 1000788; | ||||||
|  | GUILD_TYON              = 1000789; | ||||||
|  | GUILD_OTOPA_POTTOPA     = 1000864; | ||||||
|  | GUILD_THAISIE           = 1000865; | ||||||
|  | GUILD_SESEBARU          = 1001182; | ||||||
|  | GUILD_TOTONAWA          = 1001371; | ||||||
|  | GUILD_EUSTACE           = 1001372; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | -- Quest Markers | ||||||
|  | MRKR_YAYATOKI               = 11000901; | ||||||
|  | MRKR_ASCILIA                = 11000902; | ||||||
|  | MRKR_FRETFUL_FARMHAND       = 11000903; | ||||||
|  | MRKR_GIL_DIGGING_MISTRESS   = 11000904; | ||||||
|  | MRKR_COMBAT_TUTORIAL        = 11000905; | ||||||
|  | MRKR_ADV_GUILD              = 11000906; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | -- Quest Flags | ||||||
|  | FLAG_SEQ000_MINITUT0    = 0; -- PushEvent ASCILIA | ||||||
|  | FLAG_SEQ000_MINITUT1    = 1; -- TalkEvent ASCILIA | ||||||
|  | FLAG_SEQ000_MINITUT2    = 2; -- TalkEvent FRETFUL_FARMHAND | ||||||
|  | FLAG_SEQ000_MINITUT3    = 3; -- TalkEvent GIL_DIGGING_MISTRESS | ||||||
|  |  | ||||||
|  | FLAG_SEQ010_TALK0       = 0; -- TalkEvent YAYATOKI | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function onStart(player, quest) | ||||||
|  |     quest:StartSequence(SEQ_000); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onFinish(player, quest) | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onSequence(player, quest, sequence) | ||||||
|  |  | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         -- Setup states incase we loaded in. | ||||||
|  |         local asciliaCanPush = not quest:GetFlag(FLAG_SEQ000_MINITUT0); | ||||||
|  |         local asciliaFlag = quest:GetFlag(FLAG_SEQ000_MINITUT1) and QFLAG_NONE or QFLAG_PLATE; | ||||||
|  |         local fretfulfarmhandFlag = quest:GetFlag(FLAG_SEQ000_MINITUT2) and QFLAG_NONE or QFLAG_PLATE; | ||||||
|  |         local gildiggingmistressFlag = quest:GetFlag(FLAG_SEQ000_MINITUT3) and QFLAG_NONE or QFLAG_PLATE; | ||||||
|  |  | ||||||
|  |         local exitFlag = quest:GetFlags() == 0xF and QFLAG_MAP or QFLAG_NONE; | ||||||
|  |  | ||||||
|  |         if (asciliaCanPush) then | ||||||
|  |             fretfulfarmhandFlag = QFLAG_NONE; | ||||||
|  |             gildiggingmistressFlag = QFLAG_NONE; | ||||||
|  |         end | ||||||
|  |  | ||||||
|  |         --AddENpc(classId, byte flagType=0,isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned) | ||||||
|  |         quest:AddENpc(ASCILIA, asciliaFlag, true, asciliaCanPush); | ||||||
|  |         quest:AddENpc(WARBURTON); | ||||||
|  |         quest:AddENpc(RURURAJI); | ||||||
|  |         quest:AddENpc(BIG_BELLIED_BARKER); | ||||||
|  |         quest:AddENpc(FRETFUL_FARMHAND, fretfulfarmhandFlag); | ||||||
|  |         quest:AddENpc(DEBAUCHED_DEMONESS); | ||||||
|  |         quest:AddENpc(DAPPER_DAN); | ||||||
|  |         quest:AddENpc(LOUTISH_LAD); | ||||||
|  |         quest:AddENpc(GIL_DIGGING_MISTRESS, gildiggingmistressFlag); | ||||||
|  |         quest:AddENpc(TWITTERING_TOMBOY); | ||||||
|  |         quest:AddENpc(STOCKY_STRANGER); | ||||||
|  |         quest:AddENpc(EXIT_TRIGGER, exitFlag, false, true); | ||||||
|  |         quest:AddENpc(OPENING_STOPER_ULDAH, QFLAG_NONE, false, false, true); | ||||||
|  |  | ||||||
|  |     elseif (sequence == SEQ_010) then | ||||||
|  |         local yayatokiFlag = quest:GetFlag(FLAG_SEQ010_TALK0) and QFLAG_NONE or QFLAG_PLATE; | ||||||
|  |         local uldahopeningexitFlag = QFLAG_MAP; | ||||||
|  |         quest:AddENpc(KEEN_EYED_MERCHANT); | ||||||
|  |         quest:AddENpc(HIGH_SPIRITED_FELLOW); | ||||||
|  |         quest:AddENpc(DISREPUTABLE_MIDLANDER); | ||||||
|  |         quest:AddENpc(LONG_LEGGED_LADY); | ||||||
|  |         quest:AddENpc(LARGE_LUNGED_LABORER); | ||||||
|  |         quest:AddENpc(TOOTH_GRINDING_TRAVELER); | ||||||
|  |         quest:AddENpc(FULL_LIPPED_FILLE); | ||||||
|  |         quest:AddENpc(YAYATOKI, yayatokiFlag); | ||||||
|  |         quest:AddENpc(BLOCKER, QFLAG_NONE, false, true); | ||||||
|  |         quest:AddENpc(ULDAH_OPENING_EXIT, uldahopeningexitFlag, false, true); | ||||||
|  |     end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onTalk(player, quest, npc) | ||||||
|  |     local sequence = quest:getSequence(); | ||||||
|  |     local classId = npc:GetActorClassId(); | ||||||
|  |  | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         seq000_onTalk(player, quest, npc, classId); | ||||||
|  |     elseif (sequence == SEQ_010) then | ||||||
|  |         seq010_onTalk(player, quest, npc, classId); | ||||||
|  |     end | ||||||
|  |     quest:UpdateENPCs(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onPush(player, quest, npc) | ||||||
|  |  | ||||||
|  |     local sequence = quest:getSequence(); | ||||||
|  |     local classId = npc:GetActorClassId(); | ||||||
|  |  | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         if (classId == ASCILIA) then | ||||||
|  |            callClientFunction(player, "delegateEvent", player, quest, "processTtrNomal002"); | ||||||
|  |            player:EndEvent(); | ||||||
|  |         elseif (classId == EXIT_TRIGGER) then | ||||||
|  |             if (quest:GetFlags() == 0xF) then | ||||||
|  |                 doExitTrigger(player, quest, npc); | ||||||
|  |                 return; | ||||||
|  |             else | ||||||
|  |                 callClientFunction(player, "delegateEvent", player, quest, "processTtrBlkNml001"); | ||||||
|  |                 GetWorldManager():DoPlayerMoveInZone(player, -22, 196, 87, 2.4, 0x11) | ||||||
|  |                 player:EndEvent(); | ||||||
|  |             end | ||||||
|  |         end | ||||||
|  |     elseif (sequence == SEQ_010) then | ||||||
|  |         if (classId == BLOCKER) then | ||||||
|  |  | ||||||
|  |             posz = player:GetPos()[3]; | ||||||
|  |  | ||||||
|  |             if (posz >= 71 and posz <= 95) then | ||||||
|  |                 callClientFunction(player, "delegateEvent", player, quest, "processTtrBlkNml002"); | ||||||
|  |                 GetWorldManager():DoPlayerMoveInZone(player, -22.81, 196, 87.82, 2.98, 0x11); | ||||||
|  |             else | ||||||
|  |                 callClientFunction(player, "delegateEvent", player, quest, "processTtrBlkNml003"); | ||||||
|  |                 GetWorldManager():DoPlayerMoveInZone(player, -0.3, 196, 116, -2.7, 0x11); | ||||||
|  |             end | ||||||
|  |         elseif (classId == ULDAH_OPENING_EXIT) then | ||||||
|  |             player:ReplaceQuest(quest, "Man0u1") | ||||||
|  |             return; | ||||||
|  |         end | ||||||
|  |     end | ||||||
|  |     quest:UpdateENPCs(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onNotice(player, quest, target) | ||||||
|  |     callClientFunction(player, "delegateEvent", player, quest, "processTtrNomal001withHQ"); | ||||||
|  |     player:EndEvent(); | ||||||
|  |     quest:UpdateENPCs(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function seq000_onTalk(player, quest, npc, classId) | ||||||
|  |  | ||||||
|  |     if (classId == ASCILIA) then | ||||||
|  |  | ||||||
|  |         if (not quest:GetFlag(FLAG_SEQ000_MINITUT0)) then -- If Talk tutorial | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processTtrNomal003"); | ||||||
|  |             quest:SetFlag(FLAG_SEQ000_MINITUT0); -- Used to disable her PushEvent / Allow for her next TalkEvent | ||||||
|  |         else | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processTtrMini001"); | ||||||
|  |             quest:SetFlag(FLAG_SEQ000_MINITUT1); -- Ascilia has now been talked to. | ||||||
|  |         end | ||||||
|  |  | ||||||
|  |     elseif (classId == FRETFUL_FARMHAND) then | ||||||
|  |         if (not quest:GetFlag(FLAG_SEQ000_MINITUT2)) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processTtrMini002_first"); | ||||||
|  |             quest:SetFlag(FLAG_SEQ000_MINITUT2); | ||||||
|  |         else | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processTtrMini002"); | ||||||
|  |         end | ||||||
|  |  | ||||||
|  |     elseif (classId == GIL_DIGGING_MISTRESS) then | ||||||
|  |         if (not quest:GetFlag(FLAG_SEQ000_MINITUT3)) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processTtrMini003_first"); | ||||||
|  |             quest:SetFlag(FLAG_SEQ000_MINITUT3); | ||||||
|  |         else | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processTtrMini003"); | ||||||
|  |         end | ||||||
|  |  | ||||||
|  |     elseif (classId == WARBURTON) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_3"); | ||||||
|  |     elseif (classId == RURURAJI) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_13"); | ||||||
|  |     elseif (classId == BIG_BELLIED_BARKER) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_6"); | ||||||
|  |     elseif (classId == DEBAUCHED_DEMONESS) then | ||||||
|  |          callClientFunction(player, "delegateEvent", player, quest, "processEvent000_8"); | ||||||
|  |     elseif (classId == DAPPER_DAN) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_9"); | ||||||
|  |     elseif (classId == LOUTISH_LAD) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_10"); | ||||||
|  |     elseif (classId == TWITTERING_TOMBOY) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_12"); | ||||||
|  |     elseif (classId == STOCKY_STRANGER) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_6_2"); | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     player:EndEvent(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function seq010_onTalk(player, quest, npc, classId) | ||||||
|  |  | ||||||
|  |     if (classId == KEEN_EYED_MERCHANT) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent020_2"); | ||||||
|  |     elseif (classId == HIGH_SPIRITED_FELLOW) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent020_3"); | ||||||
|  |     elseif (classId == DISREPUTABLE_MIDLANDER) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent020_4"); | ||||||
|  |     elseif (classId == LONG_LEGGED_LADY) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_14"); | ||||||
|  |     elseif (classId == LARGE_LUNGED_LABORER) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEtc003"); | ||||||
|  |     elseif (classId == TOOTH_GRINDING_TRAVELER) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEtc001"); | ||||||
|  |     elseif (classId == FULL_LIPPED_FILLE) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEtc002"); | ||||||
|  |     elseif (classId == YAYATOKI) then | ||||||
|  |         if (not quest:GetFlag(FLAG_SEQ010_TALK0)) then | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processEvent020_8"); | ||||||
|  |             quest:SetFlag(FLAG_SEQ010_TALK0); | ||||||
|  |         else | ||||||
|  |             callClientFunction(player, "delegateEvent", player, quest, "processEvent020_8"); | ||||||
|  |         end | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     player:EndEvent(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function getJournalMapMarkerList(player, quest) | ||||||
|  |     local sequence = quest:getSequence(); | ||||||
|  |     local possibleMarkers = {}; | ||||||
|  |  | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         if (quest:GetFlag(FLAG_SEQ000_MINITUT0)) then | ||||||
|  |             if (not quest:GetFlag(FLAG_SEQ000_MINITUT1)) then table.insert(possibleMarkers, MRKR_ASCILIA); end | ||||||
|  |             if (not quest:GetFlag(FLAG_SEQ000_MINITUT2)) then table.insert(possibleMarkers, MRKR_FRETFUL_FARMHAND); end | ||||||
|  |             if (not quest:GetFlag(FLAG_SEQ000_MINITUT3)) then table.insert(possibleMarkers, MRKR_GIL_DIGGING_MISTRESS); end | ||||||
|  |         end | ||||||
|  |  | ||||||
|  |     elseif (sequence == SEQ_010) then | ||||||
|  |         if (not quest:GetFlag(FLAG_SEQ010_TALK0)) then | ||||||
|  |             table.insert(possibleMarkers, MRKR_YAYATOKI) | ||||||
|  |         end | ||||||
|  |             table.insert(possibleMarkers, MRKR_ADV_GUILD); | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     return unpack(possibleMarkers) | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function doExitTrigger(player, quest, npc) | ||||||
|  |     quest:ClearData(); | ||||||
|  |     quest:StartSequence(SEQ_005); | ||||||
|  |     contentArea = player.CurrentArea:CreateContentArea(player, "/Area/PrivateArea/Content/PrivateAreaMasterSimpleContent", "man0u01", "SimpleContent30079", "Quest/QuestDirectorMan0u001"); | ||||||
|  |  | ||||||
|  |     if (contentArea == nil) then | ||||||
|  |         return; | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     director = contentArea:GetContentDirector(); | ||||||
|  |     player:AddDirector(director); | ||||||
|  |     director:StartDirector(false); | ||||||
|  |  | ||||||
|  |     player:KickEvent(director, "noticeEvent", true); | ||||||
|  |     player:SetLoginDirector(director); | ||||||
|  |  | ||||||
|  |     GetWorldManager():DoZoneChangeContent(player, contentArea, -24.34, 192, 34.22, 0.78, 16); | ||||||
|  |     return; | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
| MAN0U0_FLAG_MINITUT_DONE1 = 4; |  | ||||||
| MAN0U0_FLAG_MINITUT_DONE2 = 8; |  | ||||||
| MAN0U0_FLAG_MINITUT_DONE3 = 16; |  | ||||||
|   | |||||||
							
								
								
									
										240
									
								
								Data/scripts/quests/man/man0u1.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										240
									
								
								Data/scripts/quests/man/man0u1.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,240 @@ | |||||||
|  | require("global"); | ||||||
|  |  | ||||||
|  | --[[ | ||||||
|  |  | ||||||
|  | Quest Script | ||||||
|  |  | ||||||
|  | Name:   Court in the Sands  | ||||||
|  | Code:   Man0u1 | ||||||
|  | Id:     110010 | ||||||
|  | Prereq: Flowers for All (Man0u0 - 110009) | ||||||
|  | Notes: | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Vid refs -  | ||||||
|  | https://www.youtube.com/watch?v=WNRLrwZ3BJY&t=284s | ||||||
|  | https://www.youtube.com/watch?v=eZgcq-FMpfw&t=504s | ||||||
|  |  | ||||||
|  | Coliseum fight - https://www.youtube.com/watch?v=Jcv9I2Bk46w | ||||||
|  |  | ||||||
|  | A LOT - https://www.youtube.com/watch?v=gySHO1Be9OM | ||||||
|  |  | ||||||
|  | ]] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | --[[  | ||||||
|  |  | ||||||
|  | Phase: | ||||||
|  |          | ||||||
|  | 45  (Miner's Guild) | ||||||
|  |         Linette   processEvent050 (initial CS) | ||||||
|  |         Change phase to 50 after interaction | ||||||
|  |          | ||||||
|  | 50  (Miner's Guild Instance #1) | ||||||
|  |         Name                    DisplayName             ActorClass                          Event | ||||||
|  |         Linette                 1100016                 1000861                             processEvent050_2 | ||||||
|  |         Corguevais              1200025                 1000043/1001054                     processEvent050_11 | ||||||
|  |         Nittma Guttma           1400127                 1001286                             processEvent050_10 | ||||||
|  |         Nortmoen                1600127                 1600042 | ||||||
|  |         F'lhaminn               1900054                 1000038/1000842/1001514/2290008     processEvent051_1 | ||||||
|  |         Tyago Moui              1900130                 1001203                             processEvent050_12 | ||||||
|  |         Shilgen                 2200216                 1000637 | ||||||
|  |         Muscular Miner          4000202                 1000690/1700013                     processEvent050_7 | ||||||
|  |         Close-fisted Woman      4000366                 1000981                             processEvent050_8 | ||||||
|  |         Astonished Adventurer   4000377                 1000895                             processEvent050_9 | ||||||
|  |         Manic Miner             4000444                 1001283                             processEvent050_13 | ||||||
|  |         Maddened Miner          4000445                 1001284                             processEvent050_14 | ||||||
|  |         Maudlin Miner           4000446                 1001287                             processEvent050_3 | ||||||
|  |         Mocking Miner           4000447                 1001288                             processEvent050_4 | ||||||
|  |         Monitoring Miner        4000448                 1001289                             processEvent050_5 | ||||||
|  |         Displeased Dancer       4000449                 1001290                             processEvent050_6 | ||||||
|  |          | ||||||
|  |         Emotes 103, 108, 121, 125, 140, 135  in that order @ F'lhaminn, then change phase to 51 | ||||||
|  | 51 | ||||||
|  |         Emotes 108 @ Maddened Miner | ||||||
|  |         Emotes 135, 103, 121 @ Manic Miner    | ||||||
|  |         Check both for clear state after each interaction and change phase to 55 | ||||||
|  |          | ||||||
|  | 55  (Miner's Guild Instance #2) | ||||||
|  |  | ||||||
|  | --]] | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | -- Sequence Numbers | ||||||
|  | SEQ_000 = 0; -- Ul'dah Adventurer's Guild | ||||||
|  | SEQ_005 = 5; -- Run to Camp Black Brush & Attune | ||||||
|  | SEQ_010 = 10; -- Return to the Guild | ||||||
|  | SEQ_012 = 12; -- Speak to Momodi | ||||||
|  | SEQ_015 = 15; -- Visiting guilds (GSM, GLD) | ||||||
|  | SEQ_045 = 45; | ||||||
|  | SEQ_050 = 50; | ||||||
|  | SEQ_057 = 57; | ||||||
|  | SEQ_058 = 58; | ||||||
|  | SEQ_060 = 60; | ||||||
|  | SEQ_065 = 65; | ||||||
|  | SEQ_070 = 70; | ||||||
|  | SEQ_075 = 75; | ||||||
|  | SEQ_080 = 80; | ||||||
|  | SEQ_085 = 85; | ||||||
|  | SEQ_090 = 90; | ||||||
|  | SEQ_095 = 95; | ||||||
|  | SEQ_100 = 100; | ||||||
|  | SEQ_105 = 105; | ||||||
|  | SEQ_110 = 110; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | -- Actor Class Ids | ||||||
|  | OVERCOMPETITIVE_ADVENTURER  = 1000807; | ||||||
|  | MOMODI                      = 1000841; | ||||||
|  | OTOPA_POTTOPA               = 1000864; | ||||||
|  | UNDAUNTED_ADVENTURER        = 1000936; | ||||||
|  | GREEDY_MERCHANT             = 1000937; | ||||||
|  | LIONHEARTED_ADVENTURER      = 1000938; | ||||||
|  | SPRY_SALESMAN               = 1000939; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | UPBEAT_ADVENTURER           = 1000940; | ||||||
|  | SEEMINGLY_CALM_ADVENTURER   = 1000941; | ||||||
|  | UNKNOWN1 = 0; | ||||||
|  | UNKNOWN2 = 0; | ||||||
|  |  | ||||||
|  | THANCRED = 1000948; -- 1000010 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | -- Quest Markers | ||||||
|  | MRKR_MOMODI             = 11001001; | ||||||
|  | MRKR_CAMP_BLACK_BRUSH   = 11001002; | ||||||
|  |  | ||||||
|  | -- Quest Items | ||||||
|  | ITEM_VELODYNA_COSMOS = 0; -- Seq_000 : 2nd journal arg.    >=5 doesn't have. | ||||||
|  | ITEM_COLISEUM_PASS   = 0; -- Seq_015 : 3rd journal arg.    >=5 doesn't have | ||||||
|  |  | ||||||
|  | -- Quest Flags | ||||||
|  | FLAG_SEQ000     = 0;  | ||||||
|  |  | ||||||
|  | function onStart(player, quest)  | ||||||
|  |     quest:StartSequence(SEQ_000); | ||||||
|  |      | ||||||
|  |     -- Immediately move to the Adventurer's Guild private area | ||||||
|  | 	callClientFunction(player, "delegateEvent", player, quest, "processEventMomodiStart"); | ||||||
|  |     GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 4, 15, -75.242, 195.009, 74.572, -0.046);	 | ||||||
|  |     player:SendGameMessage(quest, 329, 0x20); | ||||||
|  | 	player:SendGameMessage(quest, 330, 0x20); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onFinish(player, quest) | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onSequence(player, quest, sequence) | ||||||
|  |  | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         -- Setup states incase we loaded in. | ||||||
|  |  | ||||||
|  |         --AddENpc(classId, byte flagType=0,isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned) | ||||||
|  |         quest:AddENpc(MOMODI, QFLAG_PLATE); | ||||||
|  |         quest:AddENpc(OTOPA_POTTOPA); | ||||||
|  |  | ||||||
|  |     elseif (sequence == SEQ_005) then  | ||||||
|  |         quest:AddENpc(MOMODI); | ||||||
|  |     end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onTalk(player, quest, npc) | ||||||
|  |     local sequence = quest:getSequence(); | ||||||
|  |     local classId = npc:GetActorClassId(); | ||||||
|  |      | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         seq000_onTalk(player, quest, npc, classId); | ||||||
|  |     elseif (sequence == SEQ_005) then | ||||||
|  |         seq005_onTalk(player, quest, npc, classId);      | ||||||
|  |     end | ||||||
|  | 	quest:UpdateENPCs(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function onPush(player, quest, npc) | ||||||
|  |  | ||||||
|  |     local sequence = quest:getSequence(); | ||||||
|  |     local classId = npc:GetActorClassId();   | ||||||
|  |     player:SendMessage(0x20, "", "Sequence: "..sequence.." Class Id: "..classId); | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |      | ||||||
|  |     elseif (sequence == SEQ_010) then | ||||||
|  |     | ||||||
|  |     end | ||||||
|  | 	quest:UpdateENPCs(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function onNotice(player, quest, target) | ||||||
|  |     callClientFunction(player, "delegateEvent", player, quest, "processEvent000_1"); -- Describes what an Instance is | ||||||
|  |     player:EndEvent(); | ||||||
|  | 	quest:UpdateENPCs(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  |      | ||||||
|  | function seq000_onTalk(player, quest, npc, classId) | ||||||
|  |      | ||||||
|  |     if (classId == MOMODI) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent010"); | ||||||
|  |         player:EndEvent(); | ||||||
|  |         quest:StartSequence(SEQ_005); | ||||||
|  |         GetWorldManager():DoZoneChange(player, 175, nil, 0, 15, player.positionX, player.positionY, player.positionZ, player.rotation); | ||||||
|  |         return; | ||||||
|  |     elseif (classId == UNDAUNTED_ADVENTURER) then | ||||||
|  |         callClientFunction (player, "delegateEvent", player, quest, "processEvent000_2"); | ||||||
|  |     elseif (classId == GREEDY_MERCHANT) then | ||||||
|  |         callClientFunction (player, "delegateEvent", player, quest, "processEvent000_3"); | ||||||
|  |     elseif (classId == SPRY_SALESMAN) then | ||||||
|  |         callClientFunction (player, "delegateEvent", player, quest, "processEvent000_4"); | ||||||
|  |     elseif (classId == LIONHEARTED_ADVENTURER) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_5"); | ||||||
|  |     elseif (classId == UPBEAT_ADVENTURER) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_6"); | ||||||
|  |     elseif (classId == SEEMINGLY_CALM_ADVENTURER) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_7"); | ||||||
|  |     elseif (classId == OVERCOMPETITIVE_ADVENTURER) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_8");         | ||||||
|  |     elseif (classId == OTOPA_POTTOPA) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_9"); | ||||||
|  |     elseif (classId == THANCRED) then | ||||||
|  |         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_10");         | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     player:EndEvent(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function seq005_onTalk(player, quest, npc, classId)  | ||||||
|  |     if (classId == MOMODI) then | ||||||
|  | 		callClientFunction(player, "delegateEvent", player, quest, "processEvent010_2"); | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     player:EndEvent(); | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function getJournalInformation(player, quest) | ||||||
|  | 	return 0, ITEM_VELODYNA_COSMOS, ITEM_COLISEUM_PASS; | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function getJournalMapMarkerList(player, quest) | ||||||
|  |     local sequence = quest:getSequence(); | ||||||
|  |     local possibleMarkers = {}; | ||||||
|  |  | ||||||
|  |     if (sequence == SEQ_000) then | ||||||
|  |         table.insert(possibleMarkers, MRKR_MOMODI); | ||||||
|  |     elseif (sequence == SEQ_010) then | ||||||
|  |         if (not quest:GetFlag(FLAG_SEQ010_TALK0)) then  | ||||||
|  |             table.insert(possibleMarkers, MRKR_YAYATOKI) | ||||||
|  |         else | ||||||
|  |             table.insert(possibleMarkers, MRKR_ADV_GUILD); | ||||||
|  |         end | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     return unpack(possibleMarkers) | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | function init(npc) | ||||||
|  | 	return false, false, 0, 0, 0x1A5, 4289; | ||||||
|  | end | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_13", nil, nil, nil);	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,52 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onSpawn(player, npc) |  | ||||||
| 	npc:SetQuestGraphic(player, 0x2);	 |  | ||||||
| end |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = player:GetQuest("Man0u0"); |  | ||||||
| 	 |  | ||||||
| 	if (man0u0Quest ~= nil) then |  | ||||||
| 		if (man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE1) == false) then |  | ||||||
| 			npc:SetQuestGraphic(player, 0x2); |  | ||||||
| 		end |  | ||||||
| 		 |  | ||||||
| 		if (man0u0Quest:GetQuestFlag(MAN0U0_FLAG_TUTORIAL3_DONE) == true) then |  | ||||||
| 			player:SetEventStatus(npc, "pushDefault", false, 0x2);		 |  | ||||||
| 		end |  | ||||||
| 	end |  | ||||||
| 	 |  | ||||||
| 	if (man0u0Quest ~= nil) then |  | ||||||
| 		if (triggerName == "pushDefault") then		 |  | ||||||
| 				callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrNomal002", nil, nil, nil);			 |  | ||||||
| 		elseif (triggerName == "talkDefault") then		 |  | ||||||
| 			--Is doing talk tutorial? |  | ||||||
| 			if (man0u0Quest:GetQuestFlag(MAN0U0_FLAG_TUTORIAL3_DONE) == false) then |  | ||||||
| 				player:SetEventStatus(npc, "pushDefault", false, 0x2); |  | ||||||
| 				callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrNomal003", nil, nil, nil); |  | ||||||
| 				man0u0Quest:SetQuestFlag(MAN0U0_FLAG_TUTORIAL3_DONE, true);				 |  | ||||||
| 				npc:SetQuestGraphic(player, 0x2); |  | ||||||
| 				man0u0Quest:SaveData(); |  | ||||||
| 				 |  | ||||||
| 				player:GetDirector("OpeningDirector"):onTalkEvent(player, npc); |  | ||||||
| 			--Was he talked to for the mini tutorial? |  | ||||||
| 			else				 |  | ||||||
| 				callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrMini001", nil, nil, nil); |  | ||||||
| 				if (man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE1) == false) then |  | ||||||
| 					npc:SetQuestGraphic(player, 0x0); |  | ||||||
| 					man0u0Quest:SetQuestFlag(MAN0U0_FLAG_MINITUT_DONE1, true); |  | ||||||
| 					man0u0Quest:SaveData();										 |  | ||||||
| 				end |  | ||||||
|  |  | ||||||
| 			end |  | ||||||
|  |  | ||||||
| 			player:GetDirector("OpeningDirector"):onTalkEvent(player, npc); |  | ||||||
| 		else |  | ||||||
| 			player:EndEvent(); |  | ||||||
| 		end |  | ||||||
| 	end |  | ||||||
| 	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_6", nil, nil, nil);	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_9", nil, nil, nil);	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_8", nil, nil, nil);	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,46 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onSpawn(player, npc) |  | ||||||
|  |  | ||||||
| 	man0u0Quest = player:GetQuest("Man0u0"); |  | ||||||
| 	 |  | ||||||
| 	if (man0u0Quest ~= nil) then |  | ||||||
| 		player:SetEventStatus(npc, "pushDefault", true, 0x2); |  | ||||||
| 		if (man0u0Quest ~= nil and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE1) == true and man0U0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE2) == true and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE3) == true) then			 |  | ||||||
| 			npc:SetQuestGraphic(player, 0x3); |  | ||||||
| 		else			 |  | ||||||
| 			npc:SetQuestGraphic(player, 0x0); |  | ||||||
| 		end |  | ||||||
| 	end |  | ||||||
| 	 |  | ||||||
| end |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName)		 |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	 |  | ||||||
| 	if (man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE1) ~= true) then |  | ||||||
| 		print "AAAA" |  | ||||||
| 	end |  | ||||||
| 	 |  | ||||||
| 	if (man0u0Quest ~= nil and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE1) == true and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE2) == true and man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE3) == true) then		 |  | ||||||
| 		player:EndEvent(); |  | ||||||
| 		 |  | ||||||
| 		contentArea = player:GetZone():CreateContentArea(player, "/Area/PrivateArea/Content/PrivateAreaMasterSimpleContent", "man0u01", "SimpleContent30079", "Quest/QuestDirectorMan0u001"); |  | ||||||
| 		 |  | ||||||
| 		if (contentArea == nil) then |  | ||||||
| 			player:EndEvent(); |  | ||||||
| 			return; |  | ||||||
| 		end |  | ||||||
| 		 |  | ||||||
| 		director = contentArea:GetContentDirector();		 |  | ||||||
| 		player:AddDirector(director);		 |  | ||||||
| 		director:StartDirector(false); |  | ||||||
| 		 |  | ||||||
| 		player:KickEvent(director, "noticeEvent", true); |  | ||||||
| 		player:SetLoginDirector(director);		 |  | ||||||
| 					 |  | ||||||
| 		GetWorldManager():DoZoneChangeContent(player, contentArea, -24.34, 192, 34.22, 0.78, 16); |  | ||||||
| 	end |  | ||||||
| 	 |  | ||||||
| end |  | ||||||
| @@ -1,31 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onSpawn(player, npc) |  | ||||||
| 	man0u0Quest = player:GetQuest("Man0u0"); |  | ||||||
|  |  | ||||||
| 	if (man0u0Quest ~= nil) then |  | ||||||
| 		if (man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE1) == false) then |  | ||||||
| 			npc:SetQuestGraphic(player, 0x2); |  | ||||||
| 		end |  | ||||||
| 	end	 |  | ||||||
| end |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = player:GetQuest("Man0u0"); |  | ||||||
|  |  | ||||||
| 	if (man0u0Quest ~= nil) then |  | ||||||
| 		if (triggerName == "talkDefault") then |  | ||||||
| 			if (man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE2) == false) then |  | ||||||
| 				callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrMini002_first", nil, nil, nil); |  | ||||||
| 				npc:SetQuestGraphic(player, 0x0); |  | ||||||
| 				man0u0Quest:SetQuestFlag(MAN0U0_FLAG_MINITUT_DONE2, true); |  | ||||||
| 				man0u0Quest:SaveData();				 |  | ||||||
| 				player:GetDirector("OpeningDirector"):onTalkEvent(player, npc); |  | ||||||
| 			else |  | ||||||
| 				callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrMini002", nil, nil, nil); |  | ||||||
| 			end |  | ||||||
| 		end |  | ||||||
| 	end |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,31 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onSpawn(player, npc) |  | ||||||
| 	man0u0Quest = player:GetQuest("Man0u0"); |  | ||||||
|  |  | ||||||
| 	if (man0u0Quest ~= nil) then |  | ||||||
| 		if (man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE3) == false) then |  | ||||||
| 			npc:SetQuestGraphic(player, 0x2); |  | ||||||
| 		end |  | ||||||
| 	end	 |  | ||||||
| end |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = player:GetQuest("Man0u0"); |  | ||||||
|  |  | ||||||
| 	if (man0u0Quest ~= nil) then |  | ||||||
| 		if (triggerName == "talkDefault") then |  | ||||||
| 			if (man0u0Quest:GetQuestFlag(MAN0U0_FLAG_MINITUT_DONE3) == false) then |  | ||||||
| 				callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrMini003_first", nil, nil, nil); |  | ||||||
| 				npc:SetQuestGraphic(player, 0x0); |  | ||||||
| 				man0u0Quest:SetQuestFlag(MAN0U0_FLAG_MINITUT_DONE3, true); |  | ||||||
| 				man0u0Quest:SaveData();				 |  | ||||||
| 				player:GetDirector("OpeningDirector"):onTalkEvent(player, npc); |  | ||||||
| 			else |  | ||||||
| 				callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrMini003", nil, nil, nil); |  | ||||||
| 			end |  | ||||||
| 		end |  | ||||||
| 	end |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_10", nil, nil, nil);	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_13", nil, nil, nil);	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_6_2", nil, nil, nil);	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_12", nil, nil, nil);	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0"); |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_3", nil, nil, nil);	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName)		 |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	 |  | ||||||
| 	if (man0u0Quest ~= nil) then		 |  | ||||||
| 		callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrBlkNml002", nil, nil, nil); |  | ||||||
| 		GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 3, 15, -22.81, 196, 87.82, 2.98); |  | ||||||
| 	end |  | ||||||
| 	 |  | ||||||
| 	player:EndEvent();	 |  | ||||||
| end |  | ||||||
| @@ -1,14 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName)		 |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	 |  | ||||||
| 	if (man0u0Quest ~= nil) then		 |  | ||||||
| 		callClientFunction(player, "delegateEvent", player, man0u0Quest, "processTtrBlkNml003", nil, nil, nil); |  | ||||||
| 		GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 3, 15, -22.81, 196, 87.82, 2.98); |  | ||||||
| 	end |  | ||||||
| 	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| 	 |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent020_4");	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEtc002");	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent020_3");	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent020_2");	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEtc003");	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent000_14");	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent020_6");	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent020_7");	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEtc001");	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,16 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onSpawn(player, npc)	 |  | ||||||
| 	npc:SetQuestGraphic(player, 0x3);	 |  | ||||||
| end |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc)	 |  | ||||||
| 	man0u1Quest = GetStaticActor("Man0u1");		 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u1Quest, "processEventMomodiStart"); |  | ||||||
| 	player:ReplaceQuest(110009, 110010); |  | ||||||
| 	player:SendGameMessage(GetStaticActor("Man0u1"), 329, 0x20); |  | ||||||
| 	player:SendGameMessage(GetStaticActor("Man0u1"), 330, 0x20); |  | ||||||
| 	GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 4, 15, -75.242, 195.009, 74.572, -0.046);	 |  | ||||||
| 	player:endEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| require ("global") |  | ||||||
| require ("quests/man/man0u0") |  | ||||||
|  |  | ||||||
| function onSpawn(player, npc)	 |  | ||||||
| 	npc:SetQuestGraphic(player, 0x2);	 |  | ||||||
| end |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	man0u0Quest = GetStaticActor("Man0u0");	 |  | ||||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent020_8");	 |  | ||||||
| 	npc:SetQuestGraphic(player, 0x0); |  | ||||||
| 	player:EndEvent(); |  | ||||||
| end |  | ||||||
| @@ -1,26 +0,0 @@ | |||||||
| require ("global") |  | ||||||
|  |  | ||||||
| function onSpawn(player, npc)	 |  | ||||||
| 	npc:SetQuestGraphic(player, 0x2);	 |  | ||||||
| end |  | ||||||
|  |  | ||||||
| function onEventStarted(player, npc, triggerName) |  | ||||||
| 	local man0u1Quest = player:GetQuest("Man0u1"); |  | ||||||
| 	local pos = player:GetPos(); |  | ||||||
| 	 |  | ||||||
| 	if (man0u1Quest ~= nil) then	 |  | ||||||
| 		callClientFunction(player, "delegateEvent", player, man0u1Quest, "processEvent010"); |  | ||||||
| 		player:EndEvent(); |  | ||||||
| 		 |  | ||||||
| 		--[[director = player:GetZone():CreateDirector("AfterQuestWarpDirector"); |  | ||||||
| 		player:KickEvent(director, "noticeEvent", true); |  | ||||||
| 		player:AddDirector(director); |  | ||||||
| 		player:SetLoginDirector(director); |  | ||||||
| 		--]] |  | ||||||
| 		GetWorldManager():DoZoneChange(player, 175, nil, 0, 15, pos[0], pos[1], pos[2], pos[3]); |  | ||||||
| 		return; |  | ||||||
| 	end |  | ||||||
| 	 |  | ||||||
| 	player:EndEvent(); |  | ||||||
| 	 |  | ||||||
| end |  | ||||||
| @@ -915,6 +915,14 @@ namespace Meteor.Map.Actors | |||||||
|             QueuePacket(SetMusicPacket.BuildPacket(Id, musicId, 1)); |             QueuePacket(SetMusicPacket.BuildPacket(Id, musicId, 1)); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         public void ChangeMusic(ushort musicId, ushort musicTrackMode) | ||||||
|  |         { | ||||||
|  |             QueuePacket(SetMusicPacket.BuildPacket(Id, musicId, musicTrackMode)); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |  | ||||||
|         public void SendMountAppearance() |         public void SendMountAppearance() | ||||||
|         { |         { | ||||||
|             if (mountState == 1) |             if (mountState == 1) | ||||||
| @@ -1688,6 +1696,7 @@ namespace Meteor.Map.Actors | |||||||
|                     defaultTalk = (Quest) Server.GetStaticActors("DftFst"); |                     defaultTalk = (Quest) Server.GetStaticActors("DftFst"); | ||||||
|                     break; |                     break; | ||||||
|                 case 104: |                 case 104: | ||||||
|  |                 case 107: | ||||||
|                     defaultTalk = (Quest) Server.GetStaticActors("DftWil"); |                     defaultTalk = (Quest) Server.GetStaticActors("DftWil"); | ||||||
|                     break; |                     break; | ||||||
|                 case 105: |                 case 105: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user