Is there a more way to make this upgrade stats module

Stats.Cam = {
		["Level 0, 0"] = {
			["Dmg"] = 1,
			["Attack"] = 2.5,
			["Range"] = 15,
			["Cost"] = 250,},
			
		["Level 1, 0"] = {
			["Dmg"] = 2,
			["Attack"] = 2,
			["Range"] = 15,
			["Cost"] = 300,},
			
		["Level 2, 0"] = {
			["Dmg"] = 3,
			["Attack"] = 1.5,
			["Range"] = 15,
			["Cost"] = 350,},
			
		["Level 3, 0"] = {
			["Dmg"] = 4,
			["Attack"] = 1,
			["Range"] = 15,
			["Cost"] = 400,},
			
		["Level 0, 1"] = {
			["Dmg"] = 1,
			["Attack"] = 2.5,
			["Range"] = 20,
			["Cost"] = 250,},
			
		["Level 0, 2"] = {
			["Dmg"] = 1,
			["Attack"] = 2.5,
			["Range"] = 25,
			["Cost"] = 300,},
			
		["Level 0, 3"] = {
			["Dmg"] = 1,
			["Attack"] = 2.5,
			["Range"] = 30,
			["Cost"] = 400,},
			
		["Level 1, 1"] = {
			["Dmg"] = 2,
			["Attack"] = 2,
			["Range"] = 20,
			["Cost"] = 250,},
			
		["Level 2, 2"] = {
			["Dmg"] = 3,
			["Attack"] = 1.5,
			["Range"] = 25,
			["Cost"] = 300,},
			
		["Level 3, 3"] = {
			["Dmg"] = 4,
			["Attack"] = 1,
			["Range"] = 30,
			["Cost"] = 400,},
		}
1 Like

What do you mean by upgrading it?

tower defense you have 2 upgrade paths that 1 for range and 1 for dmg thats what I mean by upgrading.

You could ditch the large table an make a function that uses math to calculate the stats.

How would I do that? And would it be easy to change later on? For game nufs or buffs?

function CalculateStats(FirstLevel, SecondLevel)
	local Data = {
		FirstStat = 1+FirstLevel,
		SecondStat = 1+SecondLevel
	}
	return Data
end

Here is some example code as to what I mean, this is very easy to change in the future.

2 Likes

Ok thats exactly what I needed thanks!

I dont see how I can add five to the range if the level is 3.

function TowerStats.CalcDar(Dmg, Range)
		local Stats = {
			Dmg = 1+Dmg,
			Attck = 3.5-Dmg,
			Range = 15+Range
		}
	end

Do this, Range = 15+(Range*5)
this will solve your issue I hope as it uses multiplication to solve the problem.

Ok, Thanks for help also is it better to do this,

	function TowerStats.CalcDar(Dmg, Range)
		local Stats = {
			{Dmg = 0+Dmg},
			{Attck = 3-Dmg},
			{Range = 15+Range},
			{Cost = 100*Range*Dmg}
		}
		return Stats
	end

or the orignal?

The original will make it so that when you do
local Stats = TowerStats.CalcDar(Dmg, Range) you can do
Stats.Dmg
Stats.Attck
Stats.Range
Stats.Cost
Compared to having to do Stats[0].Dmg and Stats[1].Attck There is no need to put them in a table.

1 Like

Ok makes sense, I was a bit confused but thanks for clarification.