parent
edad87b41f
commit
b90a255d03
@ -0,0 +1,82 @@ |
||||
-- __ _ _______ _ __ |
||||
-- / / /\ | | |__ __| | | \ \ |
||||
-- / / / \ | |_ __ ___ | | ___ ___| |__ \ \ |
||||
-- < < / /\ \ | | '_ ` _ \| |/ _ \/ __| '_ \ > > |
||||
-- \ \ / ____ \| | | | | | | | __/ (__| | | | / / |
||||
-- \_\ /_/ \_\_|_| |_| |_|_|\___|\___|_| |_| /_/ |
||||
|
||||
Quantum.Recipe = {} |
||||
|
||||
Quantum.Recipes = {} |
||||
|
||||
function Quantum.Recipe.Add( itemid, station, tbl ) |
||||
if( Quantum.Item.Get( itemid ) == nil ) then return end |
||||
|
||||
local returnTbl = { |
||||
name = tbl.name || "Secret Recipe" -- name of the recipe |
||||
station = station, |
||||
creates = itemid -- what the recipe creates |
||||
amount = tbl.amount -- how much you get from 1 craft |
||||
recipe = tbl.recipe || {} |
||||
} |
||||
|
||||
Quantum.Recipes[ itemid ] = returnTbl |
||||
|
||||
return returnTbl |
||||
end |
||||
|
||||
function Quantum.Recipe.Get( itemid ) |
||||
return Quantum.Recipes[itemid] |
||||
end |
||||
|
||||
function Quantum.Recipe.GetAvailableAmountForReq( recipe, pos, inv ) |
||||
if( inv != nil ) then |
||||
return Quantum.Server.Inventory.GetItemAmount( nil, recipe[pos].item, inv ) |
||||
end |
||||
end |
||||
|
||||
function Quantum.Recipe.GetNeededAmountForReq( recipe, pos, inv ) |
||||
if( inv != nil ) then |
||||
return Quantum.Recipe.GetAvailableAmountForReq( recipe, pos, inv ) - recipe[pos].amount |
||||
end |
||||
end |
||||
|
||||
local function canMakeReq( diff ) return diff >= 0 end |
||||
|
||||
function Quantum.Recipe.CanMake( inv, itemid ) |
||||
if( inv != nil && itemid != nil ) then |
||||
|
||||
local recipeTbl = Quantum.Recipe.Get( itemid ) |
||||
local rTbl = recipeTbl.recipe |
||||
|
||||
local canMake = {} |
||||
local failedReq = {} |
||||
|
||||
for i, req in pairs( rTbl ) do |
||||
canMake[i] = canMakeReq( Quantum.Recipe.GetNeededAmountForReq( rTbl, i, inv ) ) |
||||
if( !canMake[i] ) then |
||||
failedReq[i] = req.item |
||||
end |
||||
end |
||||
|
||||
return #failedReq <= 0, failedReq |
||||
|
||||
end |
||||
end |
||||
|
||||
function Quantum.Recipe.MakeItem( pl, itemid ) |
||||
local recipe = Quantum.Recipe.Get( itemid ) |
||||
local char = Quantum.Server.Char.GetCurrentCharacter( pl ) |
||||
local inv = Quantum.Server.Char.GetInventory( char ) |
||||
|
||||
if( recipe != nil ) then |
||||
local canMake, failedReq = Quantum.Recipe.CanMake( inv, itemid ) |
||||
|
||||
if( canMake ) then |
||||
-- create item |
||||
else |
||||
-- Dont make the item |
||||
return |
||||
end |
||||
end |
||||
end |
Loading…
Reference in new issue