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

  1. -- bed character state machine
  2. beginStateMachine()
  3.     
  4.     onEnter(function(msg)
  5.     
  6.         local bed = getStateObjectFromID(msg.sender);
  7.         storeStateObject("bed", bed);
  8.         
  9.         if (bed) then
  10.             -- bed does exist
  11.             local actionPointName = retrieveData("actionPointName");
  12.             local actionPoint = getParent().getFreeActionPoint(bed, actionPointName);
  13.             
  14.             if exitIfWrongPosition(getParent(), bed, actionPointName) then return end;    
  15.             
  16.             if (actionPoint) then
  17.                 -- action point is free
  18.                 getParent().lockActionPoints(bed);
  19.                  if (actionPointName == "layDown2") then
  20.                     storeData("mirrorAnims", true);
  21.                 else
  22.                     storeData("mirrorAnims", false);
  23.                 end
  24.                 
  25.                 local blanket = bed.findChildGO("blanket");
  26.                 if (not blanket) then
  27.                     print("blanket not found");
  28.                 else
  29.                     storeStateObject("blanket", blanket);
  30.                 end
  31.             else
  32.                 -- action point is not free anymore
  33.                 getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  34.                 sendMsg("emoThink", getParent().walkSO);
  35.                 exitStateMachine();
  36.             end
  37.         else
  38.             -- bed does not exist anymore
  39.             getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  40.             sendMsg("emoThink", getParent().walkSO);
  41.             exitStateMachine();
  42.         end
  43.             
  44.         freeHands(getParent());
  45.     end )
  46.     
  47.     onExit(function(msg)
  48.         print("EXIT: bedChar SM");
  49.                 
  50. --        local bed = retrieveStateObject("bed");
  51. --        if (bed) then
  52. --            getParent().unlockActionPoints(bed);
  53. --            getParent().stopAllActivities(bed);
  54. --            removeStateObject("bed");
  55. --        end;
  56.         
  57.         unlockAll("bed");
  58.                                          
  59.         getParent().stopAllActivities();       
  60.         
  61.         -- removeStateObject("blanket");
  62.         
  63.     end )
  64.     
  65.     -- test if we need to cancel
  66.     onMsg("test", function(msg)
  67.         if testCancel() or testCancelSleeping() then
  68.             setState("outOfBed");
  69.         else
  70.             sendDelayedMsgThis("test", 1000);
  71.         end
  72.     end )
  73.     
  74.     
  75.     
  76.     state("undress")
  77.     
  78.         onEnter(function(msg)
  79.             --startAnimation("ausziehen2");
  80.             startAnimation(getChangeOutfitAnim(getParent()));
  81.             sendDelayedMsgThis("underwear", 1600);
  82.         end )
  83.         
  84.         onMsg("underwear", function(msg)
  85.             changeOutfit(getParent(), UNDERWEAR);
  86.         end )
  87.     
  88.         onMsg("end", function(msg)
  89.             setState("layDown");
  90.         end )
  91.     
  92.     
  93.  
  94.         -- lay down on bed
  95.     state("layDown")
  96.     
  97.         onEnter(function(msg)
  98.         
  99.         
  100.             if (not hasOutfit(getParent(), UNDERWEAR) and not hasOutfit(getParent(), NOTHING)) then
  101.                 setState("undress");
  102.                 return
  103.             end
  104.         
  105.         
  106.             startAnimation("laydownBed", retrieveData("mirrorAnims"));
  107.                     
  108.             local bed = retrieveStateObject("bed");
  109.             bed.playSound("bedLaydown");
  110.             
  111.             local blanket = retrieveStateObject("blanket");
  112.             blanket.startSkeletonAnimation("blanketLayDownBed", retrieveData("mirrorAnims"));
  113.             
  114.         end )
  115.     
  116.         onMsg("end", function(msg)
  117.             if testCancel() or testCancelSleeping() then
  118.                 setState("outOfBedFast");
  119.             else
  120.                 setState("lieInBed");
  121.             end
  122.         end )
  123.     
  124.     -- sleeping - lying down quietly
  125.     state("lieInBed")
  126.     
  127.         onEnter(function(msg)
  128.             local bed = retrieveStateObject("bed");
  129.             getParent().startActivity("sleep", bed);
  130.             -- character now sleeping
  131.             getParent().setSleeping(true);
  132.  
  133.             startAnimation("lieInBed", retrieveData("mirrorAnims"));
  134.             sendMsg("eyeClose", getParent().mimicSO);
  135.             getParent().setEmoticon(EMOTICON_SLEEPING);
  136.             
  137.         end )
  138.         
  139.     
  140.         onMsg("end", function(msg)
  141.             if testCancel() or testCancelSleeping() then
  142.                 setState("outOfBed");
  143.             else
  144.                 sendDelayedMsgThis("test", 1000);
  145.                 setDelayedState("sleepingTurnToLeftSide", random(5000, 10000));
  146.             end
  147.         end )    
  148.         
  149.     -- sleeping - turn to to left side
  150.     state("sleepingTurnToLeftSide")
  151.     
  152.         onEnter(function(msg)
  153.             startAnimation("sleepingTurnToLeftSide", retrieveData("mirrorAnims"));
  154.             
  155.             local blanket = retrieveStateObject("blanket");
  156.             blanket.startSkeletonAnimation("blanketTurnToLeftSide", retrieveData("mirrorAnims"));
  157.         end )
  158.     
  159.     
  160.         onMsg("end", function(msg)
  161.             if testCancel() or testCancelSleeping() then
  162.                 setState("outOfBed");
  163.             else
  164.                 sendDelayedMsgThis("test", 1000);
  165.                 setDelayedState("sleepingTurnToTommy", random(5000, 10000));
  166.             end
  167.         end )    
  168.         
  169.     -- sleeping - turn to to tummy
  170.     state("sleepingTurnToTommy")
  171.     
  172.         onEnter(function(msg)
  173.             startAnimation("sleepingTurnToTommy", retrieveData("mirrorAnims"));
  174.             
  175.             local blanket = retrieveStateObject("blanket");
  176.             blanket.startSkeletonAnimation("blanketTurnToTommy", retrieveData("mirrorAnims"));
  177.         end )
  178.     
  179.     
  180.         onMsg("end", function(msg)
  181.             if testCancel() or testCancelSleeping() then
  182.                 setState("outOfBed");
  183.             else
  184.                 sendDelayedMsgThis("test", 1000);
  185.                 setDelayedState("sleepingTurnToRightSide", random(5000, 10000));
  186.             end
  187.         end )    
  188.         
  189.     -- sleeping - turn to to tummy
  190.     state("sleepingTurnToRightSide")
  191.     
  192.     
  193.         onEnter(function(msg)
  194.             startAnimation("sleepingTurnToRightSide", retrieveData("mirrorAnims"));
  195.             
  196.             local blanket = retrieveStateObject("blanket");
  197.             blanket.startSkeletonAnimation("blanketTurnToRightSide", retrieveData("mirrorAnims"));
  198.         end )
  199.     
  200.     
  201.         onMsg("end", function(msg)
  202.             if testCancel() or testCancelSleeping() then
  203.                 setState("outOfBed");
  204.             else
  205.                 sendDelayedMsgThis("test", 1000);
  206.                 setDelayedState("sleepingTurnToBack", random(5000, 10000));
  207.             end
  208.         end )    
  209.         
  210.     -- sleeping - turn to back
  211.     state("sleepingTurnToBack")
  212.     
  213.         onEnter(function(msg)
  214.             startAnimation("sleepingTurnToBack", retrieveData("mirrorAnims"));
  215.             
  216.             local blanket = retrieveStateObject("blanket");
  217.             blanket.startSkeletonAnimation("blanketTurnToBack", retrieveData("mirrorAnims"));
  218.         end )
  219.     
  220.     
  221.         onMsg("end", function(msg)
  222.             if testCancel() or testCancelSleeping() then
  223.                 setState("outOfBed")
  224.             else
  225.                 sendDelayedMsgThis("test", 1000);
  226.                 setDelayedState("lieInBed", random(5000, 10000));
  227.             end
  228.         end )    
  229.         
  230.     -- get out of bed
  231.     state("outOfBed")
  232.     
  233.         onEnter(function(msg)
  234.         
  235.             startAnimation(genderize(getParent(), "standupBed"), retrieveData("mirrorAnims"));
  236.             -- character not sleeping anymore
  237.             getParent().setSleeping(false);    
  238.             
  239.             sendMsg("neutral", getParent().mimicSO);
  240.             getParent().setEmoticon("");
  241.             
  242.             getParent().playSound(genderizeReal(getParent(), "wakeUp"));
  243.  
  244.             local blanket = retrieveStateObject("blanket");
  245.             local blanketAnimSpeed = cond(getParent().isMale(), 1.0, 2.0)
  246.             blanket.startSkeletonAnimation("blanketStandupBed", retrieveData("mirrorAnims"), blanketAnimSpeed);
  247.                                     
  248.             local bed = retrieveStateObject("bed");
  249.             --bed.stopSound("Bettgerausch");
  250.             getParent().stopAllActivities(bed);
  251.         end )
  252.     
  253.         onMsg("end", function(msg)
  254.         
  255.             --local blanket = retrieveStateObject("blanket");
  256.             --blanket.startSkeletonAnimation("blanketStoodupBed", retrieveData("mirrorAnims"));
  257.             
  258.             flipPoseDirection();
  259.             setCurrentPosition();
  260.             exitStateMachine();
  261.         end )
  262.         
  263.     -- get out of bed
  264.     state("outOfBedFast")
  265.     
  266.         onEnter(function(msg)
  267.             startAnimation("laydownBed", retrieveData("mirrorAnims"), -1.0, 1000);
  268.             -- character not sleeping anymore
  269.             getParent().setSleeping(false);    
  270.             
  271.             sendMsg("neutral", getParent().mimicSO);
  272.             getParent().setEmoticon("");
  273.             
  274.             local blanket = retrieveStateObject("blanket");
  275.             blanket.startSkeletonAnimation("blanketStandupBed", retrieveData("mirrorAnims"), 5.0);
  276.                                     
  277.             local bed = retrieveStateObject("bed");
  278.             --bed.stopSound("Bettgerausch");
  279.             getParent().stopAllActivities(bed);
  280.         end )
  281.     
  282.         onMsg("end", function(msg)            
  283.             flipPoseDirection();
  284.             setCurrentPosition();
  285.             exitStateMachine();
  286.         end )
  287.         
  288.             
  289.     
  290. endStateMachine()