diff --git a/game/modules/tome/class/PlayerDisplay.lua b/game/modules/tome/class/PlayerDisplay.lua index 55bf0b4d19cab9ae09edffd23424202c1b549de0..7a0e4b38933cba177e947737b3d7da34a09f413d 100644 --- a/game/modules/tome/class/PlayerDisplay.lua +++ b/game/modules/tome/class/PlayerDisplay.lua @@ -226,6 +226,16 @@ function _M:display() self:mouseTooltip(self.TOOLTIP_LIFE, self:makeTextureBar("#c00000#Life:", nil, player.life, player.max_life, player.life_regen * util.bound((player.healing_factor or 1), 0, 2.5), x, h, 255, 255, 255, colors.DARK_RED, colors.VERY_DARK_RED)) h = h + self.font_h + local shield, max_shield = 0, 0 + if player:attr("time_shield") then shield = shield + player.time_shield_absorb max_shield = max_shield + player.time_shield_absorb_max end + if player:attr("damage_shield") then shield = shield + player.damage_shield_absorb max_shield = max_shield + player.damage_shield_absorb_max end + if player:attr("displacement_shield") then shield = shield + player.displacement_shield max_shield = max_shield + player.displacement_shield_max end + if player:attr("repulsion_shield") then shield = shield + player.repulsion_shield_absorb max_shield = max_shield + player.repulsion_shield_absorb_max end + if player:attr("damage_shunt") then shield = shield + player.damage_shunt_absorb max_shield = max_shield + player.damage_shunt_absorb_max end + if max_shield then + self:mouseTooltip(self.TOOLTIP_DAMAGE_SHIELD, self:makeTextureBar("#WHITE#Shield:", nil, shield, max_shield, nil, x, h, 255, 255, 255, {r=colors.GREY.r / 3, g=colors.GREY.g / 3, b=colors.GREY.b / 3}, {r=colors.GREY.r / 6, g=colors.GREY.g / 6, b=colors.GREY.b / 6})) h = h + self.font_h + end + if player:knowTalent(player.T_STAMINA_POOL) then self:mouseTooltip(self.TOOLTIP_STAMINA, self:makeTextureBar("#ffcc80#Stamina:", nil, player:getStamina(), player.max_stamina, player.stamina_regen, x, h, 255, 255, 255, {r=0xff / 3, g=0xcc / 3, b=0x80 / 3}, {r=0xff / 6, g=0xcc / 6, b=0x80 / 6})) h = h + self.font_h end diff --git a/game/modules/tome/class/interface/TooltipsData.lua b/game/modules/tome/class/interface/TooltipsData.lua index f2d33bf75f779646b4a82192d2f6912c6404bb9f..40b54023c6606c1aadcb65300c5322acc4a8ff2e 100644 --- a/game/modules/tome/class/interface/TooltipsData.lua +++ b/game/modules/tome/class/interface/TooltipsData.lua @@ -42,6 +42,11 @@ If it reaches below zero you die. Death is usually permanent so beware! It is increased by Constitution.]] +TOOLTIP_DAMAGE_SHIELD = [[#GOLD#Damage shields#LAST# +Various talents, items and powers can grant you a temporary damage shield. +They all work in slightly different maners, but usualy will absorb some damage before crumbling down. +]] + TOOLTIP_UNNATURAL_BODY = [[#GOLD#Unnatrual Body Regeneration#LAST# Your Unnatural Body talent allows you to feed of the life of your fallen foes. Each time you kill a creature your maximum regeneration pool increases and each turn some of it transfers into your own life.]] diff --git a/game/modules/tome/data/timed_effects.lua b/game/modules/tome/data/timed_effects.lua index b6cda58bc13e2bd8b2c9a507fd7f2d79cecae496..3868abfbd114a817b185ec50aa20dcb051ed7fb6 100644 --- a/game/modules/tome/data/timed_effects.lua +++ b/game/modules/tome/data/timed_effects.lua @@ -1132,6 +1132,7 @@ newEffect{ if self:attr("shield_factor") then eff.power = eff.power * (100 + self:attr("shield_factor")) / 100 end if self:attr("shield_dur") then eff.dur = eff.dur + self:attr("shield_dur") end self.displacement_shield = eff.power + self.displacement_shield_max = eff.power self.displacement_shield_chance = eff.chance --- Warning there can be only one time shield active at once for an actor self.displacement_shield_target = eff.target @@ -1149,6 +1150,7 @@ newEffect{ deactivate = function(self, eff) self:removeParticles(eff.particle) self.displacement_shield = nil + self.displacement_shield_max = nil self.displacement_shield_chance = nil self.displacement_shield_target = nil end, @@ -1172,12 +1174,14 @@ newEffect{ eff.tmpid = self:addTemporaryValue("damage_shield", eff.power) --- Warning there can be only one time shield active at once for an actor self.damage_shield_absorb = eff.power + self.damage_shield_absorb_max = eff.power eff.particle = self:addParticles(Particles.new("damage_shield", 1)) end, deactivate = function(self, eff) self:removeParticles(eff.particle) self:removeTemporaryValue("damage_shield", eff.tmpid) self.damage_shield_absorb = nil + self.damage_shield_absorb_max = nil end, } @@ -1199,6 +1203,7 @@ newEffect{ eff.tmpid = self:addTemporaryValue("time_shield", eff.power) --- Warning there can be only one time shield active at once for an actor self.time_shield_absorb = eff.power + self.time_shield_absorb_max = eff.power eff.particle = self:addParticles(Particles.new("time_shield", 1)) end, deactivate = function(self, eff) @@ -1211,6 +1216,7 @@ newEffect{ self:removeTemporaryValue("time_shield", eff.tmpid) self.time_shield_absorb = nil + self.time_shield_absorb_max = 0 end, } @@ -3428,11 +3434,14 @@ newEffect{ eff.kbid = self:addTemporaryValue("on_melee_hit", {[DamageType.REPULSION]= eff.power}) eff.particle = self:addParticles(Particles.new("gravity_focus", 1)) self.repulsion_shield_absorb = eff.power + self.repulsion_shield_absorb_max = eff.power end, deactivate = function(self, eff) self:removeTemporaryValue("repulsion_shield", eff.tmpid) self:removeTemporaryValue("on_melee_hit", eff.kbid) self:removeParticles(eff.particle) + self.repulsion_shield_absorb = nil + self.repulsion_shield_absorb_max = nil end, }