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