Advertisement
NukeVsCity

Untitled

Mar 28th, 2023
671
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 39.99 KB | None | 0 0
  1. --[[VARIABLE DEFINITION ANOMALY DETECTED, DECOMPILATION OUTPUT POTENTIALLY INCORRECT]]--
  2. -- Decompiled with the Synapse X Luau decompiler.
  3.  
  4. local v1 = {};
  5. local u1 = nil;
  6. coroutine.wrap(function()
  7.     u1 = require(game.ReplicatedStorage:WaitForChild("Framework"):WaitForChild("Library"));
  8. end)();
  9. local v2 = game:GetService("RunService"):IsServer();
  10. local v3 = {
  11.     AllBakeries = {},
  12.     VOXEL_SIZE = 4,
  13.     MAX_FLOORS = 10
  14. };
  15. function v3.new(p1, p2, p3)
  16.     local v4 = setmetatable({}, {
  17.         __index = v3
  18.     });
  19.     v4.floors = {};
  20.     v4.owner = game.Players:FindFirstChild(p2);
  21.     v4.building = {
  22.         walls = {}
  23.     };
  24.     v4.UID = u1.Functions.GenerateUID();
  25.     v4.themeID = p3;
  26.     v4.Entities = {};
  27.     v3.AllBakeries[v4.UID] = v4;
  28.     v4.locationPart = p1;
  29.     v4.rootPosition = v4.locationPart.Position;
  30.     v4.baseOrientation = v4.locationPart.Orientation.Y;
  31.     v4.baseAngle = math.rad(v4.locationPart.Orientation.Y);
  32.     v4.isOpen = false;
  33.     v4.isTutorial = false;
  34.     v4.tutorial = {
  35.         bot = nil,
  36.         readyToAllowStoreToOpen = false,
  37.         hasAllowedStoreToOpen = false,
  38.         readyForFirstWaveOfCustomers = false,
  39.         hasAllowedFirstWaveOfCustomers = false,
  40.         firstCustomerWave = {},
  41.         readyForUserToCook = false,
  42.         readyForUserToServe = false,
  43.         readyForUserToCash = false,
  44.         readyForUserToWash = false,
  45.         readyForUserToHire = false
  46.     };
  47.     v4.playerFloorLevel = 1;
  48.     v4.customerQueue = {};
  49.     v4.container = Instance.new("Folder", workspace.__THINGS.BAKERIES);
  50.     v4.container.Name = u1.Player.Get("Name");
  51.     v4.foodContainer = Instance.new("Folder");
  52.     v4.foodContainer.Name = "Food";
  53.     v4.foodContainer.Parent = v4.container;
  54.     v4.exterior = Instance.new("Folder", v4.container);
  55.     v4.exterior.Name = "Exterior";
  56.     v4.animatedPath = nil;
  57.     v4.animatedPathTargetFloor = nil;
  58.     v4.animatedPathTargetX = nil;
  59.     v4.animatedPathTargetZ = nil;
  60.     v4.interactPool = {};
  61.     v4.nameCounters = setmetatable({}, {
  62.         __index = function()
  63.             return 0;
  64.         end
  65.     });
  66.     v4.jukebox = nil;
  67.     v4.activeCelebrity = false;
  68.     v4.coffeeMachines = {};
  69.     return v4;
  70. end;
  71. function v3.FromUIDData(p4, p5, p6, p7)
  72.     local v5 = v3.new(p5, p6, p7);
  73.     v5.currentDay = p4.CurrentDay;
  74.     v5.experience = p4.Experience;
  75.     local v6, v7, v8 = ipairs(p4.Floor);
  76.     while true do
  77.         v6(v7, v8);
  78.         if not v6 then
  79.             break;
  80.         end;
  81.         v8 = v6;
  82.         v5.floors[v6] = u1.Floor.new(v5, v7);  
  83.     end;
  84.     v5:CreateEntitiesFromUIDData(p4);
  85.     return v5;
  86. end;
  87. function v3.Initialize(p8, p9, p10, p11)
  88.     local v9 = v3.FromUIDData(p8, p9, game.Players.LocalPlayer.Name, p10);
  89.     u1.Variables.MyBakery = v9;
  90.     local v10, v11, v12 = ipairs(v9.floors);
  91.     while true do
  92.         v10(v11, v12);
  93.         if not v10 then
  94.             break;
  95.         end;
  96.         v12 = v10;
  97.         v11:InitializePositionTable();
  98.         v11:InitExterior();
  99.     end;
  100.     local v13 = workspace.__THINGS.BUTTONS.TeleportModel:Clone();
  101.     v9.teleportPart = v13.TeleportPart;
  102.     v13.Parent = v9.exterior;
  103.     v13:SetPrimaryPartCFrame(CFrame.new(v9.locationPart.Position) * CFrame.Angles(0, v9.baseAngle, 0) * CFrame.new(8, -0.4, -45) * CFrame.Angles(0, 0, 3 * math.pi / 2));
  104.     v9.teleportPart.BillboardGui.Title.Text = "Shop!";
  105.     v9.doorCFrame = v9:GetFloorFromLevel(1).exteriorModel.TUTORIAL_LOCK_DOOR.CFrame;
  106.     v9.isTutorial = p11;
  107.     u1.Food.LoadOwnedRecipes();
  108.     v9:StartAnimatedPathUpdateLoop();
  109. end;
  110. local l__LocalPlayer__2 = game.Players.LocalPlayer;
  111. function v3.InitializeOtherPlayer(p12, p13, p14, p15, p16)
  112.     local u3 = v3.FromUIDData(p12, p13, p14.Name, p15);
  113.     coroutine.wrap(function()
  114.         local v14, v15, v16 = ipairs(u3.floors);
  115.         while true do
  116.             v14(v15, v16);
  117.             if not v14 then
  118.                 break;
  119.             end;
  120.             v16 = v14;
  121.             v15:InitExterior();
  122.             wait(0.75);    
  123.         end;
  124.         pcall(function()
  125.             local v17 = u3.floors[1];
  126.             if v17 then
  127.                 local u4 = false;
  128.                 v17.exteriorModel.BLACKLIST_DOOR.Touched:Connect(function(p17)
  129.                     if not v17.exteriorModel.BLACKLIST_DOOR.CanCollide then
  130.                         return;
  131.                     end;
  132.                     if p17.Parent ~= l__LocalPlayer__2.Character then
  133.                         return;
  134.                     end;
  135.                     if u4 then
  136.                         return;
  137.                     end;
  138.                     u4 = true;
  139.                     coroutine.wrap(function()
  140.                         wait(2);
  141.                         u4 = false;
  142.                     end)();
  143.                     u1.Message.New("The Restaurant owner has blacklisted you from entering.");
  144.                 end);
  145.             end;
  146.         end);
  147.     end)();
  148.     return u3;
  149. end;
  150. function v3.GetBakeryByUID(p18)
  151.     return v3.AllBakeries[p18];
  152. end;
  153. function v3.GetBakeryByOwner(p19)
  154.     for v18, v19 in pairs(v3.AllBakeries) do
  155.         if v19.owner == p19 then
  156.             return v19;
  157.         end;
  158.     end;
  159.     return nil;
  160. end;
  161. function v3.IsMyBakery(p20)
  162.     return p20.owner == game.Players.LocalPlayer;
  163. end;
  164. function v3.ChangeTheme(p21, p22)
  165.     p21.themeID = p22;
  166.     local v20, v21, v22 = ipairs(p21.floors);
  167.     while true do
  168.         v20(v21, v22);
  169.         if not v20 then
  170.             break;
  171.         end;
  172.         v22 = v20;
  173.         v21:ReInitExterior();  
  174.     end;
  175. end;
  176. function v3.SearchForCelebrity(p23)
  177.     local v23, v24, v25 = ipairs(p23.floors);
  178.     while true do
  179.         v23(v24, v25);
  180.         if not v23 then
  181.             break;
  182.         end;
  183.         v25 = v23;
  184.         local v26, v27, v28 = ipairs(v24.customers);
  185.         while true do
  186.             v26(v27, v28);
  187.             if not v26 then
  188.                 break;
  189.             end;
  190.             v28 = v26;
  191.             if v27.ID == "20" then
  192.                 return v27;
  193.             end;       
  194.         end;   
  195.     end;
  196.     return nil;
  197. end;
  198. function v3.GenerateFurnitureApplianceWhitelist(p24)
  199.     local v29 = {};
  200.     local v30, v31, v32 = ipairs(p24.floors);
  201.     while true do
  202.         v30(v31, v32);
  203.         if not v30 then
  204.             break;
  205.         end;
  206.         v32 = v30;
  207.         table.insert(v29, v31.furnitureContainer);
  208.         table.insert(v29, v31.applianceContainer); 
  209.     end;
  210.     return v29;
  211. end;
  212. function v3.CountEntity(p25, p26, p27)
  213.  
  214. end;
  215. function v3.GetOwnedCountByName(p28, p29)
  216.     return p28.nameCounters[p29];
  217. end;
  218. function v3.GetBlacklistDoor(p30)
  219.     return p30.floors[1].exteriorModel:FindFirstChild("BLACKLIST_DOOR");
  220. end;
  221. function v3.CreateEntitiesFromUIDDataReplication(p31, p32)
  222.     local u5 = 0;
  223.     for v33, v34 in pairs(p32.Waiter) do
  224.         u5 = u5 + 1;
  225.         if u5 % 20 == 0 then
  226.             wait();
  227.         end;
  228.         u1.Waiter.FromUIDData(p31, p31:GetFloorFromLevel(v34.FloorLevel), v34);
  229.     end;
  230.     for v35, v36 in pairs(p32.Cook) do
  231.         u5 = u5 + 1;
  232.         if u5 % 20 == 0 then
  233.             wait();
  234.         end;
  235.         u1.Cook.FromUIDData(p31, p31:GetFloorFromLevel(v36.FloorLevel), v36);
  236.     end;
  237.     local v37, v38, v39 = pairs(p32.Furniture);
  238.     while true do
  239.         local v40, v41 = v37(v38, v39);
  240.         if not v40 then
  241.             break;
  242.         end;
  243.         u5 = u5 + 1;
  244.         if u5 % 20 == 0 then
  245.             wait();
  246.         end;
  247.         if not u1.Directory.Furniture[v41.ID].bannedInChina or not u1.China.IsSubjectToChinaPolicies() then
  248.             u1.Furniture.FromUIDData(p31, p31:GetFloorFromLevel(v41.FloorLevel), v41);
  249.         end;   
  250.     end;
  251.     local v42, v43, v44 = pairs(p32.Appliance);
  252.     while true do
  253.         local v45, v46 = v42(v43, v44);
  254.         if not v45 then
  255.             break;
  256.         end;
  257.         u5 = u5 + 1;
  258.         if u5 % 20 == 0 then
  259.             wait();
  260.         end;
  261.         if not u1.Directory.Appliance[v46.ID].bannedInChina or not u1.China.IsSubjectToChinaPolicies() then
  262.             u1.Appliance.FromUIDData(p31, p31:GetFloorFromLevel(v46.FloorLevel), v46);
  263.         end;   
  264.     end;
  265.     for v47, v48 in pairs(p32.Customer) do
  266.         u5 = u5 + 1;
  267.         if u5 % 20 == 0 then
  268.             wait();
  269.         end;
  270.         u1.Customer.FromUIDData(p31, p31:GetFloorFromLevel(v48.FloorLevel), v48);
  271.     end;
  272.     u1.Network.Fire("GetBakeryOpenStatus", p31.owner);
  273. end;
  274. function v3.CreateEntitiesFromUIDData(p33, p34)
  275.     for v49, v50 in pairs(p34.Furniture) do
  276.         if not u1.Directory.Furniture[v50.ID].bannedInChina or not u1.China.IsSubjectToChinaPolicies() then
  277.             u1.Furniture.FromUIDData(p33, p33:GetFloorFromLevel(v50.FloorLevel), v50);
  278.         end;
  279.     end;
  280.     for v51, v52 in pairs(p34.Appliance) do
  281.         if not u1.Directory.Appliance[v52.ID].bannedInChina or not u1.China.IsSubjectToChinaPolicies() then
  282.             u1.Appliance.FromUIDData(p33, p33:GetFloorFromLevel(v52.FloorLevel), v52);
  283.         end;
  284.     end;
  285.     for v53, v54 in pairs(p34.Waiter) do
  286.         if not u1.Directory.Waiter[v54.ID].bannedInChina or not u1.China.IsSubjectToChinaPolicies() then
  287.             u1.Waiter.FromUIDData(p33, p33:GetFloorFromLevel(v54.FloorLevel), v54);
  288.         end;
  289.     end;
  290.     for v55, v56 in pairs(p34.Cook) do
  291.         if not u1.Directory.Cook[v56.ID].bannedInChina or not u1.China.IsSubjectToChinaPolicies() then
  292.             u1.Cook.FromUIDData(p33, p33:GetFloorFromLevel(v56.FloorLevel), v56);
  293.         end;
  294.     end;
  295.     for v57, v58 in pairs(p34.Customer) do
  296.         if not u1.Directory.Customer[v58.ID].bannedInChina or not u1.China.IsSubjectToChinaPolicies() then
  297.             u1.Customer.FromUIDData(p33, p33:GetFloorFromLevel(v58.FloorLevel), v58);
  298.         end;
  299.     end;
  300. end;
  301. function v3.GetPlayerVoxel(p35)
  302.     if not p35.playerFloorLevel then
  303.         return nil;
  304.     end;
  305.     local v59 = p35.floors[p35.playerFloorLevel];
  306.     if not l__LocalPlayer__2.Character then
  307.         return nil;
  308.     end;
  309.     local v60, v61, v62 = v59:VoxelFromWorldPosition(l__LocalPlayer__2.Character.HumanoidRootPart.Position);
  310.     if v59:IsValidVoxel(v60, v61, v62) then
  311.         return v60, v61, v62;
  312.     end;
  313.     return nil;
  314. end;
  315. function v3.RunTutorial(p36)
  316.     p36.isTutorial = true;
  317.     p36.tutorial.bot = u1.TutorialBot.new();
  318.     local l__SkipTutorial__63 = u1.GUI.Bottom.MainBottomBar.SkipTutorial;
  319.     local l__TUTORIAL_LOCK_DOOR__64 = p36.floors[1].exteriorModel:FindFirstChild("TUTORIAL_LOCK_DOOR");
  320.     if l__TUTORIAL_LOCK_DOOR__64 then
  321.         l__TUTORIAL_LOCK_DOOR__64.CanCollide = true;
  322.         local u6 = false;
  323.         l__TUTORIAL_LOCK_DOOR__64.Touched:Connect(function(p37)
  324.             if game.Players:GetPlayerFromCharacter(p37.Parent) ~= l__LocalPlayer__2 then
  325.                 return;
  326.             end;
  327.             if u6 then
  328.                 return;
  329.             end;
  330.             u6 = true;
  331.             if p36.isTutorial then
  332.                 u1.Message.New("Complete the tutorial to explore outside of your Restaurant!");
  333.             end;
  334.             wait(1);
  335.             u6 = false;
  336.         end);
  337.     end;
  338.     wait(1);
  339.     u1.Signal.Fired("NPCCreated"):Connect(function()
  340.         if u1.Variables.MyBakery.isTutorial then
  341.             u1.Variables.MyBakery.tutorial.hiredNPCDuringTutorial = true;
  342.             u1.TabController.CloseTabs();
  343.         end;
  344.     end);
  345.     u1.Signal.Fired("Tutorial_FirstCustomerAllowed"):Connect(function()
  346.         p36.tutorial.readyForFirstWaveOfCustomers = true;
  347.         while #p36.tutorial.firstCustomerWave == 0 do
  348.             wait();    
  349.         end;
  350.         (function()
  351.             while #p36.tutorial.firstCustomerWave < 1 do
  352.                 wait();        
  353.             end;
  354.             u1.Functions.CameraLookAt(p36.tutorial.firstCustomerWave[1].model.PrimaryPart.Position);
  355.             wait(0.1);
  356.             local v65 = true;
  357.             while true do
  358.                 local v66, v67, v68 = ipairs(p36.tutorial.firstCustomerWave);
  359.                 while true do
  360.                     v66(v67, v68);
  361.                     if not v66 then
  362.                         break;
  363.                     end;
  364.                     v68 = v66;
  365.                     if v67.state == "WalkingToSeat" then
  366.                         v65 = false;
  367.                         break;
  368.                     end;               
  369.                 end;
  370.                 if not p36.isTutorial then
  371.                     return;
  372.                 end;
  373.                 wait();
  374.                 if not v65 then
  375.                     break;
  376.                 end;           
  377.             end;
  378.         end)();
  379.         p36:CleanupAnimatedPath();
  380.         p36.tutorial.bot:Chat("Your customer is deciding what to eat. When ready, take their order by <font color='rgb(255,238,51)'>interacting</font> with them!");
  381.         if not p36.isTutorial then
  382.             return;
  383.         end;
  384.         (function()
  385.             while true do
  386.                 local v69 = 0;
  387.                 local v70, v71, v72 = ipairs(p36.tutorial.firstCustomerWave);
  388.                 while true do
  389.                     v70(v71, v72);
  390.                     if not v70 then
  391.                         break;
  392.                     end;
  393.                     v72 = v70;
  394.                     if v71.state == "WaitingForFood" then
  395.                         v69 = v69 + 1;
  396.                     end;               
  397.                 end;
  398.                 if not p36.isTutorial then
  399.                     return;
  400.                 end;
  401.                 wait();
  402.                 if v69 == 1 then
  403.                     break;
  404.                 end;           
  405.             end;
  406.         end)();
  407.         if not p36.isTutorial then
  408.             return;
  409.         end;
  410.         p36.tutorial.bot:Chat("It's time to cook! <font color='rgb(255,238,51)'>Interact</font> with the <font color='rgb(255,238,51)'>Order Stand</font> so we can start cooking.");
  411.         if not p36.isTutorial then
  412.             return;
  413.         end;
  414.         local v73 = u1.Variables.MyBakery.floors[1];
  415.         local v74 = v73:GetEntitiesFromClassAndSubClass("Appliance", "Order Stand")[1];
  416.         local v75 = v74:GetMyBakery();
  417.         v75:AnimatePathFromPointToPoint(v73, 1, 1, v73, v74.xVoxel, v74.zVoxel);
  418.         v75.animatedPathTargetEntity = v74;
  419.         if not p36.isTutorial then
  420.             return;
  421.         end;
  422.         p36.tutorial.readyForUserToCook = true;
  423.     end);
  424.     u1.Signal.Fired("Tutorial_StartedCooking"):Connect(function()
  425.         if not p36.isTutorial then
  426.             return;
  427.         end;
  428.         p36.tutorial.readyForUserToCook = false;
  429.         p36.tutorial.bot:Chat("Nice! You're getting the hang of it. Let's <font color='rgb(255,238,51)'>wait</font> for your food to cook.");
  430.     end);
  431.     u1.Signal.Fired("Tutorial_FinishedCooking"):Connect(function()
  432.         if not p36.isTutorial then
  433.             return;
  434.         end;
  435.         p36.tutorial.readyForUserToCook = true;
  436.         p36.tutorial.bot:Chat("Looks delicious! <font color='rgb(255,238,51)'>Interact</font> with the <font color='rgb(255,238,51)'>Order Stand</font> to deliver the food!");
  437.         if not p36.isTutorial then
  438.             return;
  439.         end;
  440.         local v76 = u1.Variables.MyBakery.floors[1];
  441.         local v77 = v76:GetEntitiesFromClassAndSubClass("Appliance", "Order Stand")[1];
  442.         local v78 = v77:GetMyBakery();
  443.         v78:AnimatePathFromPointToPoint(v76, 1, 1, v76, v77.xVoxel, v77.zVoxel);
  444.         v78.animatedPathTargetEntity = v77;
  445.         p36.tutorial.readyForUserToServe = true;
  446.     end);
  447.     u1.Signal.Fired("Tutorial_StartedServing"):Connect(function()
  448.  
  449.     end);
  450.     local function u7()
  451.         while true do
  452.             local v79 = 0;
  453.             local v80, v81, v82 = ipairs(p36.tutorial.firstCustomerWave);
  454.             while true do
  455.                 v80(v81, v82);
  456.                 if not v80 then
  457.                     break;
  458.                 end;
  459.                 v82 = v80;
  460.                 if v81.isDeleted or v81.state ~= "EatingFood" then
  461.                     v79 = v79 + 1;
  462.                 end;           
  463.             end;
  464.             wait();
  465.             if v79 == 1 then
  466.                 break;
  467.             end;       
  468.         end;
  469.     end;
  470.     u1.Signal.Fired("Tutorial_FinishedServing"):Connect(function()
  471.         p36.tutorial.bot:Chat("You've <font color='rgb(255,238,51)'>completed</font> your first order, nice job!", true).finished(function()
  472.             p36.tutorial.bot:Chat("While your customer eats, let me show you the <font color='rgb(255,238,51)'>BIG Shop</font>!", true).finished(function()
  473.                 u1.GUI.Bottom.Gui.Enabled = false;
  474.                 u1.GUI.FloorSide.Gui.Enabled = false;
  475.                 local l__AngleOnePos__83 = workspace.__CAMERA_ANGLES.AngleOnePos;
  476.                 local l__AngleOneLook__84 = workspace.__CAMERA_ANGLES.AngleOneLook;
  477.                 local l__CurrentCamera__85 = workspace.CurrentCamera;
  478.                 l__CurrentCamera__85.CameraType = Enum.CameraType.Scriptable;
  479.                 l__CurrentCamera__85.CFrame = l__AngleOneLook__84 ~= nil and CFrame.new(l__AngleOnePos__83.Position, l__AngleOneLook__84.Position) or l__AngleOnePos__83.CFrame;
  480.                 p36.tutorial.bot:Chat("The <font color='rgb(255,238,51)'>BIG Shop</font> is where you will purchase things for your Restaurant!", true).finished(function()
  481.                     local l__CurrentCamera__86 = workspace.CurrentCamera;
  482.                     l__CurrentCamera__86.CameraType = Enum.CameraType.Scriptable;
  483.                     l__CurrentCamera__86.CFrame = workspace.__CAMERA_ANGLES.AngleTwoPos.CFrame;
  484.                     p36.tutorial.bot:Chat("You can <font color='rgb(255,238,51)'>buy</font> better furniture, upgraded appliances, fancy decorations, and more!", true).finished(function()
  485.                         local l__CurrentCamera__87 = workspace.CurrentCamera;
  486.                         l__CurrentCamera__87.CameraType = Enum.CameraType.Custom;
  487.                         l__CurrentCamera__87.CameraSubject = l__LocalPlayer__2.Character.Humanoid;
  488.                         l__CurrentCamera__87.CFrame = CFrame.new(l__LocalPlayer__2.Character.Head.CFrame.p, p36.tutorial.bot.model.PrimaryPart.Position);
  489.                         u1.Network.Fire("TutorialInterruptEatTable");
  490.                         task.wait(1.35);
  491.                         u1.GUI.Bottom.Gui.Enabled = true;
  492.                         u7();
  493.                         p36.tutorial.bot:Chat("It's time for some sweet, sweet <font color='rgb(122,255,60)'>money</font>. Pick it up with the <font color='rgb(255,238,51)'>dirty dish</font>, you've earned it!");
  494.                         p36.tutorial.readyForUserToWash = true;
  495.                     end);
  496.                 end);
  497.             end);
  498.         end);
  499.     end);
  500.     u1.Signal.Fired("Tutorial_DishPickedUp"):Connect(function()
  501.         p36.tutorial.bot:Chat("Bring the <font color='rgb(255,238,51)'>dirty dish</font> to the sink!");
  502.     end);
  503.     u1.Signal.Fired("Tutorial_StartedWashing"):Connect(function()
  504.         p36.tutorial.bot:Chat("Awesome job, " .. l__LocalPlayer__2.Name .. "! Now that you've earned some money, you can hire a <font color='rgb(255,238,51)'>waiter</font> or a <font color='rgb(255,238,51)'>cook</font> to help out around your Restaurant.");
  505.         u1.GUIFX.ArrowPing(u1.GUI.Bottom.MainBottomBar.ButtonContainer.Frame.Buttons.Staff, "RIGHT");
  506.         p36.tutorial.readyForUserToHire = true;
  507.         while true do
  508.             wait();
  509.             if p36.tutorial.hiredNPCDuringTutorial then
  510.                 break;
  511.             end;       
  512.         end;
  513.         p36.tutorial.bot:Chat("Wonderful job " .. l__LocalPlayer__2.Name .. ", that's it!  I'll be seeing you. Have a <font color='rgb(255,238,51)'>great</font> time in My Restaurant!", true).finished(function()
  514.             p36.tutorial.bot:PlayLoadedAnimation("wave");
  515.             wait(1.4);
  516.             p36:CleanupTutorial();
  517.         end);
  518.     end);
  519.     u1.Signal.Fire("ForceBakeryOpen");
  520.     p36.tutorial.bot:Chat("Hey, " .. l__LocalPlayer__2.Name .. "! Welcome to My Restaurant! You have a customer! Give them a seat by <font color='rgb(255,238,51)'>interacting</font> with them.", nil, true);
  521.     u1.Signal.Fire("Tutorial_FirstCustomerAllowed");
  522.     (function()
  523.         local v88 = u1.Variables.MyBakery.floors[1];
  524.         while #v88.customers == 0 do
  525.             task.wait();       
  526.         end;
  527.         local v89 = v88.customers[1];
  528.         local v90 = v89:GetMyBakery();
  529.         v90:AnimatePathFromPointToPoint(v88, 1, 1, v88, v89.xVoxel, v89.zVoxel);
  530.         v90.animatedPathTargetEntity = v89;
  531.     end)();
  532. end;
  533. function v3.CleanupTutorial(p38)
  534.     if not p38.isTutorial then
  535.         return;
  536.     end;
  537.     u1.GUI.Bottom.MainBottomBar.SkipTutorial.Visible = false;
  538.     p38.tutorial.bot:Cleanup();
  539.     p38.isTutorial = false;
  540.     u1.Network.Fire("FinishedTutorial");
  541.     p38.floors[1].exteriorModel.TUTORIAL_LOCK_DOOR.CanCollide = false;
  542. end;
  543. function v3.AnimatePathFromPointToPoint(p39, p40, p41, p42, p43, p44, p45)
  544.     if u1.Variables.MyBakery.animatedPath then
  545.         return;
  546.     end;
  547.     local v91 = {};
  548.     if p43 ~= p40 then
  549.         table.insert(v91, p40:AnimatePathFromPointToPoint(p41, p42, p40.floorTransitionXVoxel, p40.floorTransitionZVoxel));
  550.         table.insert(v91, p43:AnimatePathFromPointToPoint(p43.floorTransitionXVoxel, p43.floorTransitionZVoxel, p44, p45));
  551.     else
  552.         table.insert(v91, p43:AnimatePathFromPointToPoint(p41, p42, p44, p45));
  553.     end;
  554.     for v92 = 2, #v91 do
  555.         local v93, v94, v95 = ipairs(v91[v92]:GetChildren());
  556.         while true do
  557.             v93(v94, v95);
  558.             if not v93 then
  559.                 break;
  560.             end;
  561.             v95 = v93;
  562.             v94.Parent = v91[1];       
  563.         end;
  564.         v91[v92]:Destroy();
  565.     end;
  566.     u1.Variables.MyBakery.animatedPath = v91[1];
  567.     u1.Variables.MyBakery.animatedPathTargetFloor = p43;
  568.     u1.Variables.MyBakery.animatedPathTargetX = p44;
  569.     u1.Variables.MyBakery.animatedPathTargetZ = p45;
  570.     u1.Signal.Fire("BakeryAnimatedPathCreated", p43.floorLevel);
  571.     return v91[1];
  572. end;
  573. function v3.AnimatePathFromEntityToEntity(p46, p47, p48)
  574.     u1.Variables.MyBakery.animatedPathTargetEntity = p48;
  575.     return p46:AnimatePathFromPointToPoint(p47:GetMyFloor(), p47.xVoxel, p47.zVoxel, p48:GetMyFloor(), p48.xVoxel, p48.zVoxel);
  576. end;
  577. function v3.CleanupAnimatedPath(p49)
  578.     if p49.animatedPath then
  579.         p49.animatedPath = p49.animatedPath:Destroy();
  580.         p49.animatedPathTargetFloor = nil;
  581.         p49.animatedPathTargetEntity = nil;
  582.         p49.animatedPathTargetX = nil;
  583.         p49.animatedPathTargetZ = nil;
  584.         u1.Signal.Fire("BakeryAnimatedPathRemoved");
  585.     end;
  586. end;
  587. function v3.StartAnimatedPathUpdateLoop(p50)
  588.     coroutine.wrap(function()
  589.         local v96 = nil;
  590.         local v97 = nil;
  591.         while true do
  592.             u1.Services.RunService.Heartbeat:Wait();
  593.             if p50.animatedPath and l__LocalPlayer__2.Character then
  594.                 local v98 = p50.floors[p50.playerFloorLevel];
  595.                 if v98 and u1.Player.Get("HumanoidRootPart") then
  596.                     local v99, v100, v101 = v98:VoxelFromWorldPosition(l__LocalPlayer__2.Character.HumanoidRootPart.Position);
  597.                     if (v99 ~= v96 or v101 ~= v97) and v98:IsValidVoxel(v99, 0, v101) then
  598.                         p50.animatedPath = p50.animatedPath:Destroy();
  599.                         p50:AnimatePathFromPointToPoint(v98, v99, v101, p50.animatedPathTargetFloor, p50.animatedPathTargetX, p50.animatedPathTargetZ);
  600.                         v96 = v99;
  601.                         v97 = v101;
  602.                     end;
  603.                 end;
  604.             end;       
  605.         end;
  606.     end)();
  607. end;
  608. function v3.ForcedToClose(p51)
  609.     local v102, v103, v104 = ipairs(p51.floors);
  610.     while true do
  611.         v102(v103, v104);
  612.         if not v102 then
  613.             break;
  614.         end;
  615.         for v105 = #v103.customers, 1, -1 do
  616.             v103.customers[v105]:ForcedToLeave();
  617.         end;   
  618.     end;
  619.     local v106, v107, v108 = ipairs(p51.floors);
  620.     while true do
  621.         v106(v107, v108);
  622.         if not v106 then
  623.             break;
  624.         end;
  625.         v108 = v106;
  626.         local v109, v110, v111 = ipairs((v107:GetEntitiesFromClassAndSubClass("Appliance", "Order Stand")));
  627.         while true do
  628.             v109(v110, v111);
  629.             if not v109 then
  630.                 break;
  631.             end;
  632.             v111 = v109;
  633.             v110:ClearContents();      
  634.         end;   
  635.     end;
  636. end;
  637. function v3.SetOpenStatus(p52, p53)
  638.     p52.isOpen = p53;
  639.     if p52.isOpen ~= p53 and p52.owner == game.Players.LocalPlayer then
  640.         if p52.isOpen then
  641.             p52.customerQueue = {};
  642.         else
  643.             p52:ForcedToClose();
  644.         end;
  645.     end;
  646.     local v112, v113, v114 = ipairs(p52.floors);
  647.     while true do
  648.         v112(v113, v114);
  649.         if not v112 then
  650.             break;
  651.         end;
  652.         v114 = v112;
  653.         for v115, v116 in pairs(v113.furniture) do
  654.             if v116.ID == "51" then
  655.                 v116:SetOpenSignStatus(p53);
  656.             end;
  657.         end;   
  658.     end;
  659.     if p52:IsMyBakery() then
  660.         u1.Replication.ForceEvent("BakeryOpenStatus", p53);
  661.     end;
  662. end;
  663. function v3.GetOpenStatus(p54)
  664.     return p54.isOpen;
  665. end;
  666. function v3.GetEntityByUID(p55, p56)
  667.     if not p56 then
  668.         return nil;
  669.     end;
  670.     return p55.Entities[p56];
  671. end;
  672. function v3.GetFloorFromLevel(p57, p58)
  673.     if p57.floors[p58] then
  674.         return p57.floors[p58];
  675.     end;
  676.     u1.Print("CRITICAL: Floor #" .. tostring(p58) .. " does not exist.", true);
  677.     return nil;
  678. end;
  679. function v3.CleanupAllData(p59)
  680.     for v117, v118 in pairs(p59.Entities) do
  681.         v118:Cleanup();
  682.     end;
  683.     v3.AllBakeries[p59.UID] = nil;
  684. end;
  685. function v3.GetAllOfClassName(p60, p61)
  686.     local v119 = {};
  687.     local v120, v121, v122 = ipairs(p60.floors);
  688.     while true do
  689.         v120(v121, v122);
  690.         if not v120 then
  691.             break;
  692.         end;
  693.         v122 = v120;
  694.         local v123, v124, v125 = ipairs(v121:EntityContainerFromClassName(p61));
  695.         while true do
  696.             v123(v124, v125);
  697.             if not v123 then
  698.                 break;
  699.             end;
  700.             v125 = v123;
  701.             table.insert(v119, v124);      
  702.         end;   
  703.     end;
  704.     return v119;
  705. end;
  706. function v3.GetPlayerFloor(p62)
  707.     return p62.floors[p62.playerFloorLevel];
  708. end;
  709. function v3.UpdateAnimationOptimization(p63)
  710.     local v126, v127, v128 = ipairs(p63.floors);
  711.     while true do
  712.         v126(v127, v128);
  713.         if not v126 then
  714.             break;
  715.         end;
  716.         v128 = v126;
  717.         local v129, v130, v131 = ipairs(v127.customers);
  718.         while true do
  719.             v129(v130, v131);
  720.             if not v129 then
  721.                 break;
  722.             end;
  723.             v131 = v129;
  724.             if not v130:PlayerIsOnMyFloor() then
  725.                 v130:PauseCurrentAnimation();
  726.             elseif v130.runningAnimation then
  727.                 v130:PlayLoadedAnimation(v130.runningAnimation);
  728.             end;       
  729.         end;   
  730.     end;
  731. end;
  732. function v3.UpdateEmojiVisibility(p64)
  733.     local v132, v133, v134 = ipairs(p64.floors);
  734.     while true do
  735.         v132(v133, v134);
  736.         if not v132 then
  737.             break;
  738.         end;
  739.         local v135, v136, v137 = ipairs(v133.customers);
  740.         while true do
  741.             v135(v136, v137);
  742.             if not v135 then
  743.                 break;
  744.             end;
  745.             v137 = v135;
  746.             v136:SetEmojiVisible(v136:PlayerIsOnMyFloor());    
  747.         end;
  748.         local v138, v139, v140 = ipairs(v133.appliances);
  749.         while true do
  750.             v138(v139, v140);
  751.             if not v138 then
  752.                 break;
  753.             end;
  754.             v140 = v138;
  755.             v139:SetEmojiVisible(v139:PlayerIsOnMyFloor());    
  756.         end;   
  757.     end;
  758. end;
  759. function v3.TeleportToFloor(p65, p66)
  760.     if p66 < 1 or #p65.floors < p66 then
  761.         return;
  762.     end;
  763.     u1.Audio.Play(5226914888, l__LocalPlayer__2.PlayerGui);
  764.     if p65.playerFloorLevel ~= p66 then
  765.         p65.playerFloorLevel = p66;
  766.         p65:UpdateAnimationOptimization();
  767.         p65:UpdateEmojiVisibility();
  768.     end;
  769.     local v141 = p65.floors[p66];
  770.     game.Players.LocalPlayer.Character:SetPrimaryPartCFrame(CFrame.new(v141:WorldPositionFromVoxel(v141.floorTransitionXVoxel, 0, v141.floorTransitionZVoxel) + Vector3.new(0, 4, 0)));
  771.     if p65 == u1.Variables.MyBakery then
  772.         u1.Signal.Fire("PlayerFloorLevelChanged", p66);
  773.         local v142, v143, v144 = ipairs(p65.floors[p65.playerFloorLevel].customers);
  774.         while true do
  775.             v142(v143, v144);
  776.             if not v142 then
  777.                 break;
  778.             end;
  779.             v144 = v142;
  780.             v143:DisplayMyClothing(false);     
  781.         end;
  782.         local v145, v146, v147 = ipairs(v141.customers);
  783.         while true do
  784.             v145(v146, v147);
  785.             if not v145 then
  786.                 break;
  787.             end;
  788.             v147 = v145;
  789.             v146:DisplayMyClothing(true);      
  790.         end;
  791.     end;
  792. end;
  793. function v3.InitNPCs(p67)
  794.     local v148, v149, v150 = ipairs(p67.floors);
  795.     while true do
  796.         v148(v149, v150);
  797.         if not v148 then
  798.             break;
  799.         end;
  800.         local v151, v152, v153 = ipairs(v149.cooks);
  801.         while true do
  802.             v151(v152, v153);
  803.             if not v151 then
  804.                 break;
  805.             end;
  806.             v153 = v151;
  807.             v152:StartActionLoop();    
  808.         end;
  809.         local v154, v155, v156 = ipairs(v149.waiters);
  810.         while true do
  811.             v154(v155, v156);
  812.             if not v154 then
  813.                 break;
  814.             end;
  815.             v156 = v154;
  816.             v155:StartActionLoop();    
  817.         end;   
  818.     end;
  819. end;
  820. function v3.SeatQueuedCustomerGroup(p68, p69, p70)
  821.     if not p68.isOpen then
  822.         p68.customerQueue = {};
  823.         return;
  824.     end;
  825.     local v157 = nil;
  826.     local v158 = nil;
  827.     local v159, v160, v161 = ipairs(p68.customerQueue);
  828.     while true do
  829.         v159(v160, v161);
  830.         if not v159 then
  831.             break;
  832.         end;
  833.         local v162, v163, v164 = ipairs(v160);
  834.         while true do
  835.             v162(v163, v164);
  836.             if not v162 then
  837.                 break;
  838.             end;
  839.             v164 = v162;
  840.             if v163 == p69 then
  841.                 v157 = v160;
  842.                 v158 = v159;
  843.                 break;
  844.             end;       
  845.         end;
  846.         if v157 then
  847.             break;
  848.         end;   
  849.     end;
  850.     if not v157 then
  851.         u1.Print("CRITICAL: Queue group not found.: " .. p69.UID, true);
  852.         return;
  853.     end;
  854.     table.remove(p68.customerQueue, v158);
  855.     local v165, v166, v167 = ipairs(p68.customerQueue);
  856.     while true do
  857.         v165(v166, v167);
  858.         if not v165 then
  859.             break;
  860.         end;
  861.         v167 = v165;
  862.         local v168, v169, v170 = ipairs(v166);
  863.         while true do
  864.             v168(v169, v170);
  865.             if not v168 then
  866.                 break;
  867.             end;
  868.             v170 = v168;
  869.             v169.stateData.queuePosition = v165;       
  870.         end;   
  871.     end;
  872.     local v171, v172, v173 = ipairs(v157);
  873.     while true do
  874.         v171(v172, v173);
  875.         if not v171 then
  876.             break;
  877.         end;
  878.         v173 = v171;
  879.         v172:GoToTargetChair();
  880.     end;
  881. end;
  882. function v3.UpdateCustomerQueuePositioning(p71)
  883.     local v174 = p71.floors[1];
  884.     if #p71.customerQueue <= 1 then
  885.         return;
  886.     end;
  887.     local v175, v176, v177 = ipairs(p71.customerQueue);
  888.     while true do
  889.         v175(v176, v177);
  890.         if not v175 then
  891.             break;
  892.         end;
  893.         v177 = v175;
  894.         local v178, v179, v180 = ipairs(v176);
  895.         while true do
  896.             v178(v179, v180);
  897.             if not v178 then
  898.                 break;
  899.             end;
  900.             v180 = v178;
  901.             local v181, v182, v183 = p71:GetCustomerQueueVoxel(v178, v175, #v176);
  902.             v179:WalkToPointInQueue(v181, v182, v183, function()
  903.                 if not p71.isOpen then
  904.                     v179:ForcedToLeave();
  905.                     return;
  906.                 end;
  907.                 v179:SetCustomerState("WaitingForSeat");
  908.             end);      
  909.         end;   
  910.     end;
  911. end;
  912. function v3.GetCustomerQueueVoxel(p72, p73, p74, p75)
  913.     if p75 and p75 >= 4 then
  914.         p73 = p73 - 1;
  915.     end;
  916.     if p72.floors[1].isBiggerPlot then
  917.         local v184 = 16;
  918.     else
  919.         v184 = 14;
  920.     end;
  921.     if p72.baseOrientation == 0 then
  922.         return v184 / 2 - 1 + p73, 0, #p72.customerQueue - p74 + 1;
  923.     end;
  924.     if p72.baseOrientation == 90 then
  925.         return #p72.customerQueue - p74 + 1, 0, v184 / 2 + 2 - p73;
  926.     end;
  927.     if p72.baseOrientation == 180 then
  928.         return v184 / 2 + 2 - p73, 0, v184 - #p72.customerQueue + p74;
  929.     end;
  930.     return v184 - #p72.customerQueue + p74, 0, v184 / 2 + 2 - p73;
  931. end;
  932. function v3.GetCustomerStartVoxel(p76, p77, p78)
  933.     if p78 and p78 >= 4 then
  934.         p77 = p77 - 1;
  935.     end;
  936.     if p76.floors[1].isBiggerPlot then
  937.         local v185 = 16;
  938.     else
  939.         v185 = 14;
  940.     end;
  941.     if p76.baseOrientation == 0 then
  942.         return v185 / 2 - 1 + p77, 0, 1;
  943.     end;
  944.     if p76.baseOrientation == 90 then
  945.         return 1, 0, v185 - (v185 / 2 - 1 + p77) + 1;
  946.     end;
  947.     if math.abs(p76.baseOrientation) == 180 then
  948.         return v185 / 2 + 2 - p77, 0, v185;
  949.     end;
  950.     return v185, 0, v185 - (v185 / 2 - 1 + p77) + 1;
  951. end;
  952. local u8 = Random.new();
  953. function v3.AddCustomersToQueueIfNecessary(p79, p80, p81)
  954.     local function v186(p82, p83)
  955.         if p82.state ~= "WaitingForSeat" or p82.stateData.busyWalking then
  956.             if not p83 then
  957.                 u1.Audio.Play(5074110087, l__LocalPlayer__2.PlayerGui);
  958.             end;
  959.             return;
  960.         end;
  961.         p82:StopGroupEmoji();
  962.         p82:CleanupGroupInteract();
  963.         p79:SeatQueuedCustomerGroup(p82);
  964.         p79:UpdateCustomerQueuePositioning();
  965.         if not p83 then
  966.             u1.Audio.Play(5074101610, l__LocalPlayer__2.PlayerGui);
  967.         end;
  968.     end;
  969.     if #p79.customerQueue >= 4 then
  970.         return 0;
  971.     end;
  972.     local v187 = p79.floors[1];
  973.     local v188 = nil;
  974.     local v189 = nil;
  975.     local v190, v191, v192 = ipairs((u1.Functions.RandomIndices(u1.Variables.MyBakery.floors)));
  976.     while true do
  977.         v190(v191, v192);
  978.         if not v190 then
  979.             break;
  980.         end;
  981.         v192 = v190;
  982.         local v193, v194 = p79.floors[v191]:GetAvailableSeatGroupings();
  983.         v188 = v193;
  984.         v189 = v194;
  985.         if v188 and v189 then
  986.             break;
  987.         end;   
  988.     end;
  989.     if not v188 or not v189 then
  990.         if p80 then
  991.             local v195 = false;
  992.             local v196, v197, v198 = ipairs(p79.floors);
  993.             while true do
  994.                 v196(v197, v198);
  995.                 if not v196 then
  996.                     break;
  997.                 end;
  998.                 local v199, v200, v201 = ipairs(v197.customers);
  999.                 while true do
  1000.                     v199(v200, v201);
  1001.                     if not v199 then
  1002.                         break;
  1003.                     end;
  1004.                     v201 = v199;
  1005.                     if v200.state ~= "ReadyToExit" then
  1006.                         v200:ForcedToLeave();
  1007.                         v195 = true;
  1008.                         break;
  1009.                     end;               
  1010.                 end;
  1011.                 if v195 then
  1012.                     break;
  1013.                 end;           
  1014.             end;
  1015.         end;
  1016.         return 0;
  1017.     end;
  1018.     local v202 = {};
  1019.     local v203 = false;
  1020.     local v204 = {};
  1021.     local v205 = {};
  1022.     local v206 = {};
  1023.     local v207 = {};
  1024.     local v208 = {};
  1025.     local v209 = {};
  1026.     local v210 = {};
  1027.     local v211 = {};
  1028.     local v212 = {};
  1029.     local v213 = {};
  1030.     local v214 = false;
  1031.     local v215, v216, v217 = pairs(v189);
  1032.     while true do
  1033.         local v218, v219 = v215(v216, v217);
  1034.         if not v218 then
  1035.             break;
  1036.         end;
  1037.         local v220 = false;
  1038.         local v221 = false;
  1039.         local v222 = false;
  1040.         local v223 = false;
  1041.         local v224 = false;
  1042.         local v225 = false;
  1043.         local v226 = false;
  1044.         local v227 = false;
  1045.         local v228, v229, v230 = ipairs(p79.floors[v219.floorLevel]:GetEntitiesFromClassAndSubClass("Furniture", "ChristmasTree"));
  1046.         while true do
  1047.             v228(v229, v230);
  1048.             if not v228 then
  1049.                 break;
  1050.             end;
  1051.             v230 = v228;
  1052.             if math.sqrt(math.pow(v229.xVoxel - v219.xVoxel, 2) + math.pow(v229.zVoxel - v219.zVoxel, 2)) < 5.75685424949238 then
  1053.                 v212[v218] = true;
  1054.                 break;
  1055.             end;       
  1056.         end;
  1057.         local v231 = nil;
  1058.         if v219.ID == "43" and v188.ID == "44" then
  1059.             v220 = true;
  1060.             v231 = v219.UID;
  1061.         elseif v219.ID == "43" then
  1062.             v220 = u8:NextNumber() < 0.25;
  1063.             v231 = v219.UID;
  1064.         elseif v188.ID == "44" then
  1065.             v220 = u8:NextNumber() < 0.1;
  1066.             v231 = v188.UID;
  1067.         end;
  1068.         if v220 then
  1069.             p81[v218].ID = "13";
  1070.             v204[v218] = v231;
  1071.         end;
  1072.         if not v220 then
  1073.             if v219.ID == "98" and v188.ID == "99" then
  1074.                 v221 = true;
  1075.                 v231 = v219.UID;
  1076.             elseif v219.ID == "98" then
  1077.                 v221 = u8:NextNumber() < 0.25;
  1078.                 v231 = v219.UID;
  1079.             elseif v188.ID == "99" then
  1080.                 v221 = u8:NextNumber() < 0.1;
  1081.                 v231 = v188.UID;
  1082.             end;
  1083.             if v221 then
  1084.                 if math.random() < 0.005 then
  1085.                     p81[v218].ID = "25";
  1086.                     v207[v218] = v231;
  1087.                 else
  1088.                     p81[v218].ID = "26";
  1089.                     v208[v218] = v231;
  1090.                 end;
  1091.             end;
  1092.         end;
  1093.         if not v220 and not v221 then
  1094.             if v219.ID == "74" and v188.ID == "75" then
  1095.                 v222 = u8:NextNumber() < 0.2;
  1096.                 v231 = v219.UID;
  1097.             elseif v219.ID == "74" then
  1098.                 v222 = u8:NextNumber() < 0.1;
  1099.                 v231 = v219.UID;
  1100.             elseif v188.ID == "75" then
  1101.                 v222 = u8:NextNumber() < 0.05;
  1102.                 v231 = v188.UID;
  1103.             end;
  1104.             if v222 then
  1105.                 p81[v218].ID = "21";
  1106.                 v205[v218] = v231;
  1107.             end;
  1108.         end;
  1109.         if not v220 and not v222 and not v221 then
  1110.             if v219.ID == "84" and v188.ID == "85" then
  1111.                 v223 = u8:NextNumber() < 0.25;
  1112.                 v231 = v219.UID;
  1113.             elseif v219.ID == "84" then
  1114.                 v223 = u8:NextNumber() < 0.1;
  1115.                 v231 = v219.UID;
  1116.             elseif v188.ID == "85" then
  1117.                 v223 = u8:NextNumber() < 0.05;
  1118.                 v231 = v188.UID;
  1119.             end;
  1120.             if v223 then
  1121.                 p81[v218].ID = "22";
  1122.                 v206[v218] = v231;
  1123.             end;
  1124.         end;
  1125.         if not v220 and not v222 and not v221 and not v223 and v219.ID == "108" and u8:NextNumber() < 0.2 then
  1126.             v224 = true;
  1127.             v231 = v219.UID;
  1128.             p81[v218].ID = "27";
  1129.             v209[v218] = v231;
  1130.         end;
  1131.         if not v220 and not v222 and not v221 and not v223 and not v224 then
  1132.             if v219.ID == "110" and v188.ID == "111" then
  1133.                 v225 = u8:NextNumber() < 0.25;
  1134.                 v231 = v219.UID;
  1135.             elseif v219.ID == "110" then
  1136.                 v225 = u8:NextNumber() < 0.1;
  1137.                 v231 = v219.UID;
  1138.             elseif v188.ID == "111" then
  1139.                 v225 = u8:NextNumber() < 0.05;
  1140.                 v231 = v188.UID;
  1141.             end;
  1142.             if v225 then
  1143.                 p81[v218].ID = "28";
  1144.                 v210[v218] = v231;
  1145.             end;
  1146.         end;
  1147.         if not v220 and not v222 and not v221 and not v223 and not v224 and not v225 then
  1148.             if v219.ID == "118" and v188.ID == "119" then
  1149.                 v226 = u8:NextNumber() < 0.2;
  1150.                 v231 = v219.UID;
  1151.             elseif v219.ID == "118" then
  1152.                 v226 = u8:NextNumber() < 0.1;
  1153.                 v231 = v219.UID;
  1154.             elseif v188.ID == "119" then
  1155.                 v226 = u8:NextNumber() < 0.05;
  1156.                 v231 = v188.UID;
  1157.             end;
  1158.             if v226 then
  1159.                 p81[v218].ID = "29";
  1160.                 v211[v218] = v231;
  1161.             end;
  1162.         end;
  1163.         if not v220 and not v222 and not v221 and not v223 and not v224 and not v225 and not v226 then
  1164.             if v219.ID == "120" and v188.ID == "121" then
  1165.                 v227 = u8:NextNumber() < 0.05;
  1166.                 v231 = v219.UID;
  1167.             elseif v219.ID == "120" then
  1168.                 v227 = u8:NextNumber() < 0.01;
  1169.                 v231 = v219.UID;
  1170.             elseif v188.ID == "121" then
  1171.                 v227 = u8:NextNumber() < 0.01;
  1172.                 v231 = v188.UID;
  1173.             end;
  1174.             if v227 then
  1175.                 p81[v218].ID = "30";
  1176.                 v213[v218] = v231;
  1177.             end;
  1178.         end;
  1179.         local v232, v233, v234 = p79:GetCustomerStartVoxel(v218, #v189);
  1180.         local v235, v236, v237 = p79:GetCustomerQueueVoxel(v218, -5, #v189);
  1181.         local v238 = u1.Customer.CreateRandomCustomer(p81[v218], v232, v233, v234);
  1182.         local v239 = v187:WorldPositionFromVoxel(v232, v233, v234);
  1183.         local v240 = v187:WorldPositionFromVoxel(v235, v236, v237);
  1184.         v238.stateData.seatUID = v219.UID;
  1185.         v238.stateData.tableUID = v188.UID;
  1186.         v238.stateData.queuePosition = #p79.customerQueue + 1;
  1187.         v238.isNearTree = v212[v218] ~= nil;
  1188.         v238:SetVoxelPosition(p79:GetCustomerStartVoxel(v218, #v189));
  1189.         if v238:BelongsToMyBakery() then
  1190.             if #v189 % 2 == 0 then
  1191.                 v238.model:SetPrimaryPartCFrame(CFrame.new(v239 + Vector3.new(0, 2, 0), v240));
  1192.             elseif #v189 == 1 then
  1193.                 v238.model:SetPrimaryPartCFrame(CFrame.new((CFrame.new(v239 + Vector3.new(0, 2, 0)) * CFrame.Angles(0, p79.baseAngle, 0) * CFrame.new(2, 0, 0)).p, (CFrame.new(v240) * CFrame.Angles(0, p79.baseAngle, 0) * CFrame.new(2, 0, 0)).p));
  1194.             elseif #v189 == 3 then
  1195.                 v238.model:SetPrimaryPartCFrame(CFrame.new((CFrame.new(v239 + Vector3.new(0, 2, 0)) * CFrame.Angles(0, p79.baseAngle, 0) * CFrame.new(-2, 0, 0)).p, (CFrame.new(v240) * CFrame.Angles(0, p79.baseAngle, 0) * CFrame.new(-2, 0, 0)).p));
  1196.             end;
  1197.         end;
  1198.         if u1.PlayerSettings.GetSetting("Notifications") == "Enabled" then
  1199.             if v238.ID == "25" and not v203 then
  1200.                 v203 = true;
  1201.                 u1.SFX.Play(5839736886, l__LocalPlayer__2.PlayerGui, nil, 1);
  1202.                 u1.Alert.SilentMessage("The <t=black><c=yellow>Headless Horseman<t=/><c=/> has entered your restaurant!");
  1203.             end;
  1204.             if v238.ID == "29" and not v203 then
  1205.                 v203 = true;
  1206.                 u1.SFX.Play(10244075016, l__LocalPlayer__2.PlayerGui);
  1207.                 u1.Alert.SilentMessage("A <t=black><c=yellow>Lifeguard<t=/><c=/> has entered your restaurant!");
  1208.             end;
  1209.             if v238.ID == "27" and not v203 then
  1210.                 v203 = true;
  1211.                 u1.SFX.Play(6106142958, l__LocalPlayer__2.PlayerGui);
  1212.                 u1.Alert.SilentMessage("<t=black><c=yellow>Santa<t=/><c=/> has entered your restaurant!");
  1213.             end;
  1214.             if v238.ID == "13" and not v203 then
  1215.                 v203 = true;
  1216.                 u1.SFX.Play(5174014731, l__LocalPlayer__2.PlayerGui);
  1217.                 u1.Alert.SilentMessage("A <t=black><c=yellow>VIP Customer<t=/><c=/> has entered your restaurant!");
  1218.             end;
  1219.             if v238.ID == "20" and not v203 then
  1220.                 v203 = true;
  1221.                 u1.SFX.Play(5278932246, l__LocalPlayer__2.PlayerGui);
  1222.                 u1.Alert.SilentMessage("A <t=black><c=yellow>Celebrity<t=/><c=/> has entered your restaurant!");
  1223.             end;
  1224.             if v238.ID == "21" and not v203 then
  1225.                 v203 = true;
  1226.                 u1.SFX.Play(5601560215, l__LocalPlayer__2.PlayerGui, nil, 0.25);
  1227.                 u1.Alert.SilentMessage("A <t=black><c=yellow>Pirate<t=/><c=/> has entered your restaurant!");
  1228.             end;
  1229.             if v238.ID == "22" and not v203 then
  1230.                 v203 = true;
  1231.                 u1.SFX.Play(5625433365, l__LocalPlayer__2.PlayerGui, nil, 0.25);
  1232.                 u1.Alert.SilentMessage("A <t=black><c=yellow>Youtuber<t=/><c=/> has entered your restaurant!");
  1233.             end;
  1234.             if v238.ID == "26" and not v203 then
  1235.                 v203 = true;
  1236.                 u1.SFX.Play(5839737683, l__LocalPlayer__2.PlayerGui, nil, 0.25);
  1237.                 u1.Alert.SilentMessage("A <t=black><c=yellow>Haunted VIP Customer<t=/><c=/> has entered your restaurant!");
  1238.             end;
  1239.             if v238.ID == "30" and not v203 then
  1240.                 v203 = false;
  1241.                 u1.SFX.Play(12732648984, l__LocalPlayer__2.PlayerGui, nil, 0.25);
  1242.                 u1.Alert.SilentMessage("An <t=black><c=yellow>Alien<t=/><c=/> has entered your restaurant!");
  1243.             end;
  1244.         end;
  1245.         if v238.ID == "14" or v238.ID == "15" then
  1246.             v214 = true;
  1247.         end;
  1248.         v238.model.Parent = v238.cachedParent;
  1249.         v238:FadeTransparency(v238:GetMyTransparency());
  1250.         u1.Replication.SendEvent("CustomerCreated", v238:ToUIDData());
  1251.         if p79.isTutorial then
  1252.             table.insert(p79.tutorial.firstCustomerWave, v238);
  1253.             p79.tutorial.hasAllowedFirstWaveOfCustomers = true;
  1254.         end;
  1255.         v219:SetIsOccupied(v238);
  1256.         v188:AddCustomerAtTable(v238);
  1257.         v238:Emoji("WaitingForSeat", true);
  1258.         if u1.Gamepasses.Owns(151243806) then
  1259.             task.spawn(function()
  1260.                 task.wait(0.5);
  1261.                 v186(v238, true);
  1262.             end);
  1263.         else
  1264.             v238:Interact(function()
  1265.                 v186(v238);
  1266.             end);
  1267.         end;
  1268.         if v238.ID == "20" then
  1269.             u1.Variables.MyBakery.activeCelebrity = true;
  1270.         end;
  1271.         table.insert(v202, v238);  
  1272.     end;
  1273.     local v241, v242, v243 = ipairs(v202);
  1274.     while true do
  1275.         v241(v242, v243);
  1276.         if not v241 then
  1277.             break;
  1278.         end;
  1279.         v243 = v241;
  1280.         v242.stateData.queueGroup = {};
  1281.         local v244, v245, v246 = ipairs(v202);
  1282.         while true do
  1283.             v244(v245, v246);
  1284.             if not v244 then
  1285.                 break;
  1286.             end;
  1287.             v246 = v244;
  1288.             if v242 ~= v245 then
  1289.                 table.insert(v242.stateData.queueGroup, v245);
  1290.             end;       
  1291.         end;   
  1292.     end;
  1293.     table.insert(p79.customerQueue, v202);
  1294.     if not v214 then
  1295.         p79:UpdateCustomerQueuePositioning();
  1296.     else
  1297.         v186(v202[1], true);
  1298.     end;
  1299.     return #v189, v204, v205, v206, v207, v208, v209, v210, v212, v211, v213;
  1300. end;
  1301. function v3.RunDay(p84)
  1302.     u1.Network.Fired("BakeryExperienceUpdated"):Connect(function(p85)
  1303.         p84.experience = p85;
  1304.     end);
  1305. end;
  1306. u1.Network.Fired("SendCustomerUIDBatchToClient"):Connect(function(p86, p87)
  1307.     local function v247(p88, ...)
  1308.         u1.Network.Fire("SendCustomerUIDBatchToServer", p86, p88, ...);
  1309.     end;
  1310.     local l__MyBakery__248 = u1.Variables.MyBakery;
  1311.     if not l__MyBakery__248 or not l__MyBakery__248.isOpen then
  1312.         return v247(0);
  1313.     end;
  1314.     if l__MyBakery__248.isTutorial and not l__MyBakery__248.tutorial.readyForFirstWaveOfCustomers then
  1315.         v247(0);
  1316.         return;
  1317.     end;
  1318.     if l__MyBakery__248.isTutorial and l__MyBakery__248.tutorial.hasAllowedFirstWaveOfCustomers then
  1319.         v247(0);
  1320.         return;
  1321.     end;
  1322.     local v249, v250, v251, v252, v253, v254, v255, v256, v257, v258, v259 = l__MyBakery__248:AddCustomersToQueueIfNecessary(false, p87);
  1323.     v247(v249, v250, v251, v252, v253, v254, v255, v256, v257, v258, v259);
  1324. end);
  1325. function v3.CleanupReplication(p89)
  1326.     local v260, v261, v262 = ipairs(p89.floors);
  1327.     while true do
  1328.         v260(v261, v262);
  1329.         if not v260 then
  1330.             break;
  1331.         end;
  1332.         v262 = v260;
  1333.         if v261.transitionPad then
  1334.             v261.transitionPad:Destroy();
  1335.         end;   
  1336.     end;
  1337.     local v263 = 0;
  1338.     local v264, v265, v266 = pairs(p89.Entities);
  1339.     while true do
  1340.         local v267, v268 = v264(v265, v266);
  1341.         if not v267 then
  1342.             break;
  1343.         end;
  1344.         if v268.className == "Customer" and v268.stateData and v268.stateData.foodOrder then
  1345.             if v268.stateData.foodOrder.model then
  1346.                 v268.stateData.foodOrder.model:Destroy();
  1347.             end;
  1348.             if v268.stateData.foodOrder.moneyModel then
  1349.                 v268.stateData.foodOrder.moneyModel:Destroy();
  1350.             end;
  1351.         end;
  1352.         v268:Cleanup();
  1353.         v263 = v263 + 1;
  1354.         if v263 % 200 == 0 then
  1355.             wait();
  1356.         end;   
  1357.     end;
  1358. end;
  1359. function v3.DestroyBakery(p90)
  1360.     p90:CleanupReplication();
  1361.     p90.container:Destroy();
  1362.     v3.AllBakeries[p90.UID] = nil;
  1363. end;
  1364. u1.Network.Fired("GetBakeryOpenStatusFromPlayer"):Connect(function()
  1365.     local l__MyBakery__269 = u1.Variables.MyBakery;
  1366.     if not l__MyBakery__269 then
  1367.         return;
  1368.     end;
  1369.     wait(0.5);
  1370.     l__MyBakery__269:SetOpenStatus(l__MyBakery__269.isOpen);
  1371. end);
  1372. return v3;
  1373.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement