Requirements table?

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?

Thank you!

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)

something like this?

1 Like

Yes - Thank you!
How would I implement this into working out IF the item has been given or if the Monster reaches a certain Level?

Thank you for this!

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)

I might write somewhere wrong cuz on phone rn

1 Like