PetModel = PetModel or BaseClass(BaseVo, true)
|
|
local PetModel = PetModel
|
|
|
|
function PetModel:__init()
|
|
PetModel.Instance = self
|
|
self:Reset()
|
|
end
|
|
|
|
function PetModel:Reset()
|
|
self.pet_cfg = {} --宠物基础配置信息
|
|
self.pet_upgrade_cfg = {} --宠物升级配置信息
|
|
self.pet_story_cfg = {} --宠物故事配置信息
|
|
self.pet_skill_cfg = {} --宠物技能配置信息
|
|
self.pet_life_skill_cfg = {} --宠物生活技能配置
|
|
self.pet_diamond_cfg = {} --宠物宝石配置信息
|
|
self.pet_support_slot_cfg = {} --宠物声援槽位配置信息
|
|
self.pet_support_rank_cfg = {} --宠物声援排名配置信息
|
|
self.pet_cfg_rare = {} --宠物基础配置信息(根据稀有度获取)
|
|
|
|
self.pet_awake_cfg = {} --宠物觉醒配置
|
|
|
|
self.pet_diamond_compose_cfg = {} --宠物宝石合成配置
|
|
|
|
self.pet_upgrade_cfg_max_lv = {} --某稀有度下的宠物的最大等级配置
|
|
|
|
self.follow_pet = 0 --跟随宠物的id
|
|
self.pet_list = {} --自己的宠物列表
|
|
|
|
self.pet_skill_list = {} --宠物技能列表
|
|
self.pet_diamond_list = {} --宠物宝石列表
|
|
|
|
self.pet_support_list = {} --宠物声援信息
|
|
self.pet_support_list.pet_list = {}
|
|
self.pet_support_rank_list ={} --全服宠物声援信息(排行榜前十位)
|
|
|
|
self.pet_vote_data = {}
|
|
|
|
self.my_left_vote_times = 0--剩余的投票次数
|
|
self.max_vote_times = 3 --最大的投票次数
|
|
self.my_vote_data = {} --投票信息
|
|
|
|
self.select_collect_item_id = 0 --当前选中的图鉴itemid
|
|
self.select_item_id = 0 --当前选中的itemid
|
|
|
|
self.pet_rank_reward_data = {} --昨日榜领奖数据
|
|
|
|
self.upgrade_cost_cfg = {} --宠物升级消耗道具配置
|
|
|
|
self.share_cd = 0
|
|
self.share_cd2 = 0
|
|
self.pet_red_dot_info = {} --红点数据
|
|
self.single_pet_feed_red_info = {} --单个宠物的升级红点
|
|
self.single_pet_evolve_red_info = {} --单个宠物的进化红点
|
|
self.single_pet_active_red_info = {} --单个宠物的激活红点
|
|
self.single_pet_rare_active_red_info = {} --单个宠物类型的激活红点(稀有度)
|
|
self.pet_awake_red = {}--觉醒红点
|
|
self.pet_vote_red = false--投票次数红点
|
|
self.pet_vote_reward_red = false--领奖红点
|
|
|
|
self.diamond_compose_red = {}--宝石合成红点列表
|
|
|
|
self.pet_rank_data_num = 0--当前宠物声援榜单的上榜数量
|
|
|
|
self.single_pet_diamond_red_info = {} --单个宠物的宝石红点
|
|
self.single_pet_slot_diamond_red_info = {} --单个宠物槽位上的红点
|
|
|
|
|
|
self.need_update_collect_item = nil
|
|
|
|
self.pet_cfg_by_id = {}
|
|
|
|
self:SetPetCfg()
|
|
self:SetPetRaceMaterial()
|
|
self:SetPetUpgradeCfg()
|
|
self:SetPetStoryCfg()
|
|
self:SetPetSkillCfg()
|
|
self:SetPetDiamondCfg()
|
|
self:SetPetSupportSlotCfg()
|
|
self:SetPetSupportRankCfg()
|
|
self:SetPetAwakeCfg()
|
|
self:SetPetDiamondComposeCfg()
|
|
end
|
|
|
|
function PetModel.getInstance()
|
|
if PetModel.Instance == nil then
|
|
PetModel.Instance = PetModel.New()
|
|
end
|
|
return PetModel.Instance
|
|
end
|
|
|
|
|
|
----------------------------------------------配置的获取------START
|
|
--设置宠物基础配置信息
|
|
function PetModel:SetPetCfg()
|
|
--先初始化一下稀有度配置table
|
|
self.pet_cfg_rare[1] = {}
|
|
self.pet_cfg_rare[2] = {}
|
|
self.pet_cfg_rare[3] = {}
|
|
|
|
--将某id的宠物存一下
|
|
self.pet_cfg_by_id = {}
|
|
|
|
for k,v in pairs(Config.Pet) do
|
|
--设置总配置pet_cfg
|
|
local index = v.pet_id.."@"..v.pet_star
|
|
if not self.pet_cfg[index] then
|
|
self.pet_cfg[index] = {}
|
|
end
|
|
self.pet_cfg[index] = v
|
|
|
|
self.pet_cfg_by_id[v.pet_id] = self.pet_cfg_by_id[v.pet_id] or {}
|
|
self.pet_cfg_by_id[v.pet_id][#self.pet_cfg_by_id[v.pet_id]+1] = v
|
|
|
|
--设置稀有度配置pet_cfg_rare
|
|
if v.rare_degree == 1 then
|
|
if v.pet_star == 1 then
|
|
table.insert(self.pet_cfg_rare[1],v)
|
|
end
|
|
elseif v.rare_degree == 2 then
|
|
if v.pet_star == 1 then
|
|
table.insert(self.pet_cfg_rare[2],v)
|
|
end
|
|
elseif v.rare_degree == 3 then
|
|
if v.pet_star == 1 then
|
|
table.insert(self.pet_cfg_rare[3],v)
|
|
end
|
|
end
|
|
end
|
|
|
|
for k,v in pairs(self.pet_cfg_by_id) do
|
|
local function onSortFunction(v1, v2)
|
|
return v1.pet_star < v2.pet_star
|
|
end
|
|
table.sort(v, onSortFunction)
|
|
end
|
|
end
|
|
|
|
--根据宠物id拿到配置列表
|
|
function PetModel:GetPetCfgById(pet_id)
|
|
return self.pet_cfg_by_id[pet_id] and self.pet_cfg_by_id[pet_id] or {}
|
|
end
|
|
|
|
--宠物的最大星数
|
|
function PetModel:GetPetMaxStar(pet_id)
|
|
if self.pet_cfg_by_id[pet_id] then
|
|
return #self.pet_cfg_by_id[pet_id]
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
--判断宠物几星能解锁到这个阶段 1 2 3
|
|
function PetModel:GetStarCanUnlockFigure(pet_id,figure_stage)
|
|
local pet_cfg = self.pet_cfg_by_id[pet_id]
|
|
if pet_cfg then
|
|
local change_times = 0
|
|
local original_figure_id = 0
|
|
for i,v in ipairs(pet_cfg) do
|
|
if v.figure_id ~= original_figure_id then
|
|
change_times = change_times + 1
|
|
if change_times == figure_stage then
|
|
return v.pet_star
|
|
end
|
|
end
|
|
original_figure_id = v.figure_id
|
|
end
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
--用当前星数判断是否会进化到下一阶
|
|
function PetModel:CanPetGradeToNextStage(now_star)
|
|
if now_star%5 == 0 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
--根据资源id判断是不是宠物资源
|
|
function PetModel:IsPetFigureId(figure_id)
|
|
for k,v in pairs(self.pet_cfg) do
|
|
if v.figure_id == figure_id then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function PetModel:GetNowPetFigure( )
|
|
local follow_pet_data = self:GetPetListById(self.follow_pet)
|
|
if follow_pet_data then
|
|
local pet_cfg = self:GetPetCfg(follow_pet_data.pet_id, follow_pet_data.pet_star)
|
|
if pet_cfg then
|
|
return pet_cfg.figure_id
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--根据宠物id pet_id、 宠物星级 pet_star查找相应宠物配置
|
|
function PetModel:GetPetCfg(pet_id, pet_star)
|
|
for k,v in pairs(self.pet_cfg) do
|
|
if v.pet_id == pet_id and v.pet_star == pet_star then
|
|
return v
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--根据稀有度获取宠物配置信息
|
|
function PetModel:GetPetRareCfg(rare_type)
|
|
local pet_all_cfg = {}
|
|
for k,v in pairs(self.pet_cfg_rare[rare_type]) do
|
|
local is_have = self:GetPetListById(v.pet_id)
|
|
v.is_have = is_have and 1 or 2
|
|
if self:CanShowPet(v.pet_id) then
|
|
table.insert(pet_all_cfg,v)
|
|
end
|
|
end
|
|
local arg = {"is_have", "pet_id"}
|
|
local condition = {Array.LOWER, Array.LOWER}
|
|
SortTools.MoreKeysSorter(pet_all_cfg, arg, condition)
|
|
return pet_all_cfg
|
|
end
|
|
|
|
--排序所有宠物(图鉴)
|
|
function PetModel:GetPetBySort( )
|
|
local pet_all_cfg = {}
|
|
for k,v in pairs(self.pet_cfg_rare) do
|
|
for kk,vv in pairs(v) do
|
|
local is_have = self:GetPetListById(vv.pet_id)
|
|
vv.is_have = is_have and 1 or 2
|
|
if self:CanShowPet(vv.pet_id) then
|
|
table.insert(pet_all_cfg,vv)
|
|
end
|
|
end
|
|
end
|
|
local arg = {"is_have", "rare_degree", "pet_id"}
|
|
local condition = {Array.LOWER, Array.UPPER, Array.LOWER}
|
|
SortTools.MoreKeysSorter(pet_all_cfg, arg, condition)
|
|
return pet_all_cfg
|
|
end
|
|
|
|
--该宠物是否符合开放时间
|
|
function PetModel:CanShowPet(pet_id)
|
|
local pet_cfg = self:GetPetCfg(pet_id,1)
|
|
if not pet_cfg then return false end
|
|
|
|
local is_pet_active = self:IsPetActived(pet_id)
|
|
--如果都已经激活了那就无视开放时间
|
|
if is_pet_active then return true end
|
|
|
|
--未达到开放天数
|
|
if pet_cfg.open_day > 0 and ServerTimeModel:getInstance():GetOpenServerDay() <= pet_cfg.open_day then return false end
|
|
|
|
--未到开放时间
|
|
if pet_cfg.open_time > 0 and TimeUtil:getServerTime() <= pet_cfg.open_time then return false end
|
|
|
|
return true
|
|
end
|
|
|
|
--根据宠物id获取该宠物的种族
|
|
function PetModel:GetPetRaceById(pet_id)
|
|
for k,v in pairs(self.pet_cfg) do
|
|
if v.pet_id == pet_id then
|
|
return v.pet_race
|
|
end
|
|
end
|
|
return 1
|
|
end
|
|
|
|
--根据id获取宠物的品质
|
|
function PetModel:GetPetDegreeById(pet_id)
|
|
for k,v in pairs(self.pet_cfg) do
|
|
if v.pet_id == pet_id then
|
|
return v.rare_degree
|
|
end
|
|
end
|
|
return 1
|
|
end
|
|
|
|
--判断宠物的某个故事是否解锁
|
|
function PetModel:IsStoryActived(pet_id,item_id)
|
|
local data = self:GetPetListById(pet_id)
|
|
local story_cfg = self:GetPetStoryCfg(pet_id,item_id)
|
|
--判断是否已经解锁
|
|
local is_actived = false
|
|
if data then
|
|
if data.pet_star >= story_cfg.star then
|
|
is_actived = true
|
|
else
|
|
is_actived = false
|
|
end
|
|
end
|
|
return is_actived
|
|
end
|
|
|
|
--判断宠物已经解锁到哪个故事了
|
|
function PetModel:GetTheActiveStoryId(pet_id)
|
|
local final_index = 0
|
|
for i=1,3 do
|
|
if self:IsStoryActived(pet_id,i) then
|
|
final_index = final_index + 1
|
|
else
|
|
break
|
|
end
|
|
end
|
|
return final_index
|
|
end
|
|
|
|
--设置不同种族的宠物升级消耗材料信息
|
|
function PetModel:SetPetRaceMaterial( )
|
|
self.upgrade_cost_cfg = {}
|
|
for i,v in ipairs(Config.Petracematerial) do
|
|
self.upgrade_cost_cfg[i] = {}
|
|
self.upgrade_cost_cfg[i].race = v.race
|
|
self.upgrade_cost_cfg[i].cost_material = stringtotable(v.cost_material)
|
|
end
|
|
end
|
|
|
|
--设置宠物升级配置信息
|
|
function PetModel:SetPetUpgradeCfg()
|
|
for k,v in pairs(Config.Petupgrade) do
|
|
local index = v.pet_rare_degree.."@"..v.level
|
|
if not self.pet_upgrade_cfg[index] then
|
|
self.pet_upgrade_cfg[index] = {}
|
|
end
|
|
self.pet_upgrade_cfg[index] = v
|
|
|
|
--记录稀有度下的宠物的最大等级
|
|
if not self.pet_upgrade_cfg_max_lv[v.pet_rare_degree] then
|
|
self.pet_upgrade_cfg_max_lv[v.pet_rare_degree] = {}
|
|
self.pet_upgrade_cfg_max_lv[v.pet_rare_degree].level = 0
|
|
end
|
|
if v.level > self.pet_upgrade_cfg_max_lv[v.pet_rare_degree].level then
|
|
self.pet_upgrade_cfg_max_lv[v.pet_rare_degree].level = v.level
|
|
end
|
|
end
|
|
end
|
|
|
|
--根据稀有度 pet_rare_degree、等级level查找
|
|
function PetModel:GetPetUpgradeCfg(pet_rare_degree,level)
|
|
for k,v in pairs(self.pet_upgrade_cfg) do
|
|
if v.pet_rare_degree == pet_rare_degree and v.level == level then
|
|
return v
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--获取某稀有度宠物的最大等级
|
|
function PetModel:GetPetMaxLv(pet_rare_degree)
|
|
return self.pet_upgrade_cfg_max_lv[pet_rare_degree].level
|
|
end
|
|
|
|
--设置宠物故事配置表
|
|
function PetModel:SetPetStoryCfg()
|
|
for k,v in pairs(Config.Petstory) do
|
|
local index = v.pet_id.."@"..v.para_id
|
|
if not self.pet_story_cfg[index] then
|
|
self.pet_story_cfg[index] = {}
|
|
end
|
|
self.pet_story_cfg[index] = v
|
|
end
|
|
end
|
|
|
|
--根据宠物id和段落id查找
|
|
function PetModel:GetPetStoryCfg(pet_id,para_id)
|
|
for k,v in pairs(self.pet_story_cfg) do
|
|
if v.pet_id == pet_id and v.para_id == para_id then
|
|
return v
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--设置宠物技能配置表
|
|
function PetModel:SetPetSkillCfg()
|
|
for k,v in pairs(Config.Petskill) do
|
|
local index = v.pet_id.."@"..v.skill_slot
|
|
if not self.pet_skill_cfg[index] then
|
|
self.pet_skill_cfg[index] = {}
|
|
end
|
|
self.pet_skill_cfg[index] = v
|
|
|
|
--宠物生活技能
|
|
if v.skill_talent_type == 0 then
|
|
self.pet_life_skill_cfg[v.skill_talent_id] = v
|
|
end
|
|
end
|
|
end
|
|
|
|
--获取宠物生活配置
|
|
function PetModel:GetPetLifeSkillCfgById(skill_id)
|
|
return self.pet_life_skill_cfg[skill_id] and self.pet_life_skill_cfg[skill_id] or nil
|
|
end
|
|
|
|
--获取宠物生活配置系数
|
|
function PetModel:GetPetLifeSkillRatio(skill_id)
|
|
return self.pet_life_skill_cfg[skill_id] and self.pet_life_skill_cfg[skill_id].skill_ratio or 0
|
|
end
|
|
|
|
--根据宠物id和槽位查找
|
|
function PetModel:GetPetSkillCfg(pet_id,skill_slot,is_awaken)
|
|
local skill_data = {}
|
|
for k,v in pairs(self.pet_skill_cfg) do
|
|
if v.pet_id == pet_id and v.skill_slot == skill_slot then
|
|
skill_data = DeepCopy(v)
|
|
if is_awaken then
|
|
local awake_cfg = self:GetPetAwakeCfg(pet_id)
|
|
local awake_skill_id = awake_cfg and stringtotable(awake_cfg.skill_list)[skill_slot-1] or nil
|
|
if awake_skill_id then
|
|
skill_data.skill_talent_id = awake_skill_id
|
|
end
|
|
end
|
|
return skill_data
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--设置宠物宝石配置表
|
|
function PetModel:SetPetDiamondCfg()
|
|
for k,v in pairs(Config.Petdiamondstorage) do
|
|
local index = v.diamond_id
|
|
if not self.pet_diamond_cfg[index] then
|
|
self.pet_diamond_cfg[index] = {}
|
|
end
|
|
self.pet_diamond_cfg[index] = v
|
|
end
|
|
end
|
|
|
|
--根据宝石id查找
|
|
function PetModel:GetPetDiamondCfg(diamond_id)
|
|
for k,v in pairs(self.pet_diamond_cfg) do
|
|
if v.diamond_id == diamond_id then
|
|
return v
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--设置宠物声援槽位配置信息
|
|
function PetModel:SetPetSupportSlotCfg()
|
|
for k,v in pairs(Config.Petsupportslot) do
|
|
local index = v.slot_id
|
|
if not self.pet_support_slot_cfg[index] then
|
|
self.pet_support_slot_cfg[index] = {}
|
|
end
|
|
self.pet_support_slot_cfg[index] = v
|
|
end
|
|
end
|
|
|
|
--根据槽位id查找
|
|
function PetModel:GetPetSupportSlotCfg(slot_id)
|
|
for k,v in pairs(self.pet_support_slot_cfg) do
|
|
if v.slot_id == slot_id then
|
|
return v
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--设置宠物声援排名配置信息
|
|
function PetModel:SetPetSupportRankCfg()
|
|
for k,v in pairs(Config.Petsupportrank) do
|
|
local index = v.rank
|
|
if not self.pet_support_rank_cfg[index] then
|
|
self.pet_support_rank_cfg[index] = {}
|
|
end
|
|
self.pet_support_rank_cfg[index] = v
|
|
end
|
|
end
|
|
|
|
--根据排名id查找
|
|
function PetModel:GetPetSupportRankCfg(rank)
|
|
for k,v in pairs(self.pet_support_rank_cfg) do
|
|
if v.rank == rank then
|
|
return v
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--宠物觉醒配置
|
|
function PetModel:SetPetAwakeCfg( )
|
|
self.pet_awake_cfg = DeepCopy(Config.Petawaken)
|
|
end
|
|
|
|
--获取宠物觉醒配置
|
|
function PetModel:GetPetAwakeCfg(pet_id)
|
|
return self.pet_awake_cfg[pet_id]
|
|
end
|
|
|
|
--宠物宝石合成配置
|
|
function PetModel:SetPetDiamondComposeCfg( )
|
|
for k,v in pairs(Config.Petstonecompound) do
|
|
local diamond_cfg = self:GetPetDiamondCfg(v.stone_id)
|
|
if diamond_cfg then
|
|
v.need_race = diamond_cfg.need_race
|
|
v.diamond_type = diamond_cfg.diamond_type
|
|
local goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(v.stone_id)
|
|
v.color = goods_vo.color
|
|
self.pet_diamond_compose_cfg[v.need_race] = self.pet_diamond_compose_cfg[v.need_race] or {}
|
|
table.insert(self.pet_diamond_compose_cfg[v.need_race],v)
|
|
end
|
|
end
|
|
|
|
for k,v in pairs(self.pet_diamond_compose_cfg) do
|
|
local arg = {"diamond_type", "color", "stone_id"}
|
|
local condition = {Array.UPPER, Array.LOWER, Array.LOWER}
|
|
SortTools.MoreKeysSorter(v, arg, condition)
|
|
end
|
|
end
|
|
|
|
function PetModel:GetPetDiamondComposeCfgByRace(race)
|
|
return self.pet_diamond_compose_cfg[race] and self.pet_diamond_compose_cfg[race] or {}
|
|
end
|
|
|
|
----------------------------------------------配置的获取------END
|
|
|
|
--设置宠物列表,16301
|
|
function PetModel:SetPetList(vo)
|
|
self.follow_pet = vo.follow_pet
|
|
for k,v in pairs(vo.pet_list) do
|
|
if not self.pet_list[v.pet_id] then
|
|
self.pet_list[v.pet_id] = {}
|
|
end
|
|
self.pet_list[v.pet_id].pet_id = v.pet_id
|
|
self.pet_list[v.pet_id].pet_star = v.pet_star
|
|
------原有的stage去除,改为5星一个stage
|
|
self.pet_list[v.pet_id].pet_stage = math.ceil((v.pet_star-0.5)/5)
|
|
-------------------------------------
|
|
self.pet_list[v.pet_id].pet_lv = v.pet_lv
|
|
self.pet_list[v.pet_id].now_exp = v.now_exp
|
|
self.pet_list[v.pet_id].power = v.power
|
|
self.pet_list[v.pet_id].collect_time = v.collect_time
|
|
self.pet_list[v.pet_id].attr_list = v.attr_list
|
|
self.pet_list[v.pet_id].is_awaken = v.is_awaken
|
|
end
|
|
end
|
|
|
|
--16303协议激活宠物后先创建该id的列表
|
|
function PetModel:ActivePet(vo)
|
|
self.pet_list[vo.pet_id] = self.pet_list[vo.pet_id] or {}
|
|
self.pet_list[vo.pet_id].pet_id = vo.pet_id
|
|
self.pet_list[vo.pet_id].pet_star = vo.pet_star
|
|
------原有的stage去除,改为5星一个stage
|
|
self.pet_list[vo.pet_id].pet_stage = math.ceil((vo.pet_star-0.5)/5)
|
|
-------------------------------------
|
|
self.pet_list[vo.pet_id].power = vo.pet_power
|
|
self.pet_list[vo.pet_id].pet_lv = 1
|
|
end
|
|
|
|
--根据id获取宠物信息
|
|
function PetModel:GetPetListById(pet_id)
|
|
if self.pet_list[pet_id] then
|
|
return self.pet_list[pet_id]
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--获取排好序的宠物列表
|
|
function PetModel:GetPetListAfterSort()
|
|
local list = self.pet_list
|
|
for k,v in pairs(list) do
|
|
v.rare_degree = self:GetPetDegreeById(v.pet_id)
|
|
end
|
|
|
|
local final_list = {}
|
|
for k,v in pairs(list) do
|
|
table.insert(final_list,v)
|
|
end
|
|
|
|
|
|
local arg = {"rare_degree", "pet_star", "pet_lv"}
|
|
local condition = {Array.UPPER, Array.UPPER, Array.LOWER,}
|
|
SortTools.MoreKeysSorter(final_list, arg, condition)
|
|
|
|
return final_list
|
|
end
|
|
|
|
--根据战力给宠物列表排序(宠物副本用)
|
|
function PetModel:GetPetListAfterSortFight( )
|
|
local final_list = {}
|
|
for k,v in pairs(self.pet_list) do
|
|
v.client_power = self:GetPetFightById(v.pet_id)
|
|
table.insert(final_list,v)
|
|
end
|
|
|
|
|
|
local arg = {"client_power"}
|
|
local condition = {Array.UPPER}
|
|
SortTools.MoreKeysSorter(final_list, arg, condition)
|
|
|
|
return final_list
|
|
end
|
|
|
|
--根据品质等级给宠物列表排序
|
|
function PetModel:GetPetListAfterSortByDegreeAndLv( )
|
|
local list = self.pet_list
|
|
for k,v in pairs(list) do
|
|
v.rare_degree = self:GetPetDegreeById(v.pet_id)
|
|
end
|
|
|
|
local final_list = {}
|
|
for k,v in pairs(list) do
|
|
table.insert(final_list,v)
|
|
end
|
|
|
|
|
|
local arg = {"rare_degree", "pet_lv"}
|
|
local condition = {Array.UPPER, Array.UPPER,}
|
|
SortTools.MoreKeysSorter(final_list, arg, condition)
|
|
|
|
return final_list
|
|
end
|
|
|
|
--喂养宠物后刷新其经验和等级,16302
|
|
function PetModel:SetPetLvAfterFeed(vo)
|
|
if self.pet_list[vo.pet_id] then
|
|
self.pet_list[vo.pet_id].pet_lv = vo.pet_lv
|
|
self.pet_list[vo.pet_id].now_exp = vo.now_exp
|
|
self.pet_list[vo.pet_id].power = vo.pet_power
|
|
end
|
|
end
|
|
|
|
--宠物进阶后刷新其数据,16303
|
|
function PetModel:SetPetDataAfterUpStar(vo)
|
|
if self.pet_list[vo.pet_id] then
|
|
self.pet_list[vo.pet_id].pet_stage = vo.pet_stage
|
|
self.pet_list[vo.pet_id].pet_star = vo.pet_star
|
|
------原有的stage去除,改为5星一个stage
|
|
self.pet_list[vo.pet_id].pet_stage = math.ceil((vo.pet_star-0.5)/5)
|
|
-------------------------------------
|
|
self.pet_list[vo.pet_id].power = vo.pet_power
|
|
end
|
|
end
|
|
|
|
--设置宠物的技能栏数据,16304
|
|
function PetModel:SetPetSkillData(vo)
|
|
if not self.pet_skill_list[vo.pet_id] then
|
|
self.pet_skill_list[vo.pet_id] = {}
|
|
end
|
|
for k,v in pairs(vo.skill_list) do
|
|
if not self.pet_skill_list[vo.pet_id][v.skill_slot_id] then
|
|
self.pet_skill_list[vo.pet_id][v.skill_slot_id] = {}
|
|
end
|
|
self.pet_skill_list[vo.pet_id][v.skill_slot_id].skill_slot_id = v.skill_slot_id
|
|
self.pet_skill_list[vo.pet_id][v.skill_slot_id].talent_type = v.talent_type
|
|
self.pet_skill_list[vo.pet_id][v.skill_slot_id].talent_id = v.talent_id
|
|
end
|
|
end
|
|
|
|
--根据宠物id获取技能数据
|
|
function PetModel:GetPetSkillDataById(pet_id)
|
|
return self.pet_skill_list[pet_id] and self.pet_skill_list[pet_id] or nil
|
|
end
|
|
|
|
--判断宠物技能是否解锁
|
|
function PetModel:IsPetSkillActive(pet_star, active_star)
|
|
local is_actived = false
|
|
if pet_star >= active_star then
|
|
is_actived = true
|
|
else
|
|
is_actived = false
|
|
end
|
|
return is_actived
|
|
end
|
|
|
|
--设置宠物的宝石栏数据,16304
|
|
function PetModel:SetPetDiamondData(vo)
|
|
if not self.pet_diamond_list[vo.pet_id] then
|
|
self.pet_diamond_list[vo.pet_id] = {}
|
|
end
|
|
for k,v in pairs(vo.diamond_list) do
|
|
if not self.pet_diamond_list[vo.pet_id][v.diamond_slot] then
|
|
self.pet_diamond_list[vo.pet_id][v.diamond_slot] = {}
|
|
end
|
|
self.pet_diamond_list[vo.pet_id][v.diamond_slot].diamond_slot = v.diamond_slot
|
|
self.pet_diamond_list[vo.pet_id][v.diamond_slot].diamond_id = v.diamond_id
|
|
end
|
|
end
|
|
|
|
--根据id和槽位获取宝石栏数据(如果位置上没有宝石,直接返回nil)
|
|
function PetModel:GetPetDiamondDataByIdAndSlot(pet_id,slot_id)
|
|
if self.pet_diamond_list[pet_id] and self.pet_diamond_list[pet_id][slot_id] then
|
|
return self.pet_diamond_list[pet_id][slot_id]
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--根据宠物id获取宝石栏数据
|
|
function PetModel:GetPetDiamondDataById(pet_id)
|
|
return self.pet_diamond_list[pet_id] and self.pet_diamond_list[pet_id] or nil
|
|
end
|
|
|
|
--宝石上阵后刷新宝石栏数据,16305
|
|
function PetModel:SetPetDiamondDataAfterPut(vo)
|
|
if not self.pet_diamond_list[vo.pet_id] then
|
|
self.pet_diamond_list[vo.pet_id] = {}
|
|
end
|
|
self.pet_diamond_list[vo.pet_id][vo.diamond_slot] = self.pet_diamond_list[vo.pet_id][vo.diamond_slot] or {}
|
|
self.pet_diamond_list[vo.pet_id][vo.diamond_slot].diamond_slot = vo.diamond_slot
|
|
self.pet_diamond_list[vo.pet_id][vo.diamond_slot].diamond_id = vo.diamond_id
|
|
self.pet_list[vo.pet_id].power = vo.pet_power
|
|
end
|
|
|
|
--宠物跟随,16306
|
|
function PetModel:SetPetFollow(vo)
|
|
if vo.role_id ~= RoleManager.Instance:GetMainRoleId() then return end
|
|
if vo.is_follow == 1 then
|
|
self.follow_pet = vo.pet_id
|
|
else
|
|
self.follow_pet = 0
|
|
end
|
|
end
|
|
|
|
--获取跟随的宠物id
|
|
function PetModel:GetFollowPetId()
|
|
return self.follow_pet or 0
|
|
end
|
|
|
|
function PetModel:GetFollowPetStar( )
|
|
return self:GetPetListById(self.follow_pet).pet_star
|
|
end
|
|
|
|
--宠物声援信息,16307
|
|
function PetModel:SetPetSupportData(vo)
|
|
self.pet_support_list.pet_sum_star = vo.pet_sum_star
|
|
self.pet_support_list.pet_list = self.pet_support_list.pet_list or {}
|
|
for k,v in pairs(vo.pet_list) do
|
|
self.pet_support_list.pet_list[v.support_slot] = self.pet_support_list.pet_list[v.support_slot] or {}
|
|
self.pet_support_list.pet_list[v.support_slot].support_slot = v.support_slot
|
|
self.pet_support_list.pet_list[v.support_slot].pet_id = v.pet_id
|
|
end
|
|
end
|
|
|
|
--找到最前的空声援位
|
|
function PetModel:GetRecentSupportSlot()
|
|
local sum_stars = self:CountPetStars()
|
|
for i=1,10 do
|
|
local support_slot_cfg = self:GetPetSupportSlotCfg(i)
|
|
if sum_stars >= support_slot_cfg.open_sum_star then--已经解锁了
|
|
if self.pet_support_list and self.pet_support_list.pet_list and not self.pet_support_list.pet_list[i] then
|
|
return i
|
|
end
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
|
|
--根据声援位获取声援信息
|
|
function PetModel:GetPetSupportDataBySlot(slot_id)
|
|
return self.pet_support_list.pet_list and self.pet_support_list.pet_list[slot_id] and self.pet_support_list.pet_list[slot_id] or nil
|
|
end
|
|
|
|
--根据宠物id找到其声援信息
|
|
function PetModel:GetPetSupportDataByPetId(pet_id)
|
|
for k,v in pairs(self.pet_support_list.pet_list) do
|
|
if v.pet_id == pet_id then
|
|
return v
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--获取总星数
|
|
function PetModel:GetPetStars()
|
|
return self.pet_support_list.pet_sum_star
|
|
end
|
|
|
|
--客户端自己计算总星数
|
|
function PetModel:CountPetStars()
|
|
local num = 0
|
|
for k,v in pairs(self.pet_list) do
|
|
num = num + v.pet_star
|
|
end
|
|
return num
|
|
end
|
|
|
|
--宠物上阵之后,16308
|
|
function PetModel:PresentPet(vo)
|
|
self.pet_support_list.pet_list = self.pet_support_list.pet_list or {}
|
|
self.pet_support_list.pet_list[vo.support_slot] = self.pet_support_list.pet_list[vo.support_slot] or {}
|
|
self.pet_support_list.pet_list[vo.support_slot].support_slot = vo.support_slot
|
|
self.pet_support_list.pet_list[vo.support_slot].pet_id = vo.pet_id
|
|
--接下来处理槽位调换的情况
|
|
if vo.old_pet_id ~= 0 and vo.old_support_slot == 0 then--未上阵宠物顶替上阵的
|
|
--啥都不用做,因为阵位数据已经替换了
|
|
return
|
|
elseif vo.old_pet_id == 0 and vo.old_support_slot == 0 then--未上阵宠物上阵空位
|
|
--啥都不用做,因为阵位数据已经替换了
|
|
return
|
|
elseif vo.old_pet_id == 0 and vo.old_support_slot ~= 0 then--上阵宠物换到空位
|
|
--把原来的位置数据置空
|
|
self.pet_support_list.pet_list[vo.old_support_slot] = nil
|
|
-- TableRemove(self.pet_support_list.pet_list,self.pet_support_list.pet_list[vo.old_support_slot])
|
|
elseif vo.old_pet_id ~= 0 and vo.old_support_slot ~= 0 then--两个阵位宠物互换
|
|
--把主动替换方的位置数据换成被动替换方
|
|
self.pet_support_list.pet_list[vo.old_support_slot].pet_id = vo.old_pet_id
|
|
self.pet_support_list.pet_list[vo.old_support_slot].support_slot = vo.old_support_slot
|
|
end
|
|
end
|
|
|
|
--全服宠物声援信息,16309
|
|
-- rank :int8 //全服排名
|
|
-- pet_id :int32 //宠物Id
|
|
-- player_id :int64 //玩家Id
|
|
-- player_name :string //玩家名称
|
|
-- player_power :int64 //玩家战力
|
|
-- support_ratio :int16 //声援率
|
|
function PetModel:SetPetSupportRankData(vo)
|
|
for k,v in pairs(vo.rank_list) do
|
|
self.pet_support_rank_list[v.rank] = v--以排名为键
|
|
end
|
|
self.pet_rank_data_num = #vo.rank_list
|
|
end
|
|
|
|
function PetModel:GetRankData()
|
|
return self.pet_support_rank_list or nil
|
|
end
|
|
|
|
--根据排名rank获取排行榜信息
|
|
function PetModel:GetRankDataByRank(rank)
|
|
return self.pet_support_rank_list[rank] or nil
|
|
end
|
|
|
|
--宠物投票信息 16312
|
|
function PetModel:SetPetVoteData(vo)
|
|
for k,v in pairs(vo.rank_list) do
|
|
self.pet_vote_data[v.rare] = v
|
|
local arg = {"ticket_num", "pet_id"}
|
|
local condition = {Array.UPPER, Array.LOWER}
|
|
SortTools.MoreKeysSorter(self.pet_vote_data[v.rare].rare_list, arg, condition)
|
|
end
|
|
|
|
for k,v in pairs(self.pet_vote_data) do
|
|
local first_ticikes = 0
|
|
for i,v in ipairs(v.rare_list) do
|
|
if i == 1 then
|
|
first_ticikes = v.ticket_num
|
|
end
|
|
if first_ticikes == 0 then
|
|
v.rank = 1
|
|
else
|
|
v.rank = i
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--我的投票信息 16313 16314
|
|
function PetModel:SetPetMyVoteData(vo)
|
|
self.my_left_vote_times = self.max_vote_times - vo.support_times
|
|
self.my_vote_data = vo.my_ticket
|
|
if vo.pet_num then
|
|
self.pet_rank_data_num = vo.pet_num
|
|
--剩余投票次数置为0,不给投票
|
|
if not self:CanVotePetRank() then
|
|
self.my_left_vote_times = 0
|
|
end
|
|
end
|
|
end
|
|
|
|
--宠物声援榜单数量低于8个时候显示空界面并且不能投票
|
|
function PetModel:CanVotePetRank( )
|
|
return self.pet_rank_data_num >= 8
|
|
end
|
|
|
|
--获取我的投票信息
|
|
function PetModel:GetPetMyVoteData( )
|
|
return self.my_vote_data
|
|
end
|
|
|
|
--获取剩余投票次数
|
|
function PetModel:GetMyLeftVoteTimes( )
|
|
return self.my_left_vote_times
|
|
end
|
|
|
|
--昨日人气榜奖励领取信息 16310
|
|
function PetModel:SetPetRankRewardData(vo)
|
|
self.pet_rank_data_num = vo.pet_num
|
|
|
|
if self:CanVotePetRank() then
|
|
for i=1,3 do
|
|
if vo.receive_list and vo.receive_list[i] then
|
|
self.pet_rank_reward_data[i] = vo.receive_list[i]
|
|
else
|
|
self.pet_rank_reward_data[i] = {pet_id = 0,is_received = 0}
|
|
end
|
|
end
|
|
else
|
|
self.pet_rank_reward_data = {}
|
|
end
|
|
|
|
--剩余投票次数置为0,不给投票
|
|
if not self:CanVotePetRank() then
|
|
self.my_left_vote_times = 0
|
|
end
|
|
end
|
|
|
|
--获取昨日榜的领奖数据
|
|
function PetModel:GetPetRankRewardData()
|
|
return self.pet_rank_reward_data
|
|
end
|
|
|
|
--更新领取奖励状态 16315
|
|
function PetModel:UpdatePetRankRewardData(vo)
|
|
local is_find = false
|
|
for k,v in pairs(self.pet_rank_reward_data) do
|
|
if v.pet_id == vo.pet_id then
|
|
v.is_received = 1
|
|
is_find = true
|
|
end
|
|
end
|
|
if not is_find then
|
|
for k,v in pairs(self.pet_rank_reward_data) do
|
|
if v.pet_id == 0 then
|
|
v.pet_id =vo.pet_id
|
|
v.is_received = 1
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--根据稀有度获取投票排行列表
|
|
function PetModel:GetPetVoteDataByRare(rare)
|
|
if self.pet_vote_data[rare] then
|
|
return self.pet_vote_data[rare].rare_list
|
|
end
|
|
|
|
return {}
|
|
end
|
|
|
|
--更新宠物觉醒状态 16316
|
|
function PetModel:UpdatePetAwakeState(vo)
|
|
if self.pet_list[vo.pet_id] then
|
|
self.pet_list[vo.pet_id].is_awaken = 1
|
|
end
|
|
end
|
|
|
|
--计算属性值 宠物当前各基础属性=宠物基础属性+(宠物当前等级-1)*属性对应成长值
|
|
function PetModel:GetPetAttrList(pet_lv,attr_list,diamond_data,awake_cfg,pet_star,pet_id)
|
|
--计算基础属性
|
|
local final_attr_list = attr_list
|
|
for k,v in pairs(final_attr_list) do
|
|
v[2] = v[2]+(pet_lv-1)*v[3]
|
|
end
|
|
|
|
local diamond_attr_data = {}--宝石总加成属性列表
|
|
if diamond_data then
|
|
for k,v in pairs(diamond_data) do
|
|
if v then
|
|
--单个槽位宝石加成属性列表
|
|
local diamond_attr_data_slot = stringtotable(self:GetPetDiamondCfg(v.diamond_id).add_attr_list)
|
|
for k,v in pairs(diamond_attr_data_slot) do
|
|
if not diamond_attr_data[v[1]] then
|
|
diamond_attr_data[v[1]] = {}
|
|
diamond_attr_data[v[1]][1] = v[1]
|
|
diamond_attr_data[v[1]][2] = 0
|
|
end
|
|
diamond_attr_data[v[1]][2] = diamond_attr_data[v[1]][2] + v[2]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for k,v in pairs(final_attr_list) do
|
|
if diamond_attr_data[v[1]] then
|
|
v[2] = v[2] + diamond_attr_data[v[1]][2]
|
|
diamond_attr_data[v[1]].isGet = true
|
|
end
|
|
end
|
|
for k,v in pairs(diamond_attr_data) do
|
|
if not v.isGet then
|
|
table.insert(final_attr_list,v)
|
|
end
|
|
end
|
|
|
|
local awaken_attr_data = {}--觉醒加成属性
|
|
if awake_cfg then
|
|
local awake_attr_cfg = stringtotable(awake_cfg.add_attr)
|
|
for k,v in pairs(awake_attr_cfg) do
|
|
awaken_attr_data[v[1]] = v
|
|
end
|
|
end
|
|
for k,v in pairs(final_attr_list) do
|
|
if awaken_attr_data[v[1]] then
|
|
v[2] = v[2] + awaken_attr_data[v[1]][2]
|
|
awaken_attr_data[v[1]].isGet = true
|
|
end
|
|
end
|
|
for k,v in pairs(awaken_attr_data) do
|
|
if not v.isGet then
|
|
table.insert(final_attr_list,v)
|
|
end
|
|
end
|
|
|
|
local skill_attr_data = {}--技能属性加成
|
|
local sttr_list = {}
|
|
local data = self:GetPetSkillCfg(pet_id,3,awake_cfg)
|
|
if data and data.active_star <= pet_star then
|
|
local skill_id = data.skill_talent_id
|
|
sttr_list = GetSkillAttrBySkill( skill_id, 1 )
|
|
end
|
|
|
|
for k,v in pairs(sttr_list) do
|
|
skill_attr_data[v[1]] = v
|
|
end
|
|
for k,v in pairs(final_attr_list) do
|
|
if skill_attr_data[v[1]] then
|
|
v[2] = v[2] + skill_attr_data[v[1]][2]
|
|
skill_attr_data[v[1]].isGet = true
|
|
end
|
|
end
|
|
for k,v in pairs(skill_attr_data) do
|
|
if not v.isGet then
|
|
table.insert(final_attr_list,v)
|
|
end
|
|
end
|
|
|
|
local skill_attr_data_2 = {}--技能属性加成
|
|
local sttr_list_2 = {}
|
|
local data_2 = self:GetPetSkillCfg(pet_id,4,awake_cfg)
|
|
if data_2 and data_2.active_star <= pet_star then
|
|
local skill_id = data_2.skill_talent_id
|
|
sttr_list_2 = GetSkillAttrBySkill( skill_id, 1 )
|
|
end
|
|
|
|
for k,v in pairs(sttr_list_2) do
|
|
skill_attr_data_2[v[1]] = v
|
|
end
|
|
for k,v in pairs(final_attr_list) do
|
|
if skill_attr_data_2[v[1]] then
|
|
v[2] = v[2] + skill_attr_data_2[v[1]][2]
|
|
skill_attr_data_2[v[1]].isGet = true
|
|
end
|
|
end
|
|
for k,v in pairs(skill_attr_data_2) do
|
|
if not v.isGet then
|
|
table.insert(final_attr_list,v)
|
|
end
|
|
end
|
|
|
|
return final_attr_list
|
|
end
|
|
|
|
--合并属性table得出一个格式为{{属性id,当前属性值,下一级增长值},{}}的新table
|
|
function PetModel:MergeAttrList(tb_now,tb_next)
|
|
for i,v in ipairs(tb_now) do
|
|
v[3] = tb_next[i][2]-v[2]
|
|
end
|
|
return tb_now
|
|
end
|
|
|
|
--第二种合并法(当前属性和上一阶段的比较)
|
|
function PetModel:MergeAttrList2(tb_now,tb_last)
|
|
for i,v in ipairs(tb_now) do
|
|
local last_num = tb_last[i] and tb_last[i][2] or 0
|
|
v[3] = v[2] - last_num
|
|
end
|
|
return tb_now
|
|
end
|
|
|
|
--判断该宠物是否已经激活
|
|
function PetModel:IsPetActived(pet_id)
|
|
return self.pet_list[pet_id] and true or false
|
|
end
|
|
|
|
|
|
--------物品数量检测---START
|
|
-----
|
|
function PetModel:UpPetChipGoodsChange( )--刷新宠物碎片道具
|
|
self:Fire(PetConst.UPDATE_PET_GOODS_NUM,1)
|
|
end
|
|
|
|
function PetModel:UpPetFeedGoodsChange( )--刷新宠物升级道具
|
|
self:Fire(PetConst.UPDATE_PET_GOODS_NUM,2)
|
|
end
|
|
|
|
function PetModel:UpPetDiamondGoodsChange( )--刷新宠物技能宝石
|
|
self:Fire(PetConst.UPDATE_PET_GOODS_NUM,3)
|
|
end
|
|
|
|
function PetModel:UpPetAwakeMaterial( )--刷新宠物觉醒碎片
|
|
self:Fire(PetConst.UPDATE_PET_GOODS_NUM,4)
|
|
end
|
|
-----
|
|
--------物品数量检测---END
|
|
|
|
--宠物进化前保存一下当前的数据,用于进化成功界面的属性对比
|
|
function PetModel:RecordDataBeforeEvolve(data)
|
|
self.pet_old_data = self.pet_old_data or {}
|
|
self.pet_old_data[data.pet_id] = self.pet_old_data[data.pet_id] or {}
|
|
self.pet_old_data[data.pet_id] = data
|
|
end
|
|
|
|
--获取宠物进化前的数据
|
|
function PetModel:GetPetOldDataById(pet_id)
|
|
return self.pet_old_data and self.pet_old_data[pet_id] and self.pet_old_data[pet_id] or nil
|
|
end
|
|
|
|
--获取宠物id某阶段时的最大星数
|
|
function PetModel:GetMaxStarInStage(pet_id,star)
|
|
local final_max_star = self:GetPetMaxStar(pet_id)
|
|
local final_stage_max_star = math.ceil((final_max_star-0.5)/5)*5--最后阶段的理论最高星数
|
|
if final_stage_max_star-star < 5 then--判断是否在最后的阶段
|
|
return 5 - (final_stage_max_star - final_max_star)
|
|
else
|
|
return 5
|
|
end
|
|
return 5
|
|
end
|
|
|
|
--获取宠物进化后的下一星级
|
|
function PetModel:GetNextStageAndStar(pet_id,now_star)
|
|
local max_star = self:GetPetMaxStar(pet_id)
|
|
local next_star
|
|
-- if now_star == max_star then--已经满星了
|
|
-- next_star = max_star
|
|
-- else
|
|
next_star = now_star + 1
|
|
-- end
|
|
return next_star
|
|
end
|
|
|
|
--转换宠物当前显示的星数
|
|
function PetModel:GetNowShowPetStar(star)
|
|
return (star-1)%5+1
|
|
end
|
|
|
|
------------红点------START
|
|
function PetModel:IsNeedRedAll( )
|
|
for k,v in pairs(PetConst.RED_DOT_TYPE) do
|
|
self:IsNeedRed(v)
|
|
end
|
|
end
|
|
|
|
function PetModel:IsNeedRed( tab_id )
|
|
local bool = false
|
|
if GetModuleIsOpen(163) then
|
|
if tab_id == PetConst.RED_DOT_TYPE.Feed then--升级
|
|
bool = self:CheckPetFeedRed()
|
|
elseif tab_id == PetConst.RED_DOT_TYPE.Evolve then--进化
|
|
bool = self:CheckPetEvolveRed()
|
|
elseif tab_id == PetConst.RED_DOT_TYPE.Diamond then--宝石
|
|
bool = self:CheckPetDiamondRed()
|
|
elseif tab_id == PetConst.RED_DOT_TYPE.Active then--激活
|
|
bool = self:CheckPetActiveRed()
|
|
elseif tab_id == PetConst.RED_DOT_TYPE.Vote then--投票
|
|
bool = self:CheckPetVoteRed()
|
|
elseif tab_id == PetConst.RED_DOT_TYPE.Reward then--领奖
|
|
bool = self:CheckPetRewardRed()
|
|
elseif tab_id == PetConst.RED_DOT_TYPE.Awake then--觉醒
|
|
bool = self:CheckPetAwakeRed()
|
|
elseif tab_id == PetConst.RED_DOT_TYPE.DiamondCompose then--宝石合成
|
|
bool = self:CheckDiamondComposeRed()
|
|
end
|
|
end
|
|
self.pet_red_dot_info[tab_id] = bool
|
|
self:Fire(PetConst.ANS_UPDATE_RED_DOT,tab_id,bool)
|
|
end
|
|
|
|
function PetModel:GetAllRedDot( )
|
|
return self.pet_red_dot_info
|
|
end
|
|
|
|
--获取宠物红点
|
|
function PetModel:GetPetRedDotByType(tab_type)
|
|
if not tab_type then return false end
|
|
return self.pet_red_dot_info[tab_type]
|
|
end
|
|
|
|
--获取单个宠物的升级红点
|
|
function PetModel:GetSingleFeedRedDot(pet_id)
|
|
return self.single_pet_feed_red_info[pet_id]
|
|
end
|
|
|
|
--获取单个宠物的进化红点
|
|
function PetModel:GetSingleEvolveRedDot(pet_id)
|
|
return self.single_pet_evolve_red_info[pet_id]
|
|
end
|
|
|
|
--获取单个宠物的激活红点
|
|
function PetModel:GetSingleActiveRedDot(pet_id)
|
|
return self.single_pet_active_red_info[pet_id]
|
|
end
|
|
|
|
--获取单个宠物稀有度类型的激活红点
|
|
function PetModel:GetSingleRareActiveRedDot(rare_type)
|
|
return self.single_pet_rare_active_red_info[rare_type]
|
|
end
|
|
|
|
--获得单个宠物的宝石红点
|
|
function PetModel:GetSingleDiamondRedDot(pet_id)
|
|
return self.single_pet_diamond_red_info[pet_id]
|
|
end
|
|
|
|
--获得单个宠物槽位的宝石红点
|
|
function PetModel:GetSingleSlotDiamondRedDot(pet_id,slot_id)
|
|
return self.single_pet_slot_diamond_red_info[pet_id][slot_id]
|
|
end
|
|
|
|
--获取单个宠物觉醒的红点
|
|
function PetModel:GetPetAwakeRedDot(pet_id)
|
|
return self.pet_awake_red[pet_id]
|
|
end
|
|
|
|
--获取宠物投票次数红点
|
|
function PetModel:GetPetVoteTimesRed( )
|
|
return self.pet_vote_red
|
|
end
|
|
|
|
--获取领奖红点
|
|
function PetModel:GetPetRewardRed( )
|
|
return self.pet_vote_reward_red
|
|
end
|
|
|
|
-------升级红点相关
|
|
function PetModel:IsFeedCostEnough(pet_race)
|
|
for k,v in pairs(self.upgrade_cost_cfg[pet_race].cost_material) do
|
|
local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(v[1])
|
|
if goods_num >= 1 then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function PetModel:CheckPetFeedRed()
|
|
local bool = false
|
|
for k,v in pairs(self.pet_list) do
|
|
if self:CheckPetFeedRedById(v.pet_id) then
|
|
bool = true
|
|
self.single_pet_feed_red_info[v.pet_id] = true
|
|
else
|
|
self.single_pet_feed_red_info[v.pet_id] = false
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
function PetModel:CheckPetFeedRedById(pet_id)
|
|
local data = self:GetPetListById(pet_id)
|
|
if not data then return false end
|
|
local cfg = self:GetPetCfg(data.pet_id,data.pet_star)
|
|
local max_lv = self:GetPetMaxLv(cfg.rare_degree)
|
|
if data.pet_lv < max_lv and self:IsFeedCostEnough(cfg.pet_race) then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
------------------------
|
|
|
|
-------进化红点相关
|
|
function PetModel:CheckPetEvolveRed()
|
|
local bool = false
|
|
for k,v in pairs(self.pet_list) do
|
|
if self:CheckPetEvolveRedById(v.pet_id) then
|
|
bool = true
|
|
self.single_pet_evolve_red_info[v.pet_id] = true
|
|
else
|
|
self.single_pet_evolve_red_info[v.pet_id] = false
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
function PetModel:CheckPetEvolveRedById(pet_id)
|
|
local data = self:GetPetListById(pet_id)
|
|
if not data then return false end
|
|
local next_star = self:GetNextStageAndStar(data.pet_id, data.pet_star)
|
|
local cfg_data = self:GetPetCfg(data.pet_id, next_star)
|
|
if not cfg_data then return false end
|
|
|
|
local cost_data = stringtotable(cfg_data.cost)
|
|
local goods_type_id = cost_data[1][2]
|
|
local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(goods_type_id)
|
|
local can_evolve = goods_num >= cost_data[1][3]
|
|
return can_evolve
|
|
end
|
|
------------------------
|
|
|
|
-------激活红点相关
|
|
function PetModel:CheckPetActiveRed()
|
|
for i=1,3 do
|
|
if self:CheckPetActiveRedByRareType(i) then return true end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function PetModel:CheckPetActiveRedByRareType(rare_type)
|
|
local data = self:GetPetRareCfg(rare_type)
|
|
self.single_pet_rare_active_red_info[rare_type] = false
|
|
local bool = false
|
|
for k,v in pairs(data) do
|
|
if self:CheckPetActiveRedById(v.pet_id) then
|
|
bool = true
|
|
self.single_pet_active_red_info[v.pet_id] = true
|
|
self.single_pet_rare_active_red_info[rare_type] = true
|
|
else
|
|
self.single_pet_active_red_info[v.pet_id] = false
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
function PetModel:CheckPetActiveRedById(pet_id)
|
|
local is_actived = self:IsPetActived(pet_id)
|
|
if is_actived then return false end
|
|
if not self:CanShowPet(pet_id) then return false end
|
|
|
|
local cfg = self:GetPetCfg(pet_id, 1)
|
|
local cost_table = stringtotable(cfg.cost)[1]--需要的消耗材料
|
|
local have_num = GoodsModel:getInstance():GetGoodsNumFromType(0,cost_table[2])--拥有的碎片数量
|
|
local need_num = cost_table[3]--需要的碎片数量
|
|
local enough = have_num >= need_num--是否达到解锁条件
|
|
return enough
|
|
end
|
|
------------------------
|
|
|
|
-------宝石红点相关
|
|
function PetModel:CheckPetDiamondRed()
|
|
local bool = false
|
|
for k,v in pairs(self.pet_list) do
|
|
if self:CheckPetDiamondRedById(v.pet_id) then
|
|
bool = true
|
|
self.single_pet_diamond_red_info[v.pet_id] = true
|
|
else
|
|
self.single_pet_diamond_red_info[v.pet_id] = false
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
function PetModel:CheckPetDiamondRedById(pet_id)
|
|
self.single_pet_slot_diamond_red_info[pet_id] = self.single_pet_slot_diamond_red_info[pet_id] or {}
|
|
|
|
local pet_race = self:GetPetRaceById(pet_id)
|
|
|
|
local list = DeepCopy(GoodsModel:getInstance():GetPetDiamondDicByType())
|
|
local diamond_type_data={}--保存该槽位的宝石类型
|
|
for i=1,4 do
|
|
local data = self:GetPetDiamondDataByIdAndSlot(pet_id,i)
|
|
if data then
|
|
if list[data.diamond_id] then
|
|
list[data.diamond_id] = nil
|
|
end
|
|
local diamond_type = self:GetPetDiamondCfg(data.diamond_id).diamond_type
|
|
table.insert(diamond_type_data,diamond_type)
|
|
end
|
|
end
|
|
local bool = false
|
|
for i=1,4 do
|
|
self.single_pet_slot_diamond_red_info[pet_id][i] = false
|
|
if not self:GetPetDiamondDataByIdAndSlot(pet_id,i) then
|
|
for k,v in pairs(list) do
|
|
local diamond_race = self:GetPetDiamondCfg(k).need_race
|
|
local diamond_type_2 = self:GetPetDiamondCfg(k).diamond_type
|
|
if v and diamond_race == pet_race then
|
|
local is_different_type = true
|
|
for kk,vv in pairs(diamond_type_data) do
|
|
if vv == diamond_type_2 then
|
|
is_different_type = false
|
|
end
|
|
end
|
|
self.single_pet_slot_diamond_red_info[pet_id][i] = is_different_type
|
|
bool = is_different_type
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
------------------------
|
|
|
|
--投票红点
|
|
function PetModel:CheckPetVoteRed( )
|
|
local bool = self.my_left_vote_times > 0 and self:CanVotePetRank()
|
|
self.pet_vote_red = bool
|
|
return bool
|
|
end
|
|
|
|
--领奖红点
|
|
function PetModel:CheckPetRewardRed( )
|
|
local bool = false
|
|
for k,v in pairs(self.pet_rank_reward_data) do
|
|
if v.is_received == 0 then
|
|
bool = true
|
|
break
|
|
end
|
|
end
|
|
self.pet_vote_reward_red = bool
|
|
return bool
|
|
end
|
|
|
|
--觉醒红点
|
|
function PetModel:CheckPetAwakeRed( )
|
|
if not GetModuleIsOpen(163,4) then return false end
|
|
local bool = false
|
|
for k,v in pairs(self.pet_list) do
|
|
if v.is_awaken == 0 then --未觉醒
|
|
local awake_cfg = self:GetPetAwakeCfg(v.pet_id)
|
|
local cost_data = stringtotable(awake_cfg.cost_material)
|
|
local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(cost_data[1][2])
|
|
if goods_num >= cost_data[1][3] and v.pet_star >= awake_cfg.need_star then
|
|
bool = true
|
|
self.pet_awake_red[v.pet_id] = true
|
|
else
|
|
self.pet_awake_red[v.pet_id] = false
|
|
end
|
|
else
|
|
self.pet_awake_red[v.pet_id] = false
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
--宝石合成红点
|
|
function PetModel:CheckDiamondComposeRed( )
|
|
if not GetModuleIsOpen(163,1) then return false end
|
|
local bool = false
|
|
local material_data = nil
|
|
local diamond_num = 0
|
|
for k,v in pairs(self.pet_diamond_compose_cfg) do
|
|
for m,n in pairs(v) do
|
|
material_data = stringtotable(n.compound_list)
|
|
diamond_num = GoodsModel:getInstance():GetPetDiamondNumByTypeID(material_data[1][1])
|
|
if diamond_num >= 3 then
|
|
bool = true
|
|
self.diamond_compose_red[n.stone_id] = true
|
|
else
|
|
self.diamond_compose_red[n.stone_id] = false
|
|
end
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
function PetModel:GetPetDiamnondComposeRedById(diamond_id)
|
|
return self.diamond_compose_red[diamond_id] and self.diamond_compose_red[diamond_id] or false
|
|
end
|
|
|
|
function PetModel:GetPetDiamnondComposeRedList( )
|
|
return self.diamond_compose_red
|
|
end
|
|
|
|
------------红点------END
|
|
|
|
|
|
--计算宠物战力
|
|
function PetModel:GetPetFightById(pet_id)
|
|
local diamond_data = self:GetPetDiamondDataById(pet_id)--取出宝石所加的属性一并计算
|
|
local pet_data = self:GetPetListById(pet_id)
|
|
local pet_cfg = self:GetPetCfg(pet_id, pet_data.pet_star)
|
|
local awake_cfg = nil
|
|
if pet_data.is_awaken == 1 then
|
|
awake_cfg = self:GetPetAwakeCfg(pet_id)
|
|
end
|
|
local attr_list = self:GetPetAttrList(pet_data.pet_lv,stringtotable(pet_cfg.attr_list),diamond_data,awake_cfg,pet_data.pet_star,pet_data.pet_id)
|
|
--上面拿到的属性列表list不是Getfighting用到的参数格式,先转一下格式
|
|
local need_attr_list = {}
|
|
for k,v in pairs(attr_list) do
|
|
local data = {v[1],v[2]}
|
|
table.insert(need_attr_list,data)
|
|
end
|
|
local fight_value = GetFighting(need_attr_list,true)
|
|
|
|
--技能基础战力添加
|
|
for i=1,4 do
|
|
local skill_data = self:GetPetSkillCfg(pet_id,i,awake_cfg)
|
|
if skill_data and pet_data.pet_star >= skill_data.active_star then
|
|
local skill_id = skill_data.skill_talent_id
|
|
local conf_power = GetSkillConfPowerBySkill(skill_id, 1)
|
|
fight_value = fight_value + conf_power
|
|
end
|
|
end
|
|
|
|
return fight_value
|
|
end
|
|
|
|
--传入petdata的计算战力方式
|
|
function PetModel:GetPetFightByData(data)
|
|
local pet_data = data
|
|
local diamond_data = self:GetPetDiamondDataById(pet_data.pet_id)--取出宝石所加的属性一并计算
|
|
local pet_cfg = self:GetPetCfg(pet_data.pet_id, pet_data.pet_star)
|
|
local awake_cfg = nil
|
|
if pet_data.is_awaken == 1 then
|
|
awake_cfg = self:GetPetAwakeCfg(pet_data.pet_id)
|
|
end
|
|
local attr_list = self:GetPetAttrList(pet_data.pet_lv,stringtotable(pet_cfg.attr_list),diamond_data,awake_cfg,pet_data.pet_star,pet_data.pet_id)
|
|
--上面拿到的属性列表list不是Getfighting用到的参数格式,先转一下格式
|
|
local need_attr_list = {}
|
|
for k,v in pairs(attr_list) do
|
|
local data = {v[1],v[2]}
|
|
table.insert(need_attr_list,data)
|
|
end
|
|
local fight_value = GetFighting(need_attr_list,true)
|
|
|
|
--技能基础战力添加
|
|
for i=1,4 do
|
|
local skill_data = self:GetPetSkillCfg(pet_data.pet_id,i,awake_cfg)
|
|
if skill_data and pet_data.pet_star >= skill_data.active_star then
|
|
local skill_id = skill_data.skill_talent_id
|
|
local conf_power = GetSkillConfPowerBySkill(skill_id, 1)
|
|
fight_value = fight_value + conf_power
|
|
end
|
|
end
|
|
|
|
return fight_value
|
|
end
|
|
|
|
--计算声援加成系数之后的战力
|
|
function PetModel:GetPetAditionFightById(pet_id,adition)
|
|
local diamond_data = self:GetPetDiamondDataById(pet_id)--取出宝石所加的属性一并计算
|
|
local pet_data = self:GetPetListById(pet_id)
|
|
local pet_cfg = self:GetPetCfg(pet_id, pet_data.pet_star)
|
|
local awake_cfg = nil
|
|
if pet_data.is_awaken == 1 then
|
|
awake_cfg = self:GetPetAwakeCfg(pet_id)
|
|
end
|
|
local attr_list = self:GetPetAttrList(pet_data.pet_lv,stringtotable(pet_cfg.attr_list),diamond_data,awake_cfg,pet_data.pet_star,pet_data.pet_id)
|
|
--上面拿到的属性列表list不是Getfighting用到的参数格式,先转一下格式,并把加成系数算进去
|
|
local need_attr_list = {}
|
|
for k,v in pairs(attr_list) do
|
|
local adition_attr = v[2]*(1+adition)
|
|
local data = {v[1],adition_attr}
|
|
table.insert(need_attr_list,data)
|
|
end
|
|
local fight_value = GetFighting(need_attr_list,true)
|
|
|
|
--技能基础战力添加
|
|
for i=1,4 do
|
|
local skill_data = self:GetPetSkillCfg(pet_data.pet_id,i,awake_cfg)
|
|
if skill_data and pet_data.pet_star >= skill_data.active_star then
|
|
local skill_id = skill_data.skill_talent_id
|
|
local conf_power = GetSkillConfPowerBySkill(skill_id, 1)
|
|
fight_value = fight_value + conf_power
|
|
end
|
|
end
|
|
|
|
return fight_value
|
|
end
|
|
|
|
|
|
--获取当前出战的宠物战斗技能id列表
|
|
function PetModel:GetFollowPetFightSkillIdList()
|
|
local fight_skill_data = {}
|
|
if not self.follow_pet or self.follow_pet == 0 then
|
|
return fight_skill_data
|
|
end
|
|
|
|
local follow_pet_data = self:GetPetListById(self.follow_pet)
|
|
for i=1,4 do--遍历4个技能槽位,找到战斗技能
|
|
local fight_skill_cfg = self:GetPetSkillCfg(self.follow_pet,i,follow_pet_data.is_awaken==1)
|
|
if fight_skill_cfg.skill_talent_type == 2 then --类型2为战斗技能
|
|
if self:IsPetSkillActive(follow_pet_data.pet_star, fight_skill_cfg.active_star) then
|
|
table.insert(fight_skill_data,fight_skill_cfg.skill_talent_id)
|
|
end
|
|
end
|
|
end
|
|
|
|
return fight_skill_data
|
|
end
|
|
|
|
--获取当前助战的宠物战斗大招技能id
|
|
function PetModel:GetHelpPetFightSkillIdList( )
|
|
local skill_id_list = {}
|
|
local pet_1 = self:GetPetSupportDataBySlot(2)
|
|
local pet_2 = self:GetPetSupportDataBySlot(3)
|
|
|
|
if pet_1 then
|
|
local pet_1_data = self:GetPetListById(pet_1.pet_id)
|
|
local pet_1_skill_cfg = self:GetPetSkillCfg(pet_1_data.pet_id, 4, pet_1_data.is_awaken==1)
|
|
if self:IsPetSkillActive(pet_1_data.pet_star, pet_1_skill_cfg.active_star) then
|
|
local temp = {
|
|
pet_id = pet_1_data.pet_id,
|
|
pet_star = pet_1_data.pet_star,
|
|
pet_skill = pet_1_skill_cfg.skill_talent_id,
|
|
}
|
|
table.insert(skill_id_list,temp)
|
|
end
|
|
end
|
|
|
|
if pet_2 then
|
|
local pet_2_data = self:GetPetListById(pet_2.pet_id)
|
|
local pet_2_skill_cfg = self:GetPetSkillCfg(pet_2_data.pet_id, 4, pet_2_data.is_awaken==1)
|
|
if self:IsPetSkillActive(pet_2_data.pet_star, pet_2_skill_cfg.active_star) then
|
|
local temp = {
|
|
pet_id = pet_2_data.pet_id,
|
|
pet_star = pet_2_data.pet_star,
|
|
pet_skill = pet_2_skill_cfg.skill_talent_id,
|
|
}
|
|
table.insert(skill_id_list,temp)
|
|
end
|
|
end
|
|
|
|
return skill_id_list
|
|
end
|
|
|
|
--根据宠物id pet_id、宠物星级 pet_star查找相应宠物配置
|
|
function PetModel:GetPetBaseFightCfg(pet_id,pet_star)
|
|
print("huangcong:PetModel [start:1035] :", pet_id,pet_star)
|
|
for k,v in pairs(self.pet_cfg) do
|
|
if v.pet_id == pet_id and v.pet_star == pet_star then
|
|
local base_attr = stringtotable(DeepCopy(v.attr_list))
|
|
base_attr = SortAttrList( base_attr )
|
|
print("huangcong:PetModel [start:1039] :", base_attr)
|
|
PrintTable(base_attr)
|
|
print("huangcong:PetModel [end]")
|
|
|
|
local new_base_attr = {}
|
|
for i,v in ipairs(base_attr) do
|
|
local attr = {}
|
|
attr[1] = v[1]
|
|
attr[2] = v[2]
|
|
new_base_attr[#new_base_attr + 1] = attr
|
|
end
|
|
print("huangcong:PetModel [start:1051] :", GetFighting(new_base_attr))
|
|
PrintTable(new_base_attr)
|
|
print("huangcong:PetModel [end]")
|
|
return GetFighting(new_base_attr)
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function PetModel:ChangeFightPetScene(vo,do_skill_call_back)
|
|
data = {
|
|
role_id = RoleManager.Instance.mainRoleInfo.role_id,
|
|
pet_id = vo.pet_id,
|
|
is_follow = 1,
|
|
pet_star = vo.pet_star,
|
|
}
|
|
self:Fire(PetConst.UPDATE_SCENE_PET_MODEL,data,do_skill_call_back)
|
|
end
|
|
|
|
|
|
--提供一个通过碎片goods_id获取宠物基础属性列表的接口给皮皮聪
|
|
function PetModel:GetConfAttrListByGoodsId(goods_id)
|
|
local attr_list = {}
|
|
for k,v in pairs(self.pet_cfg) do
|
|
local cost = stringtotable(v.cost)
|
|
if v.pet_star == 1 and cost[1] and cost[1][2] == goods_id then
|
|
attr_list = stringtotable(v.attr_list)
|
|
break
|
|
end
|
|
end
|
|
return attr_list
|
|
end
|
|
|
|
--根据碎片goodsid获取宠物形象(最小的形象)
|
|
function PetModel:GetPetFigureByGoodsId(goods_id)
|
|
for k,v in pairs(self.pet_cfg) do
|
|
local cost = stringtotable(v.cost)
|
|
if v.pet_star == 1 and cost[1] and cost[1][2] == goods_id then
|
|
return v.figure_id, Trim(v.pet_name)
|
|
end
|
|
end
|
|
return 1121,""
|
|
end
|
|
|
|
--根据碎片goodsid获取宠物id
|
|
function PetModel:GetPetIdByGoodsId(goods_id)
|
|
for k,v in pairs(self.pet_cfg) do
|
|
local cost = stringtotable(v.cost)
|
|
if v.pet_star == 1 and cost[1] and cost[1][2] == goods_id then
|
|
return v.pet_id
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--根据宠物的宝石列表得出宝石光环特效资源名 规则:4个宝石全穿戴,以其中最低品质为资源
|
|
function PetModel:GetPokemonDiamondEffectRes(pokemon_id)
|
|
local diamond_data = self:GetPetDiamondDataById(pokemon_id)
|
|
if not diamond_data then return nil end
|
|
--找到身上品质最高的宝石颜色
|
|
local low_color = 6
|
|
local diamond_num = 0
|
|
for k,v in pairs(diamond_data) do
|
|
diamond_num = diamond_num + 1
|
|
local color = GoodsModel:getInstance():GetGoodsColorNum(v.diamond_id)
|
|
if color < low_color then
|
|
low_color = color
|
|
end
|
|
end
|
|
--颜色3(紫色)以上才开始有资格创建光环特效
|
|
local diamond_effect_res = nil
|
|
if low_color >= 3 and diamond_num == 4 then
|
|
diamond_effect_res = "effect_pet_guanghuan_00"..(low_color-2)
|
|
end
|
|
return diamond_effect_res
|
|
end
|
|
|
|
--根据宠物id获取宠物的原生id(即宠物最初形态的形象id)
|
|
function PetModel:GetPetOriginalFigureId(pet_id)
|
|
local pet_cfg = self:GetPetCfg(pet_id,1)
|
|
return pet_cfg and pet_cfg.figure_id or nil
|
|
end
|
|
|
|
---------宠物生活技能--------->>>>>>>
|
|
function PetModel:IsLifeSkillActived(skill_id)
|
|
--后端提交前先屏蔽
|
|
-- do return false end
|
|
|
|
--判断技能是否存在或是否被屏蔽
|
|
local is_skill_have = false
|
|
for k,v in pairs(PetConst.LifeSkill) do
|
|
if v == skill_id then
|
|
is_skill_have = true
|
|
break
|
|
end
|
|
end
|
|
if not is_skill_have then return false end
|
|
|
|
local is_in_shiled_list = false
|
|
for k,v in pairs(PetConst.LifeSkillShieldList) do
|
|
if v == skill_id then
|
|
is_in_shiled_list = true
|
|
break
|
|
end
|
|
end
|
|
if is_in_shiled_list then return false end
|
|
|
|
--判断是否有生活技能配置
|
|
local life_skill_cfg = self:GetPetLifeSkillCfgById(skill_id)
|
|
if not life_skill_cfg then return false end
|
|
|
|
--判断是否激活宠物
|
|
local pet_data = self:GetPetListById(life_skill_cfg.pet_id)
|
|
if not pet_data then return false end
|
|
|
|
--判断宠物星数是否达成激活技能
|
|
return pet_data.pet_star >= life_skill_cfg.active_star
|
|
end
|
|
|
|
function PetModel:AdvicePetLifeSkillActived(pet_id)
|
|
--获取宠物的技能id
|
|
local life_skill_id = 0
|
|
local skill_cfg = self:GetPetSkillCfg(pet_id,1)
|
|
if skill_cfg then
|
|
life_skill_id = skill_cfg.skill_talent_id
|
|
end
|
|
|
|
if self:IsLifeSkillActived(life_skill_id) then
|
|
self:Fire(PetConst.PET_LIFE_SKILL_ACTIVED,life_skill_id)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
---------宠物生活技能---------<<<<<<<
|