mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-10 06:24:38 +02:00
Updated Map Server namespace. Moved all other data folders (www and sql) to data folder. Renamed boot name to Project Meteor.
This commit is contained in:
parent
18ef69f3d1
commit
91549bff7a
1823 changed files with 102704 additions and 901 deletions
145
Data/scripts/base/chara/npc/populace/PopulaceRetainerManager.lua
Normal file
145
Data/scripts/base/chara/npc/populace/PopulaceRetainerManager.lua
Normal file
|
@ -0,0 +1,145 @@
|
|||
--[[
|
||||
|
||||
PopulaceRetainerManager Script
|
||||
|
||||
Functions:
|
||||
|
||||
eventTalkStep1(true) - Intro tutorial if no retainer
|
||||
newEventTalkStep1(sayIntro) - Seems to be a post-Tanaka version of the intro????
|
||||
eventTalkStep2() - Choose retainer yourself (go to race select) or let npc do it
|
||||
eventTaklSelectCutSeane(cutsceneName, actorClassId1, actorClassId2, actorClassId3, actorClassId4, actorClassId5) - Starts the advance cutscene to choose a retainer. 5 retainer actorClassId's are given.
|
||||
eventTalkStep4(actorClassId) - Opens up the retainer naming dialog
|
||||
eventTalkStepFinalAnswer(actorClassId) - Confirm Dialog
|
||||
eventTalkStepError(errorCode) - Error dialog, 1: No Extra Retainers, 2: Server Busy.
|
||||
eventTalkStepFinish()
|
||||
|
||||
|
||||
--]]
|
||||
|
||||
require ("global")
|
||||
|
||||
|
||||
function init(npc)
|
||||
return false, false, 0, 0;
|
||||
end
|
||||
|
||||
function onEventStarted(player, npc, triggerName)
|
||||
|
||||
local npcActorClass = npc:GetActorClassId()
|
||||
local retainerIndex = 3001100;
|
||||
local cutscene = "rtn0l010" -- Defaulting to Limsa for now for testing
|
||||
|
||||
if npcActorClass == 1000166 then
|
||||
cutscene = "rtn0l010";
|
||||
retainerIndex = 3001101;
|
||||
elseif npcActorClass == 1000865 then
|
||||
cutscene = "rtn0u010";
|
||||
retainerIndex = 3002101;
|
||||
elseif npcActorClass == 1001184 then
|
||||
cutscene = "rtn0g010";
|
||||
retainerIndex = 3003101;
|
||||
else
|
||||
return;
|
||||
end
|
||||
|
||||
|
||||
introChoice = callClientFunction(player, "newEventTalkStep1", false);
|
||||
|
||||
if (introChoice == 1) then
|
||||
|
||||
-- Choose Retainer or Random
|
||||
raceChoice = callClientFunction(player, "eventTalkStep2");
|
||||
|
||||
while (true) do
|
||||
|
||||
|
||||
if (retainerChoice == 0) then
|
||||
raceChoice = callClientFunction(player, "eventTalkStep22");
|
||||
end
|
||||
|
||||
|
||||
if (raceChoice == 0) then
|
||||
--Choose random actorId from a valid set for the city
|
||||
|
||||
math.randomseed(os.time());
|
||||
local randomRetainer = math.random(retainerIndex, (retainerIndex+74));
|
||||
|
||||
retainerName = callClientFunction(player, "eventTalkStep4", randomRetainer);
|
||||
|
||||
if (retainerName ~= "") then
|
||||
confirmChoice = callClientFunction(player, "eventTalkStepFinalAnswer", randomRetainer);
|
||||
|
||||
if (confirmChoice == 1) then
|
||||
callClientFunction(player, "eventTalkStepFinish");
|
||||
player:EndEvent();
|
||||
return;
|
||||
elseif (confirmChoice == 3) then
|
||||
raceChoice = 0;
|
||||
else
|
||||
player:EndEvent();
|
||||
return;
|
||||
end
|
||||
else
|
||||
callClientFunction(player, "eventTalkStepBreak");
|
||||
raceChoice = -1;
|
||||
end
|
||||
|
||||
|
||||
elseif (raceChoice > 0) and (raceChoice < 16) then
|
||||
--Choose 5 random but correct actor ids for the city and race/tribe
|
||||
|
||||
local retainerRace = ((retainerIndex) + (5*(raceChoice-1)));
|
||||
local retainerRaceChoices = {retainerRace, retainerRace+1, retainerRace+2, retainerRace+3, retainerRace+4};
|
||||
|
||||
-- Randomize the appearance order of the available five
|
||||
shuffle(retainerRaceChoices);
|
||||
|
||||
retainerChoice = callClientFunction(player, "eventTaklSelectCutSeane", cutscene, retainerRaceChoices[1], retainerRaceChoices[2], retainerRaceChoices[3], retainerRaceChoices[4], retainerRaceChoices[5]);
|
||||
|
||||
if (retainerChoice == -1) then
|
||||
player:EndEvent();
|
||||
return;
|
||||
elseif (retainerChoice > 0) then
|
||||
--Retainer chosen, choose name
|
||||
retainerName = callClientFunction(player, "eventTalkStep4", retainerRaceChoices[retainerChoice]);
|
||||
|
||||
if (retainerName ~= "") then
|
||||
confirmChoice = callClientFunction(player, "eventTalkStepFinalAnswer", retainerRaceChoices[retainerChoice]);
|
||||
|
||||
if (confirmChoice == 1) then
|
||||
callClientFunction(player, "eventTalkStepFinish");
|
||||
player:EndEvent();
|
||||
return;
|
||||
elseif (confirmChoice == 3) then
|
||||
retainerChoice = 0;
|
||||
else
|
||||
player:EndEvent();
|
||||
return;
|
||||
end
|
||||
else
|
||||
callClientFunction(player, "eventTalkStepBreak");
|
||||
raceChoice = -1;
|
||||
end
|
||||
|
||||
end
|
||||
else
|
||||
break;
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
player:EndEvent();
|
||||
end
|
||||
|
||||
|
||||
|
||||
function shuffle(tbl)
|
||||
for i = #tbl, 2, -1 do
|
||||
local j = math.random(i)
|
||||
tbl[i], tbl[j] = tbl[j], tbl[i]
|
||||
end
|
||||
return tbl
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue