diff --git a/src/actions/GmAction.lua b/src/actions/GmAction.lua index 4c171ae..6be0772 100644 --- a/src/actions/GmAction.lua +++ b/src/actions/GmAction.lua @@ -292,13 +292,17 @@ end table.insert(helpDes, {"获取冒险内道具", "advit"}) function _M.advit(role, pms) - local advItems = role:getProperty("advItems") + local reward = {} for k, v in pairs(csvdb["adv_itemCsv"]) do if csvdb["itemCsv"][k] and v.effect ~= 0 then - advItems = advItems:incrv(k, 1) + reward[k] = 1 end end - role:updateProperty({field = "advItems", value = advItems}) + for k , v in pairs(csvdb["adv_artifactCsv"]) do + reward[k] = 1 + end + local adv = role:getAdvData() + adv:award(reward) return "成功" end diff --git a/src/adv/AdvBattle.lua b/src/adv/AdvBattle.lua index eb912be..691d44b 100644 --- a/src/adv/AdvBattle.lua +++ b/src/adv/AdvBattle.lua @@ -62,7 +62,7 @@ function Battle:initPlayer() for _, hero in pairs(attrs) do player[attrName] = (player[attrName] or 0) + hero[attrName] end - palyer.growth[attrName] = player[attrName] * 0.025 + player.growth[attrName] = player[attrName] * 0.025 end player.hpMax = player.hp or 0 diff --git a/src/adv/AdvBuff.lua b/src/adv/AdvBuff.lua index 9050b25..db758be 100644 --- a/src/adv/AdvBuff.lua +++ b/src/adv/AdvBuff.lua @@ -27,9 +27,9 @@ Buff.EXP_UP = 24 -- 杀敌经验提高 Buff.DISABLE_BUFF = 25 -- 禁用固有技 Buff.ATTR_CHANGE_COND = 26 --属性变化(状态)有条件 Buff.CHANGE_DROP_TO_CLICK = 27 --掉落转换为click -Buff.SP_MAX_CHANGE = 28, -- 魔法上限 -Buff.ITEM_GET_UP = 29, -- 获得道具数量增加 -Buff.Buff_EFFECT_CHANGE = 30, -- 改变 buff 效果 +Buff.SP_MAX_CHANGE = 28 -- 魔法上限 +Buff.ITEM_GET_UP = 29 -- 获得道具数量增加 +Buff.Buff_EFFECT_CHANGE = 30 -- 改变 buff 效果 --角色一些属性的变化 local function commonAttr(_Buff, attrName) @@ -55,16 +55,41 @@ end local function commonAttCond(_Buff, attrName) _Buff._init = function(self, data) --初始化变化值 self._changeV = self:_calculate() - self.owner:reSetAttr(attrName) + self:_reSetAttr(true) end _Buff._overlay = function(self) self._changeV = (self._changeV or 0) + self:_calculate() - self.owner:reSetAttr(attrName) + self:_reSetAttr(true) end _Buff._uncover = function(self) self._changeV = self._changeV - self._changeV / (self.layer + 1) - self.owner:reSetAttr(attrName) + self:_reSetAttr() + end + + _Buff._hpChange = function(self) + local oldHpMax = self.owner.hpMax + self.owner:reSetHpMax() + + local curValue = self.owner.hpMax - oldHpMax + if curValue > 0 then + self.owner:recover(curValue, self.release) -- 防止release不存在,地图点buff + elseif curValue < 0 then + self.owner:hurt(self.release and self.release:getHurtValue(-curValue) or -curValue, self.release, {hurtType = 2, buffId = self.id}) + end + end + + _Buff._reSetAttr = function(self, isInit) + if attrName == "hp" then + if isInit then + self:_hpChange() + else + self.owner:reSetHpMax() + end + else + self.owner:reSetAttr(attrName) + end end + _Buff._calculate = function(self) local effectCount = 0 if self.buffData.effectValue4 == 0 then @@ -79,7 +104,7 @@ local function commonAttCond(_Buff, attrName) return self.buffData.effectValue1, self._changeV, attrName end _Buff._endBuff = function(self, data) - self.owner:reSetAttr(attrName) + self:_reSetAttr() end _Buff._getDB = function(self) return {cv = self._changeV} @@ -306,7 +331,7 @@ local BuffFactory = { _Buff._effectValue = function(self) return self.buffData.effectValue1, self.buffData.effectValue2 * self.layer end - end + end, [Buff.ITEM_GET_UP] = function(_Buff) _Buff._effectValue = function(self) diff --git a/src/adv/AdvPlayer.lua b/src/adv/AdvPlayer.lua index 2651a83..88b300b 100644 --- a/src/adv/AdvPlayer.lua +++ b/src/adv/AdvPlayer.lua @@ -297,7 +297,9 @@ function BaseObject:reSetHpMax() end end end - self.hpMax = math.max(1, self.hpMax) + local effect = self:getAttrBuffChange("hp") + self.hpMax = (self.hpMax + effect[0]) * (1 + effect[1])) + self.hpMax = math.ceil(math.max(1, self.hpMax)) self.hp = math.min(self.hpMax, self.hp) end -- libgit2 0.21.2