home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Singles (French)
/
Singles-FrenchVersion-Win95.iso
/
data1.cab
/
Statemachine
/
questor.lua
< prev
next >
Wrap
Text File
|
2004-03-05
|
4KB
|
160 lines
-- Quest multiplexor
--
function enterQuest( questIdentifier )
local runningQuests = retrieveData("quests");
if (not runningQuests) then
runningQuests = {};
end
-- dont add if the quest had been entered already
if (not this[questIdentifier]) then
print ("creating MissionStateObject...");
local newQuest = QuestStateObject();
print ("setting StateMachine to "..questIdentifier );
newQuest.setStateMachine( questIdentifier );
if (newQuest.getStateMachine()) then
-- store that (registers StateObject)
addAttribute( questIdentifier, newQuest );
--runningQuests += questIdentifiert;
tinsert( runningQuests, questIdentifier );
--stores names to running quests for easy iteration
storeData("quests", runningQuests );
end
else
print( "quest "..questIdentifier.."already entered" );
end
end
beginStateMachine()
onEnter(function(msg)
sendMsgThis("enterQuests");
-- initialize polling loop
sendDelayedMsgThis("checkQuestConditions", 5000);
end )
onMsg("enterQuests", function(msg)
--enterQuest("questTest");
enterQuest("questMoveIn");
enterQuest("questGottaWork");
----
enterQuest("questFriendship1");
enterQuest("questFriendship2");
enterQuest("questFriendship3");
enterQuest("questFriendship4");
enterQuest("questFriendship5");
enterQuest("questFriendship6");
enterQuest("questFriendship7");
enterQuest("questFriendship8");
enterQuest("questFriendship9");
enterQuest("questFriendship10");
----
enterQuest("questRomance1");
enterQuest("questRomance2");
enterQuest("questRomance3");
enterQuest("questRomance4");
enterQuest("questRomance5");
enterQuest("questRomance6");
enterQuest("questRomance7");
enterQuest("questRomance8");
enterQuest("questRomance9");
enterQuest("questRomance10");
----
enterQuest("questErotic1");
enterQuest("questErotic2");
enterQuest("questErotic3");
enterQuest("questErotic4");
enterQuest("questErotic5");
enterQuest("questErotic6");
enterQuest("questErotic7");
enterQuest("questErotic8");
enterQuest("questErotic9");
enterQuest("questErotic10");
----
enterQuest("questMarriage");
enterQuest("questHoneymoon");
----
-- die hier machen beides
enterQuest("questTrouble1a");
enterQuest("questTrouble3a");
enterQuest("questTrouble5a");
enterQuest("questTrouble8a");
enterQuest("questTroubleTheEnda");
--enterQuest("questTrouble1b");
--enterQuest("questTrouble3b");
--enterQuest("questTrouble5b");
--enterQuest("questTrouble8b");
--enterQuest("questTroubleTheEndb");
end )
--- conveniance
onMsg("enterTrigger", function(msg)
sendMsgThis("questreset");
sendMsgThis("enterQuests");
end )
onMsg("checkQuestConditions", function(msg)
--print("does not refire this");
sendDelayedMsgThis("checkQuestConditions", 10000);
sendMsgThis("checkCondition"); -- <-- will be forwarded to each running quest
end )
-- Forwards incoming unhandled messages to currently running quests
-- these might be messages such as "enterTrigger" or GameObject
-- actions that have been rerouted to the current mission StateObject
onDefault( function(msg)
local skipStory = (readConfig("Debug", "skipStory", "") == "true");
if (not skipStory) then
print(" Forwarding unhandled method: " .. msg.name .. " data:" .. msg.data);
local runningQuests = retrieveData("quests");
if ( runningQuests ) then
for index, questIdentifier in runningQuests do
local questStateObject = this[questIdentifier];
if ( questStateObject ) then
--print( "\t" .. questStateObject.getStateMachine().getName()
-- .. "(" ..
-- questStateObject.getUniqueID()
-- .. ":" ..
-- questStateObject.getState()
-- .. ")" );
if (getStateObjectFromID(msg.sender)) then
getStateObjectFromID(msg.sender).sendMsg(
msg.name, questStateObject , msg.data );
end
end
end
end
end
end )
---------------------------------------------------------------------------------------------------------------------------------------
state("done")
-- sackgasse hier
endStateMachine()