home *** CD-ROM | disk | FTP | other *** search
/ Singles (French) / Singles-FrenchVersion-Win95.iso / data1.cab / Statemachine / tutorialShakeHands.lua < prev    next >
Text File  |  2004-03-05  |  20KB  |  630 lines

  1. -- Shakehands Testmission
  2. --
  3. -- used mission objects:
  4. -- trigger1 - triggers hello in initial state
  5.  
  6.  
  7.  
  8. beginStateMachine()
  9.  
  10. -- lure 
  11. FRAGEZEICHEN    = 3;
  12.  
  13. -- sayHello trigger location
  14. GREETINGPOINT    = 1;
  15.  
  16. -- showFlat trigger locations
  17. GUCKHIER         = 2; -- bewege linda zu mike 
  18. GUCKDA         = 3; -- mike starrt nach draussen
  19. GUCKDORT        = 4; -- linda starrt nach draussen
  20. GUCKWEG        = 5; -- mike jammert ueber seine wenigen hinnuebergeretteten moebel
  21.  
  22. -- optionalQuest trigger locations
  23. KITCHEN            = 6;
  24. BATH                = 7;
  25. LINDASROOM        = 8;
  26. MIKESROOM        = -1;
  27.  
  28.  
  29. DAMAGEDOVEN = 20;
  30.  
  31.  
  32.     onEnter(function(msg)
  33.         popupMission();
  34.         print("------------------------------------------tutorialShakeHands OnEnter");
  35.     end )
  36.  
  37.     onExit(function(msg)
  38.         print("------------------------------------------tutorialShakeHands OnExit");
  39.         getParent().enableAI(true);
  40.     end )
  41.  
  42.     onMsg("bleibSitzen", function(msg)
  43.         --print("blaaaaaaaaaaaa #########");
  44.         getParent().getCharacter(MIKE).setCondition( NEED_COMFORT, 0.5 );
  45.         sendDelayedMsg("bleibSitzen", this, 5000);
  46.     end )
  47.         
  48.  
  49.     state("initial")
  50.         onMsg("enterTrigger" .. GREETINGPOINT, function(msg)         
  51.              local char = getStateObjectFromID(msg.sender);
  52.             if ( getStateObjectFromID(msg.sender).isFemale() ) then
  53.                 setState("sayHello");
  54.                 local mike = getParent().getCharacter(MIKE);
  55.                 
  56.                 --char.cancelCurrentActivity();
  57.                 char.queueCommand("pm_talkCutscene", "talkCutscene", mike, "").setUserCancel(false);
  58.                 
  59.                 print("------------------------------------------tutorialShakeHands initial");
  60.                 getParent().enableAI(false);
  61.                 
  62.             end                        
  63.         end )
  64.     
  65. ---- SAY HELLO - CONVERSATION -------------------------------------------
  66.     state("sayHello")
  67.         onMsg("talking", function(msg)
  68.             setState("showFlat");
  69.             
  70.             popupConversation("dialogTutSH1");
  71.         end )
  72.         
  73.         
  74.     
  75. ---- SHOW FLAT - INTERACTION --------------------------------------------
  76.     state("showFlat")
  77.         -- ok msg gets posted by ending outgoing conversation @ sayHello0
  78.         onMsg("yes", function(msg) 
  79.             getParent().getCharacter(MIKE).cancelCurrentActivity();
  80.             getParent().getCharacter(ELAINE).cancelCurrentActivity();
  81.             
  82.             sendDelayedMsgThis("epsilon", 2000, "");
  83.             -- birdView();
  84.         end )
  85.         
  86.         onMsg("epsilon", function(msg)
  87.             getParent().getCharacter(MIKE).walkSO.walkToActionPoint(
  88.                 getParent().getCharacter(MIKE).getObjectsWithTag(GUCKHIER)[1].getActionPoint("south")
  89.             );
  90.         end )
  91.  
  92.         onMsg("enterTrigger" .. GUCKHIER, function(msg)
  93.             if ( getStateObjectFromID(msg.sender).isMale() ) then
  94.                 -- Mike betritt das Wohnzimmer
  95.                 popupConversation("dialogTutSH2");
  96.  
  97.                 getParent().centerView( {getParent().getCharacter(MIKE)} );
  98.                 
  99.                 -- lure aktivieren
  100.                 getParent().getCharacter(MIKE).getObjectsWithTag(GUCKHIER)[1]
  101.                     .getObjectsWithBehavior("lure")[1].setEnable(true);
  102.             else
  103.                 -- Linda folgt ihm
  104.                 setState("showFlat0");
  105.                 
  106.                 local elaine = getParent().getCharacter(ELAINE);
  107.                 --elaine.cancelCurrentActivity();
  108.                 elaine.queueCommand("pm_talkCutscene", "talkCutscene", getParent().getCharacter(MIKE), "").setUserCancel(false);
  109.             end
  110.         end ) 
  111.         
  112.         
  113.     state("showFlat0")
  114.         onMsg("talking", function(msg)
  115.             -- lure deaktivieren
  116.             getParent().getCharacter(LINDA).getObjectsWithTag(GUCKHIER)[1]
  117.                 .getObjectsWithBehavior("lure")[1].setEnable(false);            
  118.             
  119.             setState("showFlat1");
  120.             popupConversation("dialogTutSH3");
  121.         end )
  122.                 
  123.         
  124.     state("showFlat1")
  125.         onMsg("yes", function(msg)
  126.             setState("showFlat2");
  127.             getParent().getCharacter(MIKE).cancelCurrentActivity();
  128.             getParent().getCharacter(ELAINE).cancelCurrentActivity();
  129.             
  130.             sendDelayedMsgThis("epsilon", 1000,"");
  131.         end )
  132.         
  133.     state("showFlat2")
  134.         onMsg("epsilon", function(msg)
  135.             setState("showFlat3");
  136.             getParent().getCharacter(MIKE).walkSO.walkToActionPoint(
  137.                 getParent().getCharacter(MIKE).getObjectsWithTag(GUCKDA)[1].getActionPoint("south")
  138.             );            
  139.         end )
  140.     
  141.     state("showFlat3")
  142.         onMsg("arrived", function(msg)
  143.             if ( getStateObjectFromID(msg.sender).isMale() ) then
  144.                 setState("showFlat4");
  145.                 popupConversation("dialogTutSH4");
  146.                 
  147.                 -- lure aktivieren
  148.                 getParent().getCharacter(MIKE).getObjectsWithTag(GUCKDA)[1]
  149.                     .getObjectsWithBehavior("lure")[1].setEnable(true);
  150.             end
  151.         end )
  152.         
  153.     state("showFlat4")
  154.         onMsg("enterTrigger"..GUCKDA, function(msg)
  155.             setState("showFlat5");
  156.             
  157.             if ( getStateObjectFromID(msg.sender).isFemale() ) then    
  158.                 --getParent().getCharacter(ELAINE).walkSO.walkToActionPoint(
  159.                 --    getParent().getCharacter(ELAINE).getObjectsWithTag(GUCKDORT)[1].getActionPoint("south")
  160.                 --);
  161.                 
  162.                 local mike = getParent().getCharacter(MIKE);
  163.                 --mike.cancelCurrentActivity();
  164.                 mike.queueCommand("pm_talkCutscene", "talkCutscene", getParent().getCharacter(ELAINE), "").setUserCancel(false);
  165.             end
  166.         end )
  167.         
  168.     state("showFlat5")
  169.         onMsg("talking", function(msg)
  170.             popupConversation("dialogTutSH5");
  171.             
  172.             -- lure deaktivieren
  173.             getParent().getCharacter(LINDA).getObjectsWithTag(GUCKDA)[1]
  174.                 .getObjectsWithBehavior("lure")[1].setEnable(false);            
  175.         end )
  176.         
  177.         onMsg("yes", function(msg)
  178.             setState("showFlat7");
  179.             
  180.             getParent().getCharacter(MIKE).cancelCurrentActivity();
  181.             getParent().getCharacter(ELAINE).cancelCurrentActivity();
  182.             
  183.             getParent().getCharacter(MIKE).walkSO.walkToActionPoint(
  184.                 getParent().getCharacter(MIKE).getObjectsWithTag(GUCKWEG)[1].getActionPoint("south")
  185.             );
  186.             
  187.             popupConversation("dialogTutSH55");
  188.         end )
  189.         
  190.             
  191.     state("showFlat7")
  192.         onMsg("enterTrigger"..GUCKWEG, function(msg)
  193.             if ( getStateObjectFromID( msg.sender ).isFemale() ) then
  194.                 setState("showFlat8");
  195.                 
  196.                 local elaine = getParent().getCharacter(ELAINE);
  197.                 --elaine.cancelCurrentActivity();
  198.                 elaine.queueCommand("pm_talkCutscene", "talkCutscene", getParent().getCharacter(MIKE), "").setUserCancel(false);
  199.             else
  200.                 -- lure aktivieren
  201.                 getParent().getCharacter(MIKE).getObjectsWithTag(GUCKWEG)[1]
  202.                     .getObjectsWithBehavior("lure")[1].setEnable(true);
  203.             end
  204.         end )
  205.         
  206.     state("showFlat8")
  207.         onMsg("talking", function(msg)
  208.             setState("showFlat9");
  209.             -- lure deaktivieren
  210.             getParent().getCharacter(ELAINE).getObjectsWithTag(GUCKWEG)[1]
  211.                 .getObjectsWithBehavior("lure")[1].setEnable(false);
  212.             
  213.             popupConversation("dialogTutSH6");
  214.         end )
  215.         
  216.         
  217.     state("showFlat9")
  218.         onMsg("yes", function(msg) 
  219.             getParent().getCharacter(MIKE).cancelCurrentActivity();
  220.             getParent().getCharacter(ELAINE).cancelCurrentActivity();
  221.             
  222.             local chairInRange = getParent().getCharacter(MIKE).getObjectsWithBehavior("chair")[1];
  223.             if (chairInRange) then
  224.                 setState("feelFree0");
  225.                 getParent().getCharacter(MIKE).sendMsg("sit", chairInRange);
  226.             end            
  227.         end )
  228.  
  229.         
  230. ------- SOFA --- INTERACTION --------------------------------------------
  231.         
  232.     state("feelFree0")
  233.         onMsg("sat", function(msg) 
  234.             if ( getStateObjectFromID(msg.sender).isMale() ) then
  235.                 popupConversation("dialogTutSH7");
  236.             end            
  237.         end )
  238.     
  239.         onMsg("yes", function(msg)
  240.             setState("feelFree");
  241.             
  242.             local centerHere = {
  243.                 getParent().getCharacter(ELAINE).getObjectsWithTag(KITCHEN)[1].getObjectsWithBehavior("lure")[1],
  244.                 getParent().getCharacter(ELAINE).getObjectsWithTag(BATH)[1].getObjectsWithBehavior("lure")[1],
  245.                 getParent().getCharacter(ELAINE).getObjectsWithTag(LINDASROOM)[1].getObjectsWithBehavior("lure")[1]
  246.                         };
  247.  
  248.             getParent().centerView( centerHere );
  249.             sendDelayedMsgThis("showAll",1000);
  250.         end )
  251.  
  252.             
  253.         
  254.     state("feelFree")
  255.         onMsg("showAll", function(msg) 
  256.             getParent().getCharacter(ELAINE).getObjectsWithTag(KITCHEN)[1].getObjectsWithBehavior("lure")[1].setEnable( true );
  257.             getParent().getCharacter(MIKE).getObjectsWithBehavior("lure")[1].setEnable( true );
  258.             
  259.             getParent().getCharacter(ELAINE).getObjectsWithTag(BATH)[1].getObjectsWithBehavior("lure")[1].setEnable( true );
  260.             getParent().getCharacter(ELAINE).getObjectsWithTag(LINDASROOM)[1].getObjectsWithBehavior("lure")[1].setEnable( true );
  261.             
  262.             sendMsg("bleibSitzen", this);
  263.         end )
  264.         
  265.         onMsg("enterTrigger"..GUCKWEG, function(msg)
  266.             --wenn sich mike nich innerhalb von 2.5m um den GuckWeg Trigger befindet
  267.             if ( not getParent().getCharacter(MIKE).getObjectsWithTag(GUCKWEG,2.5)[1] ) then
  268.                 --wieder hinsetzen und satz sagen
  269.                 
  270.                 local chairInRange = getParent().getCharacter(MIKE).getObjectsWithTag(GUCKWEG)[1].getObjectsWithBehavior("chair")[1];
  271.                 if (chairInRange) then
  272.                     getParent().getCharacter(MIKE).sendMsg("sit", chairInRange);
  273.                 else
  274.                     getParent().getCharacter(MIKE).walkSO.walkToActionPoint(
  275.                         getParent().getCharacter(MIKE).getObjectsWithTag(GUCKWEG)[1].getActionPoint("north")
  276.                     );
  277.                 end
  278.                 
  279.                 sendDelayedMsgThis("isWas", 4000, "");
  280.             else
  281.                 sendDelayedMsgThis("isWas", 2000, "");
  282.                 --gleich satz sagen
  283.             end
  284.         end )
  285.         
  286.         onMsg("isWas", function(msg)
  287.             popupConversation("dialogTutEpilog1");
  288.         end )
  289.  
  290.         onMsg("sat", function(msg)
  291.             -- wenn sich linda gesetzt hat
  292.             if (getStateObjectFromID(msg.sender).isFemale()) then 
  293.             
  294.                 --wenn sich mike nich innerhalb von 2.5m um den GuckWeg Trigger befindet
  295.                 if ( not getParent().getCharacter(MIKE).getObjectsWithTag(GUCKWEG,2.5)[1] ) then
  296.                     --wieder hinsetzen und satz sagen
  297.                     
  298.                     local chairInRange = getParent().getCharacter(MIKE).getObjectsWithTag(GUCKWEG)[1].getObjectsWithBehavior("chair")[1];
  299.                     if (chairInRange) then
  300.                         getParent().getCharacter(MIKE).sendMsg("sit", chairInRange);
  301.                     else
  302.                         getParent().getCharacter(MIKE).walkSO.walkToActionPoint(
  303.                             getParent().getCharacter(MIKE).getObjectsWithTag(GUCKWEG)[1].getActionPoint("north")
  304.                         );
  305.                     end
  306.                 end
  307.                 
  308.                 -- und mike in einem Radius von 3.5m sitzt
  309.                 --local chars = getParent().getCharacter(ELAINE).getObjectsWithBehavior("character",2.5);
  310.                 --if ( (chars[1] and chars[1].isMale()) or (chars[2] and chars[2].isMale()) ) then 
  311.                     setState("wannaMoveIn");
  312.                     sendDelayedMsgThis("epsilon",1000,"");
  313.                 --end
  314.             end
  315.             --print("ok cool");            
  316.         end )
  317.         
  318.         onMsg("enterTrigger"..KITCHEN, function(msg)
  319.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  320.             if (fragezeichen and fragezeichen[1]) then
  321.                 if (fragezeichen[1].getEnable()) then
  322.                     setState("explosiveKitchen");
  323.                     sendMsgThis("epsilon");
  324.                 else
  325.                     print("kitchenquest already done");
  326.                 end
  327.             end
  328.         end )
  329.         
  330.         
  331.         onMsg("enterTrigger"..BATH, function(msg)
  332.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  333.             if (fragezeichen and fragezeichen[1]) then
  334.                 if (fragezeichen[1].getEnable()) then
  335.                     setState("washMe");
  336.                     sendMsgThis("epsilon");
  337.                 else
  338.                     print("bathquest already done");
  339.                 end
  340.             end
  341.         end )
  342.  
  343.  
  344.         onMsg("enterTrigger"..LINDASROOM, function(msg)            
  345.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  346.             if (fragezeichen and fragezeichen[1]) then
  347.                 if (fragezeichen[1].getEnable()) then
  348.                     setState("dressMe");
  349.                     sendMsgThis("epsilon");
  350.                 else
  351.                     print("lindas quest already done");
  352.                 end
  353.             end
  354.         end )
  355.         
  356.  
  357. -- MOVE IN REQUEST - EPILOGUE ------------------------------------------
  358.  
  359.     state("wannaMoveIn")
  360.         onMsg("epsilon", function(msg)
  361.             setState("wannaMoveIn0");
  362.             popupConversation("dialogTutSH8");
  363.         end )
  364.         
  365.     state("wannaMoveIn0")
  366.         onMsg("yes", function(msg)
  367.             getParent().getCharacter(ELAINE).walkSO.walkToActionPoint(
  368.                 getParent().getCharacter(ELAINE).getObjectsWithTag(GREETINGPOINT)[1].getActionPoint("north")
  369.             );
  370.             
  371.             
  372.             local oven = getParent().getCharacter(MIKE).getObjectsWithBehavior("damaged");
  373.             if oven[1] then
  374.                 oven[1].enterStateMachine("oven");
  375.                 if oven[1].isBroken() then
  376.                      --getParent().getCharacter(MIKE).sendDelayedMsg("repair", oven[1], 8000);
  377.                      getParent().getCharacter(MIKE).queueCommand("pm_repair", "repair", oven[1], "")
  378.                  end
  379.             end
  380.             
  381.             ---cleanup
  382.             local tutorialobjects = getParent().getCharacter(ELAINE).getObjectsWithBehavior("mission");
  383.             for index, object in tutorialobjects do
  384.                 object.deleteGameObject();
  385.             end
  386.             
  387.             local cartons = getParent().getCharacter(ELAINE).getObjectsWithBehavior("movingCarton");
  388.             for index, carton in cartons do
  389.                 carton.storeData("empty",0);
  390.             end
  391.             
  392.             exitStateMachine();            
  393.         end )
  394.  
  395.         onMsg("no", function(msg)
  396.             setState("feelFree");
  397.         end )
  398.         
  399.         
  400. -- EXPLOSIVE KITCHEN - SUBQUEST ----------------------------------------
  401.     state("explosiveKitchen")
  402.         onMsg( "epsilon", function(msg)
  403.             setState("explosiveKitchen0");
  404.             getParent().getCharacter(ELAINE).walkSO.walkToActionPoint(
  405.                 getParent().getCharacter(ELAINE).getObjectsWithTag(KITCHEN)[1].getActionPoint("north")
  406.             );
  407.         end )
  408.     
  409.     state("explosiveKitchen0")
  410.         onMsg("arrived", function(msg)
  411.             setState("explosiveKitchen1");
  412.             popupConversation("dialogTutKitchen1");
  413.         end )
  414.         
  415.     state("explosiveKitchen1")
  416.         onMsg("on", function(msg)
  417.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);            
  418.             if (fragezeichen[1]) then
  419.                 fragezeichen[1].setEnable(false);
  420.             end
  421.         
  422.             -- check here whether its the oven that got switched on
  423.             local oven = getStateObjectFromID(tonumber(msg.data));
  424.             oven.setBroken(true);
  425.             oven.enterStateMachine("oven");
  426.                         
  427.             --oven.gotoStateMachine("oven");
  428.                 --oven.enterStateMachine("oven");
  429.             
  430.             setState("explosiveKitchen2");
  431.             sendDelayedMsgThis("epsilon", 2000);
  432.         end )
  433.         
  434.         onMsg("enterTrigger"..BATH, function(msg)
  435.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  436.             if (fragezeichen and fragezeichen[1]) then
  437.                 if (fragezeichen[1].getEnable()) then
  438.                     setState("washMe");
  439.                     sendMsgThis("epsilon");
  440.                 else
  441.                     print("bathquest already done");
  442.                 end
  443.             end
  444.         end )
  445.  
  446.         onMsg("enterTrigger"..LINDASROOM, function(msg)            
  447.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  448.             if (fragezeichen and fragezeichen[1]) then
  449.                 if (fragezeichen[1].getEnable()) then
  450.                     setState("dressMe");
  451.                     sendMsgThis("epsilon");
  452.                 else
  453.                     print("lindas quest already done");
  454.                 end
  455.             end
  456.         end )
  457.         
  458.         onMsg("sat", function(msg)
  459.             -- wenn sich linda gesetzt hat
  460.             if (getStateObjectFromID(msg.sender).isFemale()) then 
  461.                 -- und mike in einem Radius von 3.5m sitzt
  462.                 local chars = getParent().getCharacter(ELAINE).getObjectsWithBehavior("character",2.5);
  463.                 if ( (chars[1] and chars[1].isMale()) or (chars[2] and chars[2].isMale()) ) then 
  464.                     setState("wannaMoveIn");
  465.                     sendDelayedMsgThis("epsilon",1000,"");
  466.                 end
  467.             end
  468.             --print("ok cool");            
  469.         end )        
  470.         
  471.         
  472.     state("explosiveKitchen2")
  473.         onMsg("epsilon", function(msg)
  474.             popupConversation("dialogTutKitchen2");
  475.  
  476.             setState("feelFree");
  477.         end )
  478.         
  479.         
  480. ----- WASH ME PLEASE - SUBQUEST ----------------------------------------
  481.  
  482.     state("washMe")
  483.         onMsg("epsilon", function(msg)
  484.             setState("washMe0");
  485.             getParent().getCharacter(ELAINE).walkSO.walkToActionPoint(
  486.                 getParent().getCharacter(ELAINE).getObjectsWithTag(BATH)[1].getActionPoint("north")
  487.             );
  488.         end )
  489.         
  490.     state("washMe0")
  491.         onMsg("arrived", function(msg)
  492.             setState("washMe1");
  493.             popupConversation("dialogTutWashMe1");
  494.         end )
  495.         
  496.         
  497.     state("washMe1")
  498.         onMsg("washHands", function(msg)
  499.             --setState("feelFree");
  500.  
  501.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  502.             if (fragezeichen[1]) then
  503.                 fragezeichen[1].setEnable( false );
  504.             end
  505.             
  506.             sendDelayedMsgThis("washedHands",4000,"");
  507.         end )
  508.         
  509.         onMsg("washedHands", function(msg) 
  510.             setState("feelFree");
  511.             popupConversation("dialogTutWashMe2");
  512.             
  513.             --popupConversation("Linda::Man wird ja doch sauberer, nicht zu glauben:;");
  514.         end )
  515.         
  516.         onMsg("enterTrigger"..KITCHEN, function(msg)
  517.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  518.             if (fragezeichen and fragezeichen[1]) then
  519.                 if (fragezeichen[1].getEnable()) then
  520.                     setState("explosiveKitchen");
  521.                     sendMsgThis("epsilon");
  522.                 else
  523.                     print("kitchenquest already done");
  524.                 end
  525.             end
  526.         end )
  527.         
  528.         onMsg("enterTrigger"..LINDASROOM, function(msg)            
  529.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  530.             if (fragezeichen and fragezeichen[1]) then
  531.                 if (fragezeichen[1].getEnable()) then
  532.                     setState("dressMe");
  533.                     sendMsgThis("epsilon");
  534.                 else
  535.                     print("lindas quest already done");
  536.                 end
  537.             end
  538.         end )        
  539.         
  540.         
  541.         onMsg("sat", function(msg)
  542.             -- wenn sich linda gesetzt hat
  543.             if (getStateObjectFromID(msg.sender).isFemale()) then 
  544.                 -- und mike in einem Radius von 3.5m sitzt
  545.                 local chars = getParent().getCharacter(ELAINE).getObjectsWithBehavior("character",2.5);
  546.                 if ( (chars[1] and chars[1].isMale()) or (chars[2] and chars[2].isMale()) ) then 
  547.                     setState("wannaMoveIn");
  548.                     sendDelayedMsgThis("epsilon",1000,"");
  549.                 end
  550.             end
  551.             --print("ok cool");            
  552.         end )        
  553.         
  554. ------ DRESS ME UP --- SUBQUEST ----------------------------------------
  555.     state("dressMe")
  556.         onMsg("epsilon", function(msg)
  557.             setState("dressMe0");
  558.             getParent().getCharacter(ELAINE).walkSO.walkToActionPoint(
  559.                 getParent().getCharacter(ELAINE).getObjectsWithTag(LINDASROOM)[1].getActionPoint("north")
  560.             );
  561.         end )
  562.         
  563.     state("dressMe0")
  564.         onMsg("arrived", function(msg)
  565.             setState("dressMe1");
  566.  
  567.             popupConversation("dialogTutDressMe1");
  568.         end )    
  569.         
  570.     state("dressMe1")
  571.         onMsg("outfit", function(msg)
  572.             
  573.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  574.             if (fragezeichen[1]) then
  575.                 fragezeichen[1].setEnable( false );
  576.             end
  577.             
  578.             sendDelayedMsgThis("outfitted",4000, "");
  579.         end )
  580.         
  581.         onMsg("outfitted", function(msg)
  582.             setState("feelFree");
  583.             
  584.             popupConversation("dialogTutDressMe2");
  585.             --popupConversation("Linda::Klasse, sitzt ja wie angegossen. Fⁿr jede Situation das richtige Outfit!:;");
  586.         end )
  587.  
  588.         onMsg("enterTrigger"..KITCHEN, function(msg)
  589.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  590.             if (fragezeichen and fragezeichen[1]) then
  591.                 if (fragezeichen[1].getEnable()) then
  592.                     setState("explosiveKitchen");
  593.                     sendMsgThis("epsilon");
  594.                 else
  595.                     print("kitchenquest already done");
  596.                 end
  597.             end
  598.         end )
  599.         
  600.         onMsg("enterTrigger"..BATH, function(msg)
  601.             local fragezeichen = getParent().getCharacter(ELAINE).getObjectsWithBehavior("lure", 2.0);
  602.             if (fragezeichen and fragezeichen[1]) then
  603.                 if (fragezeichen[1].getEnable()) then
  604.                     setState("washMe");
  605.                     sendMsgThis("epsilon");
  606.                 else
  607.                     print("bathquest already done");
  608.                 end
  609.             end
  610.         end )
  611.         
  612.         onMsg("sat", function(msg)
  613.             -- wenn sich linda gesetzt hat
  614.             if (getStateObjectFromID(msg.sender).isFemale()) then 
  615.                 -- und mike in einem Radius von 3.5m sitzt
  616.                 local chars = getParent().getCharacter(ELAINE).getObjectsWithBehavior("character",2.5);
  617.                 if ( (chars[1] and chars[1].isMale()) or (chars[2] and chars[2].isMale()) ) then 
  618.                     setState("wannaMoveIn");
  619.                     sendDelayedMsgThis("epsilon",1000,"");
  620.                 end
  621.             end
  622.             --print("ok cool");            
  623.         end )
  624.  
  625. endStateMachine()
  626.  
  627.  
  628.  
  629.  
  630.