I want to create a cooking system where if its the food, lets a say a steak in this example, has different results based on how long its in there such as
5 seconds
Rare
10 seconds
Medium Rare
15 seconds
Well done
and at any moment the user can press a button which ends the timer and does something with the rarity of the steak
local FoodClass = {};
FoodClass.__index = FoodClass;
function FoodClass:Cook()
self.Cooking = true;
self.CookingBeginTick = tick();
end
function FoodClass:EndCook()
if self.Cooking == false then return end;
if not self.CookingBeginTick then return end;
self.Cooking = false;
local CookTime = tick() - self.CookingBeginTick;
if CookTime > 5 then
self.Status = 'Rare'
elseif CookTime > 10 then
self.Status = 'Medium Rare'
elseif CookTime > 15 then
self.Status = 'Well Done'
elseif CookTime > 20 then
self.Status = 'Burn'
end
self.CookingBeginTick = nil;
end
function FoodClass.New(Name, Status)
local self = {
__index = FoodClass;
Name = Name;
Status = Status;
Cooking = false;
}
setmetatable(self, FoodClass)
return self
end
return FoodClass;
Now you can utilize this class
local FoodClass = require() -- Require Module Here
-- Create Food Item
local FoodItem = FoodClass.New('Steak', 'Raw')
FoodItem:Cook()
wait(15)
FoodItem:EndCook()
print(FoodItem.Status) ---> Prints 'Well Done'
You can use an OOP approach (what I did above) to script this cooking system. It’s what I would recommend in general. You can make it its more customizable (right now I just did the basics, feel free to add on).