-- spells container file local _detalhes = _G._detalhes local _ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers local _setmetatable = setmetatable --lua local ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --constants local container_playernpc = _detalhes.container_type.CONTAINER_PLAYERNPC local container_damage = _detalhes.container_type.CONTAINER_DAMAGE_CLASS local container_heal = _detalhes.container_type.CONTAINER_HEAL_CLASS local container_heal_target = _detalhes.container_type.CONTAINER_HEALTARGET_CLASS local container_friendlyfire = _detalhes.container_type.CONTAINER_FRIENDLYFIRE local container_damage_target = _detalhes.container_type.CONTAINER_DAMAGETARGET_CLASS local container_energy = _detalhes.container_type.CONTAINER_ENERGY_CLASS local container_energy_target = _detalhes.container_type.CONTAINER_ENERGYTARGET_CLASS local container_misc = _detalhes.container_type.CONTAINER_MISC_CLASS local container_misc_target = _detalhes.container_type.CONTAINER_MISCTARGET_CLASS local habilidade_dano = _detalhes.habilidade_dano local habilidade_cura = _detalhes.habilidade_cura local habilidade_e_energy = _detalhes.habilidade_e_energy local habilidade_misc = _detalhes.habilidade_misc local container_habilidades = _detalhes.container_habilidades ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --internals function container_habilidades:NovoContainer (tipo_do_container) local _newContainer = { funcao_de_criacao = container_habilidades:FuncaoDeCriacao (tipo_do_container), tipo = tipo_do_container, _ActorTable = {} } _setmetatable(_newContainer, container_habilidades) return _newContainer end function container_habilidades:GetSpell (id) return self._ActorTable [id] end function container_habilidades:GetAmount (id, key) local spell = self._ActorTable [id] if (spell) then return spell [key] end end function container_habilidades:ListActors() return pairs(self._ActorTable) end function container_habilidades:GetOrCreateSpell(id, shouldCreate, token) return self:PegaHabilidade (id, shouldCreate, token) end function container_habilidades:PegaHabilidade (id, criar, token) local esta_habilidade = self._ActorTable [id] if (esta_habilidade) then return esta_habilidade else if (criar) then local novo_objeto = self.funcao_de_criacao (nil, id, nil, token) self._ActorTable [id] = novo_objeto return novo_objeto else return nil end end end function container_habilidades:FuncaoDeCriacao (tipo) if (tipo == container_damage) then return habilidade_dano.NovaTabela elseif (tipo == container_heal) then return habilidade_cura.NovaTabela elseif (tipo == container_energy) then return habilidade_e_energy.NovaTabela elseif (tipo == container_misc) then return habilidade_misc.NovaTabela end end function _detalhes.refresh:r_container_habilidades (container, shadow) --reconstr�i meta e indexes _setmetatable(container, _detalhes.container_habilidades) container.__index = _detalhes.container_habilidades local func_criacao = container_habilidades:FuncaoDeCriacao (container.tipo) container.funcao_de_criacao = func_criacao end function _detalhes.clear:c_container_habilidades (container) --container.__index = {} container.__index = nil container.shadow = nil container.funcao_de_criacao = nil end