mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Man0u0 & Man0u1 work progress.
Man0u0 nearly finished. Needs some misc. background actors Id'd and placed, and some additional bug-testing. Man0u1 still very early. Initial area's actors mostly scripted.
This commit is contained in:
		| @@ -0,0 +1,3 @@ | ||||
| function init(npc) | ||||
| 	return false, false, 0, 0, 0, 0;	 | ||||
| end | ||||
| @@ -48,8 +48,9 @@ function init(npc) | ||||
| end | ||||
|  | ||||
| function onEventStarted(player, npc, triggerName)	 | ||||
|     local classId = npc:GetActorClassId(); | ||||
| 	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; | ||||
| 	 | ||||
| 	if (hasChocobo == false) then -- Let GMs auto have the issuance for debugging  | ||||
| @@ -57,50 +58,64 @@ function onEventStarted(player, npc, triggerName) | ||||
| 	end	 | ||||
|  | ||||
| 	local hasFunds = (player:GetCurrentGil() >= rentalPrice); | ||||
|  | ||||
| 	callClientFunction(player, "eventTalkWelcome", player); | ||||
| 	 | ||||
| 	local menuChoice = callClientFunction(player, "eventAskMainMenu", player, curLevel, hasFunds, hasIssuance, hasChocobo, hasChocobo, 0); | ||||
|  | ||||
| 	if (menuChoice == 1) then -- Issuance option | ||||
| 	 | ||||
| 		callClientFunction(player, "eventTalkMyChocobo", player); | ||||
| 		local nameResponse = callClientFunction(player, "eventSetChocoboName", true); | ||||
|  | ||||
| 		if (nameResponse == "") then -- Cancel Chocobo naming | ||||
| 			callClientFunction(player, "eventCancelChocoboName", player); | ||||
| 			callClientFunction(player, "eventTalkStepBreak", player); | ||||
| 			player:EndEvent(); | ||||
| 			return; | ||||
| 		else		 | ||||
| 			local appearance = startAppearances[npc:GetActorClassId()];			 | ||||
| 			player:IssueChocobo(appearance, nameResponse); | ||||
| 			 | ||||
| 			callClientFunction(player, "eventAfterChocoboName", player);			 | ||||
|  | ||||
| 			--Add Chocobo License and remove issuance | ||||
| 			if (player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(2001007) == false) then | ||||
| 				player:GetItemPackage(INVENTORY_KEYITEMS):AddItem(2001007); | ||||
| 			end | ||||
| 			player:GetItemPackage(INVENTORY_KEYITEMS):RemoveItem(gcIssuances[npc:GetActorClassId()], 1); | ||||
| 			 | ||||
| 			--Warp with the special chocobo warp mode. | ||||
| 			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]);		 | ||||
| 		end | ||||
| 				 | ||||
| 	elseif(menuChoice == 2) then -- Summon Bird | ||||
| 		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]);		 | ||||
| 	elseif(menuChoice == 3) then -- Change Barding | ||||
| 		callClientFunction(player, "eventTalkStepBreak", player); | ||||
| 	elseif(menuChoice == 5) then -- Rent Bird | ||||
| 		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]); | ||||
| 	else | ||||
| 		callClientFunction(player, "eventTalkStepBreak", player); | ||||
| 	end | ||||
|  | ||||
|      | ||||
|      | ||||
|      | ||||
|     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); | ||||
|          | ||||
|         local menuChoice = callClientFunction(player, "eventAskMainMenu", player, curLevel, hasFunds, hasIssuance, hasChocobo, hasChocobo, 0); | ||||
|      | ||||
|         if (menuChoice == 1) then -- Issuance option | ||||
|          | ||||
|             callClientFunction(player, "eventTalkMyChocobo", player); | ||||
|             local nameResponse = callClientFunction(player, "eventSetChocoboName", true); | ||||
|      | ||||
|             if (nameResponse == "") then -- Cancel Chocobo naming | ||||
|                 callClientFunction(player, "eventCancelChocoboName", player); | ||||
|                 callClientFunction(player, "eventTalkStepBreak", player); | ||||
|                 player:EndEvent(); | ||||
|                 return; | ||||
|             else		 | ||||
|                 local appearance = startAppearances[classId];			 | ||||
|                 player:IssueChocobo(appearance, nameResponse); | ||||
|                  | ||||
|                 callClientFunction(player, "eventAfterChocoboName", player);			 | ||||
|      | ||||
|                 --Add Chocobo License and remove issuance | ||||
|                 if (player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(2001007) == false) then | ||||
|                     player:GetItemPackage(INVENTORY_KEYITEMS):AddItem(2001007); | ||||
|                 end | ||||
|                 player:GetItemPackage(INVENTORY_KEYITEMS):RemoveItem(gcIssuances[classId], 1); | ||||
|                  | ||||
|                 --Warp with the special chocobo warp mode. | ||||
|                 mountChocobo(player);			 | ||||
|                 GetWorldManager():DoZoneChange(player, cityExits[classId][1], nil, 0, SPAWN_CHOCOBO_GET, cityExits[classId][2], cityExits[classId][3], cityExits[classId][4], cityExits[classId][5]);		 | ||||
|             end | ||||
|                      | ||||
|         elseif(menuChoice == 2) then -- Summon Bird | ||||
|             mountChocobo(player); | ||||
|             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 | ||||
|             callClientFunction(player, "eventTalkStepBreak", player); | ||||
|         elseif(menuChoice == 5) then -- Rent Bird | ||||
|             mountChocobo(player, true, 1); | ||||
|             GetWorldManager():DoZoneChange(player, cityExits[classId][1], nil, 0, SPAWN_CHOCOBO_RENTAL, cityExits[classId][2], cityExits[classId][3], cityExits[classId][4], cityExits[classId][5]); | ||||
|         else | ||||
|             callClientFunction(player, "eventTalkStepBreak", player); | ||||
|         end | ||||
|     end | ||||
|      | ||||
| 	player:EndEvent(); | ||||
| end | ||||
|  | ||||
| @@ -114,6 +129,6 @@ function mountChocobo(player, isRental, rentalMinutes) | ||||
| 	 | ||||
| 	player:SendMountAppearance(); | ||||
| 	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);	 | ||||
| end | ||||
| @@ -109,10 +109,11 @@ function onEventStarted(player, npc, triggerName) | ||||
|          | ||||
|         if (choice ~= 0) then | ||||
|              | ||||
|             player:EndEvent(); | ||||
|              | ||||
|             | ||||
|            callClientFunction(player, "eventAfterWarpOtherZone", player); | ||||
|             | ||||
|            wait(1); | ||||
|            player:EndEvent(); | ||||
|             local player_zone = player:GetPos()[5]; | ||||
|             spawnType = 0x0A; | ||||
|             if (player_zone == aethernet[city][choice].zone) then | ||||
|   | ||||
| @@ -28,10 +28,10 @@ function onEventStarted(player, npc, eventType, eventName) | ||||
| 	local possibleQuests = {}; | ||||
| 	 | ||||
| 	-- Create the switch table for this npc | ||||
| 	if (defaultTalk ~= nil and eventType == EVENT_TALK) then | ||||
| 	if (defaultTalk ~= nil and eventType == ETYPE_TALK) then | ||||
| 		table.insert(possibleQuests, defaultTalk); | ||||
| 	end | ||||
| 	if (tutorialTalk ~= nil and eventType == EVENT_TALK) then | ||||
| 	if (tutorialTalk ~= nil and eventType == ETYPE_TALK) then | ||||
| 		table.insert(possibleQuests, tutorialTalk); | ||||
| 	end | ||||
| 	if (activeQuests ~= nil) then | ||||
|   | ||||
| @@ -8,10 +8,10 @@ properties = { | ||||
|  | ||||
| function onTrigger(player, argc, actorClassId, width, height) | ||||
|  | ||||
|     if (actorClassId == nil) then | ||||
|         player:SendMessage(0x20, "", "No actor class id provided."); | ||||
|         return; | ||||
|     end  | ||||
| 	if (actorClassId == nil) then | ||||
| 		player:SendMessage(0x20, "", "No actor class id provided."); | ||||
| 		return; | ||||
| 	end	 | ||||
|  | ||||
|     local pos = player:GetPos(); | ||||
|     local x = pos[1]; | ||||
| @@ -20,36 +20,16 @@ function onTrigger(player, argc, actorClassId, width, height) | ||||
|     local rot = pos[4]; | ||||
|     local zone = pos[5]; | ||||
|           | ||||
| <<<<<<< HEAD | ||||
|     actorClassId = tonumber(actorClassId); | ||||
|      | ||||
|     if (actorClassId ~= nil) then        | ||||
|         zone = player:GetZone(); | ||||
|         local w = tonumber(width) or 0; | ||||
| ======= | ||||
| 	actorClassId = tonumber(actorClassId); | ||||
| 	 | ||||
| 	if (actorClassId ~= nil) then | ||||
| 		local w = tonumber(width) or 0; | ||||
| >>>>>>> ioncannon/quest_system | ||||
|         local h = tonumber(height) or 0; | ||||
|         printf("%f %f %f", x, y, z); | ||||
|         --local x, y, z = player.GetPos(); | ||||
|         for i = 0, w do | ||||
|             for j = 0, h do | ||||
| <<<<<<< HEAD | ||||
|                 actor = zone:SpawnActor(actorClassId, "test", x + (i - (w / 2) * 3), y, z + (j - (h / 2) * 3), rot); | ||||
|                 actor.SetAppearance(1001149) | ||||
|             end | ||||
|         end | ||||
|     end | ||||
|      | ||||
|     if (actor == nil) then | ||||
|         player:SendMessage(0x20, "", "This actor class id cannot be spawned."); | ||||
|     end | ||||
|      | ||||
| ======= | ||||
| 				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) | ||||
| 			end | ||||
| 		end | ||||
| @@ -59,5 +39,4 @@ function onTrigger(player, argc, actorClassId, width, height) | ||||
| 		player:SendMessage(0x20, "", "This actor class id cannot be spawned."); | ||||
| 	end | ||||
| 	 | ||||
| >>>>>>> ioncannon/quest_system | ||||
| end; | ||||
| @@ -11,7 +11,28 @@ function init() | ||||
| 	return "/Director/Quest/QuestDirectorMan0u001"; | ||||
| 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"); | ||||
| 	startTutorialMode(player); | ||||
| @@ -19,7 +40,8 @@ function onEventStarted(player, actor, triggerName) | ||||
| 	player:EndEvent(); | ||||
| 	waitForSignal("playerActive"); | ||||
| 	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); | ||||
| 	player:EndEvent(); | ||||
| 	wait(4); | ||||
| @@ -40,7 +62,7 @@ function onEventStarted(player, actor, triggerName) | ||||
| 	wait(7); | ||||
| 	player:ChangeMusic(7); | ||||
| 	player:ChangeState(0);  | ||||
| 	kickEventContinue(player, actor, "noticeEvent", "noticeEvent"); | ||||
| 	kickEventContinue(player, director, "noticeEvent", "noticeEvent"); | ||||
| 	callClientFunction(player, "delegateEvent", player, man0u0Quest, "processEvent020", nil, nil, nil);	 | ||||
| 	 | ||||
| 	--[[ | ||||
| @@ -56,9 +78,8 @@ function onEventStarted(player, actor, triggerName) | ||||
| 		OpenWidget (DEFEAT ENEMY)			 | ||||
| 	]] | ||||
| 	 | ||||
| 	man0u0Quest:NextPhase(10);	 | ||||
| 	player:EndEvent();	 | ||||
| 	 | ||||
| 	man0u0Quest:StartSequence(10);		 | ||||
| 	player.CurrentArea:ContentFinished(); | ||||
| 	GetWorldManager():DoZoneChange(player, 175, "PrivateAreaMasterPast", 3, 15, -22.81, 196, 87.82, 2.98); | ||||
|     player:EndEvent(); | ||||
| end | ||||
|   | ||||
| @@ -46,18 +46,17 @@ function onBeginLogin(player) | ||||
| 		player:GetQuest(110005):ClearQuestData(); | ||||
| 		player:GetQuest(110005):ClearQuestFlags(); | ||||
| 	elseif (player:HasQuest(110009) == true and player.CurrentArea.ZoneId == 184) then | ||||
| 		--director = player.CurrentArea:CreateDirector("OpeningDirector", false);		 | ||||
| 		--player:AddDirector(director); | ||||
| 		--director:StartDirector(false);		 | ||||
| 		--player:SetLoginDirector(director);		 | ||||
| 		--player:KickEvent(director, "noticeEvent", true); | ||||
| 		-- | ||||
| 		director = player.CurrentArea:CreateDirector("OpeningDirector", false);		 | ||||
| 		player:AddDirector(director); | ||||
| 		director:StartDirector(true); | ||||
| 		player:SetLoginDirector(director);		 | ||||
| 		player:KickEvent(director, "noticeEvent", true); | ||||
| 		 | ||||
| 		player.positionX = 5.364327; | ||||
| 		player.positionY = 196.0; | ||||
| 		player.positionZ = 133.6561; | ||||
| 		player.rotation = -2.849384; | ||||
| 		player:GetQuest(110009):ClearQuestData(); | ||||
| 		player:GetQuest(110009):ClearQuestFlags(); | ||||
| 		player:GetQuest(110009):ClearClearData(); | ||||
| 	end	 | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,9 @@ 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 | ||||
| ]] | ||||
|  | ||||
| -- Sequence Numbers | ||||
| @@ -31,76 +33,41 @@ STOCKY_STRANGER         = 1001644; | ||||
| EXIT_TRIGGER            = 1090372; | ||||
| OPENING_STOPER_ULDAH    = 1090373; | ||||
|  | ||||
| --1001114-1001140: Untargetable standby actors:  Add the correct ones at some point for bookkeeping | ||||
|  | ||||
|  | ||||
| KEEN_EYED_MERCHANT      = 1000401; | ||||
| -- MUMPISH_MIQOTE = 1000992; -- Unused on this client version | ||||
| 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; | ||||
|  | ||||
| BLOCKER1                = 1090372; | ||||
| BLOCKER2                = 1090372; | ||||
| ULDAH_OPENING_EXIT      = 1099046; | ||||
| --1001114-1001140: Untargetable standby actors for sequence 000:  Add the correct ones at some point | ||||
|  | ||||
|  | ||||
|  | ||||
| -- Quest Markers | ||||
| MKRK_YAYATOKI               = 11000901; | ||||
| MKRK_ASCILIA                = 11000902; | ||||
| MKRK_FRETFUL_FARMHAND       = 11000903; | ||||
| MKRK_GIL_DIGGING_MISTRESS   = 11000904; | ||||
| MKRK_UNKNOWN1               = 11000905; | ||||
| MKRK_UNKNOWN2               = 11000906; | ||||
| 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; | ||||
| FLAG_SEQ000_MINITUT1    = 1; | ||||
| FLAG_SEQ000_MINITUT2    = 2; | ||||
| FLAG_SEQ000_MINITUT3    = 3; | ||||
|  | ||||
|  | ||||
| --[[ FUNCTION LIST | ||||
| processEvent000(A0_1, A1_2, A2_3) | ||||
| processEvent000_2(A0_4, A1_5, A2_6) | ||||
| processEvent000_3(A0_7, A1_8, A2_9) | ||||
| processEvent000_4(A0_10, A1_11, A2_12) | ||||
| processEvent000_5(A0_13, A1_14, A2_15) | ||||
| processEvent000_6(A0_16, A1_17, A2_18) | ||||
| processEvent000_6_2(A0_19, A1_20, A2_21) | ||||
| processEvent000_7(A0_22, A1_23, A2_24) | ||||
| processEvent000_8(A0_25, A1_26, A2_27) | ||||
| processEvent000_9(A0_28, A1_29, A2_30) | ||||
| processEvent000_10(A0_31, A1_32, A2_33) | ||||
| processEvent000_11(A0_34, A1_35, A2_36) | ||||
| processEvent000_12(A0_37, A1_38, A2_39) | ||||
| processEvent000_13(A0_40, A1_41, A2_42) | ||||
| processEvent000_14(A0_43, A1_44, A2_45) | ||||
| processEvent010(A0_46, A1_47, A2_48) | ||||
| processEvent020(A0_49, A1_50, A2_51) | ||||
| processEvent020_2(A0_58, A1_59, A2_60) | ||||
| processEvent020_3(A0_61, A1_62, A2_63) | ||||
| processEvent020_4(A0_64, A1_65, A2_66) | ||||
| processEvent020_5(A0_67, A1_68, A2_69) | ||||
| processEvent020_6(A0_70, A1_71, A2_72) | ||||
| processEvent020_7(A0_73, A1_74, A2_75) | ||||
| processEvent020_8(A0_76, A1_77, A2_78) | ||||
| processTtrNomal001withHQ(A0_79, A1_80, A2_81) | ||||
| processTtrNomal001(A0_91, A1_92, A2_93) | ||||
|     processTtrNomal002(A0_103, A1_104, A2_105, A3_106) | ||||
|     processTtrNomal003(A0_113, A1_114, A2_115, A3_116) | ||||
| processTtrAfterBtl001(A0_123, A1_124, A2_125) | ||||
| processTtrMini001(A0_135, A1_136, A2_137) | ||||
| processTtrMini002(A0_138, A1_139, A2_140) | ||||
| processTtrMini002_first(A0_141, A1_142, A2_143) | ||||
| processTtrMini003(A0_144, A1_145, A2_146) | ||||
| processTtrMini003_first(A0_147, A1_148, A2_149) | ||||
| processTtrBlkNml001(A0_150, A1_151, A2_152) | ||||
|     processTtrBtl001(A0_153, A1_154, A2_155, A3_156) | ||||
|     processTtrBtlMagic001(A0_163, A1_164, A2_165, A3_166) | ||||
|     processTtrBtl002(A0_179, A1_180, A2_181, A3_182) | ||||
| processTtrBtl003(A0_202, A1_203, A2_204) | ||||
| processTtrBtl004(A0_214, A1_215, A2_216) | ||||
| processTtrBlkNml002(A0_217, A1_218, A2_219) | ||||
| processTtrBlkNml003(A0_226, A1_227, A2_228) | ||||
| processEtc001(A0_235, A1_236, A2_237) | ||||
| processEtc002(A0_238, A1_239, A2_240) | ||||
| processEtc003(A0_241, A1_242, A2_243) | ||||
| processInformDialogAsQuest(A0_244, A1_245, A2_246) | ||||
|  | ||||
| --]] | ||||
| 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)  | ||||
| @@ -111,21 +78,23 @@ function onFinish(player, quest) | ||||
| end | ||||
|  | ||||
| function onSequence(player, quest, sequence) | ||||
|     quest:ClearENpcs(); | ||||
|     quest:ClearData(); | ||||
|      | ||||
|  | ||||
|     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 exitCanPush = quest:GetFlags() == 0xF; | ||||
|         local exitFlag = quest:GetFlags() == 0xF and QFLAG_PLATE or QFLAG_NONE;   | ||||
| 		 | ||||
| 		local exitFlag = quest:GetFlags() == 0xF and QFLAG_MAP or QFLAG_NONE; | ||||
|  | ||||
|         --AddENpc(classId, byte flagType=0,isTalkEnabled, isEmoteEnabled , isPushEnabled , isSpawned) | ||||
|         quest:AddENpc(ASCILIA, asciliaFlag, true, false, asciliaCanPush); | ||||
|         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); | ||||
| @@ -136,12 +105,23 @@ function onSequence(player, quest, sequence) | ||||
|         quest:AddENpc(GIL_DIGGING_MISTRESS, gildiggingmistressFlag); | ||||
|         quest:AddENpc(TWITTERING_TOMBOY); | ||||
|         quest:AddENpc(STOCKY_STRANGER); | ||||
|         quest:AddENpc(EXIT_TRIGGER, exitFlag, false, false, exitCanPush); | ||||
|         quest:AddENpc(EXIT_TRIGGER, exitFlag, false, true); | ||||
|         quest:AddENpc(OPENING_STOPER_ULDAH, QFLAG_NONE, false, false, true); | ||||
|  | ||||
|     elseif (sequence == SEQ_005) then | ||||
|     elseif (sequence == SEQ_010) then  | ||||
|  | ||||
|         local yayatokiFlag = quest:GetFlag(FLAG_SEQ010_TALK0) and QFLAG_NONE or QFLAG_PLATE; | ||||
|         local uldahopeningexitFlag = not quest:GetFlag(FLAG_SEQ010_TALK0) and QFLAG_NONE or 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(BLOCKER1, QFLAG_NONE, false, true); | ||||
|        -- quest:AddENpc(BLOCKER2, QFLAG_NONE, false, true); | ||||
|         quest:AddENpc(ULDAH_OPENING_EXIT, uldahopeningexitFlag, false, true); | ||||
|     end | ||||
| end | ||||
|  | ||||
| @@ -154,98 +134,98 @@ function onTalk(player, quest, npc) | ||||
|     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 == OPENING_STOPER_ULDAH) then | ||||
|          | ||||
|         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 == BLOCKER1) 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");      | ||||
|  | ||||
|      | ||||
|     callClientFunction(player, "delegateEvent", player, quest, "processTtrNomal001withHQ");      | ||||
|     player:EndEvent(); | ||||
| 	quest:UpdateENPCs(); | ||||
| end | ||||
|  | ||||
| function seq000_onTalk(player, quest, npc, classId) | ||||
|      | ||||
|     if (classId == ASCILIA) then | ||||
| 		-- Handle the talk tutorial after the push one. | ||||
| 		if (not quest:GetFlag(FLAG_SEQ000_MINITUT0)) then | ||||
| 		 | ||||
| 		if (not quest:GetFlag(FLAG_SEQ000_MINITUT0)) then -- If Talk tutorial | ||||
| 			callClientFunction(player, "delegateEvent", player, quest, "processTtrNomal003"); | ||||
| 			quest:SetFlag(FLAG_SEQ000_MINITUT0); | ||||
|              | ||||
| 			quest:UpdateENpc(ASCILIA, ENPC_PROP_CAN_PUSH, false); | ||||
| 			quest:UpdateENpc(ASCILIA, ENPC_PROP_QFLAG, QFLAG_PLATE); | ||||
| 			quest:UpdateENpc(FRETFUL_FARMHAND, ENPC_PROP_QFLAG, QFLAG_PLATE); | ||||
| 			quest:UpdateENpc(GIL_DIGGING_MISTRESS, ENPC_PROP_QFLAG, QFLAG_PLATE);			 | ||||
| 			quest:SetFlag(FLAG_SEQ000_MINITUT0); -- Used to disable her PushEvent / Allow for her next TalkEvent | ||||
| 		else | ||||
| 			callClientFunction(player, "delegateEvent", player, quest, "processTtrMini001"); | ||||
| 			if (not quest:GetFlag(FLAG_SEQ000_MINITUT1)) then | ||||
| 				quest:UpdateENpc(ASCILIA, ENPC_PROP_QFLAG, QFLAG_NONE); | ||||
| 				quest:SetFlag(FLAG_SEQ000_MINITUT1); | ||||
| 			end | ||||
|             quest:SetFlag(FLAG_SEQ000_MINITUT1); -- Ascilia has now been talked to. | ||||
|         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 == FRETFUL_FARMHAND) then | ||||
|         if (not quest:GetFlag(FLAG_SEQ000_MINITUT2)) then | ||||
| 			callClientFunction(player, "delegateEvent", player, quest, "processTtrMini002_first"); | ||||
| 			quest:UpdateENpc(FRETFUL_FARMHAND, ENPC_PROP_QFLAG, QFLAG_NONE); | ||||
| 			quest:SetFlag(FLAG_SEQ000_MINITUT2); | ||||
| 		else | ||||
| 			callClientFunction(player, "delegateEvent", player, quest, "processTtrMini002"); | ||||
| 		end | ||||
| 		end         | ||||
|  | ||||
|     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 == GIL_DIGGING_MISTRESS) then | ||||
|         if (not quest:GetFlag(FLAG_SEQ000_MINITUT3)) then | ||||
| 			callClientFunction(player, "delegateEvent", player, quest, "processTtrMini003_first"); | ||||
| 			quest:UpdateENpc(GIL_DIGGING_MISTRESS, ENPC_PROP_QFLAG, QFLAG_NONE); | ||||
| 			quest:SetFlag(FLAG_SEQ000_MINITUT3); | ||||
| 		else | ||||
| 			callClientFunction(player, "delegateEvent", player, quest, "processTtrMini003"); | ||||
| 		end     | ||||
| 		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"); -- TODO: Likely 6, 6_2 looks like a Stoper dialog | ||||
|     end | ||||
|  | ||||
|     if (quest:GetFlags() == 0xF) then | ||||
|         quest:UpdateENpc(EXIT_TRIGGER, ENPC_PROP_CAN_PUSH, true); | ||||
|         quest:UpdateENpc(EXIT_TRIGGER, ENPC_PROP_QFLAG, QFLAG_MAP); | ||||
|         callClientFunction(player, "delegateEvent", player, quest, "processEvent000_6_2"); | ||||
|     end | ||||
|  | ||||
|     player:EndEvent(); | ||||
| @@ -253,15 +233,75 @@ 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 | ||||
|         return MKRK_ASCILIA, MKRK_FRETFUL_FARMHAND; | ||||
|         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 | ||||
|         --return | ||||
|         if (not quest:GetFlag(FLAG_SEQ010_TALK0)) then  | ||||
|             table.insert(possibleMarkers, MRKR_YAYATOKI) | ||||
|         else | ||||
|             table.insert(possibleMarkers, MRKR_ADV_GUILD); | ||||
|         end | ||||
|     end | ||||
| 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 | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										233
									
								
								Data/scripts/quests/man/man0u1.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								Data/scripts/quests/man/man0u1.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,233 @@ | ||||
| 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 | ||||
|  | ||||
| ]] | ||||
|  | ||||
|  | ||||
| --[[  | ||||
|  | ||||
| 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 | ||||
| VELODYNA_COSMOS = 0; -- Seq_000 : 2nd journal arg.    >=5 doesn't have. | ||||
| 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);	 | ||||
|      | ||||
|     --callClientFunction(player, "delegateEvent", player, quest, "processEvent000_1"); -- Describes what an Instance is | ||||
|     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 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, VELODYNA_COSMOS, 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, 4287; | ||||
| end | ||||
		Reference in New Issue
	
	Block a user