I’m working on a Monster-Capturing game ( No, not that one! )
I’m struggling to create a method of Evolution? I.e. how would I store requirements in a table for the individual to evolve into the next form and how would I go about checking this in a function?
llocal MonsterDataList = {
["Yellow Lightning Fox"] = { --< Monster type
["Baby"] = { -- Form Type
EvoRequire = { -- Item for evolve
["Storm Stone"] = 5,
["Yummy Food"] = 3
},
EvoTo = "Mature", -- Next Evo Form
Health = 15,
Speed = 5,
},
["Mature"] = { -- Form Type
EvoRequire = {}, -- Item for evolve
EvoTo = true, -- true == Max Evo
Health = 25,
Speed = 5.2,
},
["Special"] = { -- Form Type
EvoRequire = {}, -- Item for evolve
EvoTo = false, -- false == No Evo
Health = 22,
Speed = 7,
},
},
}
function GetMonsterForm(MonsterData)
local MonsterDatastorage = MonsterDataList[MonsterData[1]]
if MonsterDatastorage then
return MonsterDatastorage[MonsterData[2]] or false -- Return Monster form data or false
end
end
local PlayerMonsterData = { -- This is player monster data
"Lightning Fox", -- Monster name
"Baby", -- Monster form
}
local myMonsterForm = GetMonsterForm(PlayerMonsterData) -- Get Monster form
print(myMonsterForm)
It depend on how u working on it but check if player have require item like
local MonsterDataList = {
["Yellow Lightning Fox"] = { --< Monster type
["Baby"] = { -- Form Type
EvoRequire = { -- Item for evolve
["Storm Stone"] = 5,
["Yummy Food"] = 3
},
LevelRequireToEvo = 10,
EvoTo = "Mature", -- Next Evo Form
Health = 15,
Speed = 5,
},
["Mature"] = { -- Form Type
EvoRequire = {}, -- Item for evolve
EvoTo = true, -- true == Max Evo
Health = 25,
Speed = 5.2,
},
["Special"] = { -- Form Type
EvoRequire = {}, -- Item for evolve
EvoTo = false, -- false == No Evo
Health = 22,
Speed = 7,
},
},
}
function GetMonsterForm(MonsterData)
local MonsterDatastorage = MonsterDataList[MonsterData[1]]
if MonsterDatastorage then
return MonsterDatastorage[MonsterData[2]] or false -- Return Monster form data or false
end
end
local PlayerInventory = { -- Item storage table
["Storm Stone"] = 10,
["Yummy Food"] = 10,
}
local PlayerMonsterInventory = { -- This is player monster storage table
{ -- Monster Data
"Yellow Lightning Fox", -- Monster name
"Baby", -- Monster form
11 -- Monster level
},
}
function CheckMonsterEvolve(Inventory, UserMonsterData)
local MonsterDatastorage = GetMonsterForm(UserMonsterData)
if not MonsterDatastorage then
return false -- Can't find monster type or monster form
elseif MonsterDatastorage.EvoTo == false then
return false -- Monster don't have evo
elseif MonsterDatastorage.EvoTo == true then
return false -- Monster already at max evo
elseif MonsterDatastorage["LevelRequireToEvo"] and UserMonsterData[3] <= MonsterDatastorage["LevelRequireToEvo"] then
return false -- Monster don't reach enough level to evo
end
for item, value in MonsterDatastorage.EvoRequire do
if not Inventory[item] then
return false -- Player don't have require item
elseif Inventory[item] < value then
return false -- Player have item but don't have enough
end
end
return true
end
local monsterData = PlayerMonsterInventory[1] -- Get the first Monster in player inventory
local canEvo = CheckMonsterEvolve(PlayerInventory, monsterData) -- Checking if monster can evo or not
print(canEvo)