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

  1. -- repair state machine
  2. beginStateMachine()
  3.     
  4.     onEnter(function(msg)
  5.         local object = getStateObjectFromID(msg.sender);
  6.         storeStateObject("object", object);
  7.         
  8.         if (object) then
  9.             -- object does exist
  10.             
  11.             local actionPointName = retrieveData("actionPointName");
  12.             if exitIfWrongPosition(getParent(), object, actionPointName) then return end;                
  13.             
  14.             if (object.isBroken()) then
  15.                 -- object does exist
  16.                 if (getParent().isOneActionPointLocked(object)) then
  17.                     -- action point is locked
  18.                     getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  19.                     sendMsg("emoThink", getParent().walkSO);
  20.                     exitStateMachine();
  21.                 else
  22.                     getParent().lockActionPoints(object);
  23.                 end
  24.             else
  25.                 -- object is not broken anymore
  26.                 getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  27.                 sendMsg("emoThink", getParent().walkSO);
  28.                 exitStateMachine();
  29.             end
  30.         else
  31.             -- object does not exist anymore
  32.             getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  33.             sendMsg("emoThink", getParent().walkSO);
  34.             exitStateMachine();
  35.         end
  36.         
  37.         freeHands(getParent());
  38.                 
  39.     end )
  40.     
  41.     onExit(function(msg)
  42. --        local object = retrieveStateObject("object");
  43. --        if (object) then
  44. --            getParent().unlockActionPoints(object);
  45. --            getParent().stopAllActivities(object);
  46. --            removeStateObject("object");
  47. --        end
  48.         
  49.         unlockAll("object");                
  50.         freeHands(getParent());
  51.         
  52.         getParent().stopAllActivities();
  53.     end )
  54.     
  55.     
  56.     state("repairStart")
  57.     
  58.         onEnter(function(msg)
  59.         
  60.             local screwdriver = getParent().loadGameObject("StandardGO", "screwdriver");
  61.             getParent().attachRightObjectHolder(screwdriver);
  62.         
  63.             startAnimation("repairStart");
  64.                         
  65.             sendDelayedMsgThis("dropScrewdriver", 8320);
  66.             sendDelayedMsgThis("grabHammer", 9000);
  67.         end )
  68.         
  69.         
  70.         
  71.         
  72.         onMsg("dropScrewdriver", function(msg)
  73.             freeHands(getParent());
  74.         end )    
  75.         
  76.         onMsg("grabHammer", function(msg)
  77.             local hammer = getParent().loadGameObject("StandardGO", "hammer");
  78.             getParent().attachRightObjectHolder(hammer);
  79.         end )    
  80.         
  81.         
  82.     
  83.         onMsg("end", function(msg)
  84.             if (testCancel()) then
  85.                 exitStateMachine();
  86.             else
  87.                 setState("repair");
  88.             end
  89.         end )    
  90.     
  91.     
  92.     
  93.     state("repair")
  94.     
  95.         onEnter(function(msg)
  96.             local object = retrieveStateObject("object");
  97.             local repair = getParent().startActivity("repair", object);
  98.             local length, scale = getActivityLength(repair);
  99.             storeData("scale", scale);
  100.             
  101.             startAnimation("repairLoop", false, scale);
  102.             sendDelayedMsgThis("hammerSound", 900);
  103.             sendDelayedMsgThis("hammerSound", 1500);
  104.             sendDelayedMsgThis("hammerSound", 2000);
  105.             
  106.             
  107.             sendDelayedMsgThis("complete", length);
  108.         end )
  109.     
  110.         onMsg("hammerSound", function(msg)
  111.             getParent().playSound("hammer3");
  112.         end )    
  113.  
  114.         onMsg("complete", function(msg)
  115.             local object = retrieveStateObject("object");
  116.             getParent().stopActivity("repair", object);
  117.             --object.setBroken(false);
  118.             storeData("finished", true);
  119.             setState("repairEnd");
  120.         end )    
  121.  
  122.         onMsg("end", function(msg)
  123.             
  124.             if testCancel() then
  125.                 local object = retrieveStateObject("object");
  126.                 getParent().stopActivity("repair", object);
  127.                 setState("repairEnd");
  128.             else
  129.                 startAnimation("repairLoop", false, retrieveData("scale"));
  130.                 sendDelayedMsgThis("hammerSound", 900);
  131.                 sendDelayedMsgThis("hammerSound", 1500);
  132.                 sendDelayedMsgThis("hammerSound", 2000);
  133.             end
  134.         end )    
  135.         
  136.         
  137.     state("repairEnd")
  138.     
  139.         onEnter(function(msg)
  140.         
  141.             sendDelayedMsgThis("dropHammer", 1360);
  142.             sendDelayedMsgThis("grabScrewdriver", 2280);
  143.         
  144.             startAnimation("repairEnd");            
  145.         end )
  146.         
  147.         
  148.         onMsg("dropHammer", function(msg)
  149.             getParent().playSound("dropHeavyStuff");
  150.             freeHands(getParent());
  151.         end )    
  152.         
  153.         onMsg("grabScrewdriver", function(msg)
  154.             local screwdriver = getParent().loadGameObject("StandardGO", "screwdriver");
  155.             getParent().attachRightObjectHolder(screwdriver);
  156.         end )    
  157.         
  158.         
  159.     
  160.         onMsg("end", function(msg)
  161.             freeHands(getParent());
  162.             if (retrieveData("finished", false) == true) then       
  163.                 local obj = retrieveStateObject("object");
  164.                 obj.setBroken(FALSE);            
  165.                 local char = getParent();
  166.                 if (char.hasSkill("repair3")) then          
  167.                     obj.setBrokenValue(0.0);     
  168.                 elseif  (char.hasSkill("repair2")) then     
  169.                     obj.setBrokenValue(0.25);    
  170.                 elseif  (char.hasSkill("repair1")) then
  171.                     obj.setBrokenValue(0.5);    
  172.                 end
  173.             end;
  174.             exitAndGoAway();
  175.         end )    
  176.     
  177.     
  178.         onExit(function(msg)
  179.             local object = retrieveStateObject("object");
  180.             
  181.             --notify mission that the character repaired the particular object 
  182.             getParent().sendMsg(
  183.                 "repaired",
  184.                 getParent().getGameObjectServer().mission, 
  185.                 tostring(object.getUniqueID()) );
  186.         end )
  187.         
  188. endStateMachine()
  189.