--[[
    lama is a MUD server made in Lua.
    Copyright (C) 2013 Curtis Erickson

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
]]

--- Cloneable that holds data for classifying mobs.
-- @author milkmanjack
module("obj.Classification", package.seeall)

local Cloneable						= require("obj.Cloneable")

--- Cloneable that holds data for classifying mobs.
-- @class table
-- @name Classification
-- @field id ID of the classification.
-- @field name Name of the classification.
local Classification				= Cloneable.clone()
Classification.id					= 0
Classification.name					= "classification"
Classification.who					= "Classification"

-- resources
Classification.baseHealth			= 0
Classification.healthPerLevel		= 0
Classification.baseMana				= 0
Classification.manaPerLevel			= 0
Classification.baseMoves			= 0
Classification.movesPerLevel		= 0

-- secondary attributes
Classification.baseStrength			= 0
Classification.strengthPerLevel		= 0
Classification.baseAgility			= 0
Classification.agilityPerLevel		= 0
Classification.baseDexterity		= 0
Classification.dexterityPerLevel	= 0
Classification.baseConstitution		= 0
Classification.constitutionPerLevel	= 0
Classification.baseIntelligence		= 0
Classification.intelligencePerLevel	= 0

function Classification:getID()
	return self.id
end

function Classification:getName()
	return self.name
end

function Classification:getWho()
	return self.who
end

function Classification:getBaseHealth()
	return self.baseHealth
end

function Classification:getHealthPerLevel()
	return self.healthPerLevel
end

function Classification:getHealthForLevel(level)
	return self:getBaseHealth() + self:getHealthPerLevel() * (level-1)
end

function Classification:getBaseMana()
	return self.baseMana
end

function Classification:getManaPerLevel()
	return self.manaPerLevel
end

function Classification:getManaForLevel(level)
	return self:getBaseMana() + self:getManaPerLevel() * (level-1)
end

function Classification:getBaseMoves()
	return self.baseMoves
end

function Classification:getMovesPerLevel()
	return self.movesPerLevel
end

function Classification:getMovesForLevel(level)
	return self:getBaseMoves() + self:getMovesPerLevel() * (level-1)
end

function Classification:getBaseStrength()
	return self.baseStrength
end

function Classification:getStrengthPerLevel()
	return self.strengthPerLevel
end

function Classification:getStrengthForLevel(level)
	return self:getBaseStrength() + self:getStrengthPerLevel() * (level-1)
end

function Classification:getBaseAgility()
	return self.baseAgility
end

function Classification:getAgilityPerLevel()
	return self.agilityPerLevel
end

function Classification:getAgilityForLevel(level)
	return self:getBaseAgility() + self:getAgilityPerLevel() * (level-1)
end

function Classification:getBaseDexterity()
	return self.baseDexterity
end

function Classification:getDexterityPerLevel()
	return self.dexterityPerLevel
end

function Classification:getDexterityForLevel(level)
	return self:getBaseDexterity() + self:getDexterityPerLevel() * (level-1)
end

function Classification:getBaseConstitution()
	return self.baseConstitution
end

function Classification:getConstitutionPerLevel()
	return self.constitutionPerLevel
end

function Classification:getConstitutionForLevel(level)
	return self:getBaseConstitution() + self:getConstitutionPerLevel() * (level-1)
end

function Classification:getBaseIntelligence()
	return self.baseIntelligence
end

function Classification:getIntelligencePerLevel()
	return self.intelligencePerLevel
end

function Classification:getIntelligenceForLevel(level)
	return self:getBaseIntelligence() + self:getIntelligencePerLevel() * (level-1)
end

return Classification