parent
80748476de
commit
0d4fe92a90
4 changed files with 64 additions and 1 deletions
|
@ -17,6 +17,7 @@ function CharacterData:getData()
|
|||
data.hp = self.hp
|
||||
data.pp = self.pp
|
||||
data.statuts = self.statuts
|
||||
data.equip = self.equip
|
||||
|
||||
return data
|
||||
end
|
||||
|
@ -33,6 +34,8 @@ function CharacterData:setData(data)
|
|||
self.hp = data.hp
|
||||
self.pp = data.pp
|
||||
self.statuts = data.statuts
|
||||
|
||||
self.equip = data.equip or {}
|
||||
end
|
||||
|
||||
return CharacterData
|
||||
|
|
52
sonic-radiance.love/game/abstractmobs/character/equip.lua
Normal file
52
sonic-radiance.love/game/abstractmobs/character/equip.lua
Normal file
|
@ -0,0 +1,52 @@
|
|||
local CharacterEquip = Object:extend()
|
||||
local itemutils = require "game.utils.items"
|
||||
|
||||
local categories = {"gloves", "shoes", "accessories"}
|
||||
|
||||
function CharacterEquip:initEquip()
|
||||
self.equip = {}
|
||||
if self.data.inventory == nil then
|
||||
core.debug:warning("character/equip", "Initial equip not set for " .. self.simplename)
|
||||
for _, category in ipairs(categories) do
|
||||
self.equip[category] = ""
|
||||
end
|
||||
else
|
||||
for _, category in ipairs(categories) do
|
||||
self.equip[category] = self.data.inventory[category] or ""
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function CharacterEquip:setEquip(category, name)
|
||||
if (not utils.string.isEmpty(self.equip[category])) then
|
||||
game.loot:addItem(category, self.equip[category])
|
||||
end
|
||||
self.equip[category] = name
|
||||
game.loot:removeItem(category, name)
|
||||
end
|
||||
|
||||
function CharacterEquip:predictStat(category, name)
|
||||
|
||||
end
|
||||
|
||||
function CharacterEquip:getEquipStats(stat, ignore)
|
||||
local boost = 0
|
||||
local ignore = ignore or ""
|
||||
for _, category in ipairs(categories) do
|
||||
if (category ~= ignore) then
|
||||
boost = boost + self:getStatByType(stat, category)
|
||||
end
|
||||
end
|
||||
return boost
|
||||
end
|
||||
|
||||
function CharacterEquip:getStatByType(stat, category)
|
||||
if (not utils.string.isEmpty(self.equip[category])) then
|
||||
local data = itemutils.getItemData(category, self.equip[category])
|
||||
local boost = data.statsBoost[stat] or 0
|
||||
return boost
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
return CharacterEquip
|
|
@ -4,9 +4,11 @@ local AbstractCharacter = AbstractMobParent:extend()
|
|||
local CharacterHealth = require "game.abstractmobs.character.health"
|
||||
local CharacterLevels = require "game.abstractmobs.character.levels"
|
||||
local CharacterDatas = require "game.abstractmobs.character.datas"
|
||||
local CharacterEquip = require "game.abstractmobs.character.equip"
|
||||
AbstractCharacter:implement(CharacterHealth)
|
||||
AbstractCharacter:implement(CharacterLevels)
|
||||
AbstractCharacter:implement(CharacterDatas)
|
||||
AbstractCharacter:implement(CharacterEquip)
|
||||
|
||||
function AbstractCharacter:new(name)
|
||||
self.simplename = name
|
||||
|
@ -15,6 +17,7 @@ end
|
|||
|
||||
function AbstractCharacter:initBasicElements()
|
||||
self:getCommonData()
|
||||
self:initEquip()
|
||||
self:initLevel()
|
||||
end
|
||||
|
||||
|
@ -28,6 +31,11 @@ function AbstractCharacter:createStats()
|
|||
return stats
|
||||
end
|
||||
|
||||
function AbstractCharacter:getStat(statName, ignoreEquip)
|
||||
local stat = self:getComputedStat(statName) + self:getEquipStats(statName, ignoreEquip)
|
||||
return stat
|
||||
end
|
||||
|
||||
function AbstractCharacter:createSkills()
|
||||
local learnedlist = {}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ function CharacterLevel:levelUp()
|
|||
self:setLevel(self.level + 1)
|
||||
end
|
||||
|
||||
function CharacterLevel:getStat(statname)
|
||||
function CharacterLevel:getComputedStat(statname)
|
||||
local baseStat = self.data.stats[statname]
|
||||
if (baseStat == nil) then
|
||||
error("Stat " .. statname .. " doesn't exist")
|
||||
|
|
Loading…
Reference in a new issue