diff --git a/game/engines/default/engine/dialogs/UseTalents.lua b/game/engines/default/engine/dialogs/UseTalents.lua index aed5d6a4f1354cff63973b892153540560754c0d..9b1087ced26ce6baa7d8bf0589fb7dd75adf54e2 100644 --- a/game/engines/default/engine/dialogs/UseTalents.lua +++ b/game/engines/default/engine/dialogs/UseTalents.lua @@ -139,8 +139,8 @@ function _M:generateList() for j, t in ipairs(tt.talents) do if self.actor:knowTalent(t.id) and t.mode ~= "passive" then local typename = "talent" - local status = "#LIGHT_GREEN#Active#WHITE#" - if t.mode == "sustained" then status = self.actor:isTalentActive(t.id) and "#YELLOW#Sustaining#WHITE#" or "#LIGHT_GREEN#Sustain#WHITE#" end + local status = tstring{{"color", "LIGHT_GREEN"}, "Active"} + if t.mode == "sustained" then status = self.actor:isTalentActive(t.id) and tstring{{"color", "YELLOW"}, "Sustaining"} or tstring{{"color", "LIGHT_GREEN"}, "Sustain"} end list[#list+1] = { char=self:makeKeyChar(letter), name=t.name.." ("..typename..")", status=status, talent=t.id, desc=self.actor:getTalentFullDescription(t) } list.chars[self:makeKeyChar(letter)] = list[#list] if not self.sel then self.sel = #list + 1 end @@ -150,7 +150,7 @@ function _M:generateList() end if added then - table.insert(list, where+1, { char="", name="#{bold}#"..cat:capitalize().." / "..tt.name:capitalize().."#{normal}#", type=tt.type, color={0x80, 0x80, 0x80}, status="", desc=tt.description }) + table.insert(list, where+1, { char="", name=tstring{{"font","bold"}, cat:capitalize().." / "..tt.name:capitalize(), {"font","normal"}}, type=tt.type, color={0x80, 0x80, 0x80}, status="", desc=tt.description }) end end for i = 1, #list do list[i].id = i end diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index 0fb1001ed068182877e65df835c2ed185126d7c5..f6aa71583b5b96b8a27e35dafac1d53f271b7b92 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -80,6 +80,7 @@ function _M:init(t, no_default) self.combat_mentalresist = 0 self.fatigue = 0 + self.healing_factor = 1 self.spell_cooldown_reduction = 0 @@ -523,7 +524,7 @@ function _M:onHeal(value, src) if self:hasEffect(self.EFF_UNSTOPPABLE) then return 0 end - return value + return value * self.healing_factor end --- Called before taking a hit, it's the chance to check for shields diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua index 49edc07b62309e5cacc22371abaecec374bf5668..f83f0b98f9a71f113b69a85a1d05a379909550c6 100644 --- a/game/modules/tome/class/Object.lua +++ b/game/modules/tome/class/Object.lua @@ -370,6 +370,8 @@ function _M:getTextualDesc() if w.movement_speed then desc:add(("Movement speed: %d%%"):format(w.movement_speed * 100), true) end + if w.healing_factor then desc:add(("Increases all healing by %d%%"):format(w.healing_factor * 100), true) end + end if self.wielder then diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua index d1238807b31b8aa2d78d79de4f16f5f9fbcce9b1..c6ba451a2e86765b1fafcd6f796574189018e8a4 100644 --- a/game/modules/tome/data/general/objects/world-artifacts.lua +++ b/game/modules/tome/data/general/objects/world-artifacts.lua @@ -1017,7 +1017,6 @@ newEntity{ base = "BASE_LEATHER_BELT", }, } - newEntity{ base = "BASE_LEATHER_BELT", unique = true, name = "Girdle of Preservation", @@ -1048,6 +1047,113 @@ newEntity{ base = "BASE_LEATHER_BELT", }, } +newEntity{ base = "BASE_LEATHER_BELT", + unique = true, + name = "Goldberry's Girdle of the Calm Waters", + unided_name = "golden belt", + desc = [[A belt rumoured to have been worn by Goldenberry.]], + color = colors.GOLD, + level_range = {5, 14}, + rarity = 120, + cost = 75, + material_level = 2, + wielder = { + inc_stats = { [Stats.STAT_WIL] = 3, }, + resists = { + [DamageType.COLD] = 20, + [DamageType.BLIGHT] = 20, + [DamageType.NATURE] = 20, + }, + healing_factor = 0.3, + }, +} + +newEntity{ base = "BASE_HEAVY_ARMOR", + unique = true, + name = "Iron Mail of Bloodletting", + unided_name = "gore-encrusted suit of iron mail", + desc = [[Blood drips continuously from this fell suit of iron, and dark magics churn almost visibly around it. Bloody ruin comes to those who stand against its wearer.]], + color = colors.RED, + level_range = {15, 25}, + rarity = 190, + require = { stat = { str=14 }, }, + cost = 200, + material_level = 1, + wielder = { + inc_stats = { [Stats.STAT_CON] = 2, [Stats.STAT_STR] = 2 }, + resists = { + [DamageType.ACID] = 10, + [DamageType.DARKNESS] = 10, + [DamageType.FIRE] = 10, + [DamageType.BLIGHT] = 10, + }, + talents_types_mastery = { ["technique/bloodthirst"] = 0.1 }, + life_regen = 0.5, + combat_def = 2, + combat_armor = 4, + fatigue = 12, + }, +} + + +newEntity{ base = "BASE_HEAVY_ARMOR", + unique = true, + name = "Scale Mail of Smaug the Golden", + unided_name = "perfectly-wrought suit of dragon scales", + desc = [[A heavy shirt of scale mail constructed from the remains of Smaug the Golden, whose armor was like tenfold shields. Unlike the original Smaug scale armor, this one isn't missing any scales.]], + color = colors.LIGHT_RED, + metallic = false, + level_range = {38, 45}, + rarity = 300, + require = { stat = { str=38 }, }, + cost = 500, + material_level = 5, + wielder = { + inc_stats = { [Stats.STAT_CON] = 4, [Stats.STAT_STR] = 5, [Stats.STAT_DEX] = 3 }, + resists = { + [DamageType.ACID] = 20, + [DamageType.LIGHTNING] = 20, + [DamageType.FIRE] = 20, + [DamageType.BLIGHT] = 20, + [DamageType.NATURE] = 20, + }, + max_life=120, + combat_def = 10, + combat_armor = 14, + }, + max_power = 80, power_regen = 1, + use_talent = { id = Talents.T_INFERNO, level = 3, power = 50 }, +} + +newEntity{ base = "BASE_MASSIVE_ARMOR", + unique = true, + name = "Plate Armor of the Returned King", + unided_name = "suit of gleaming mithril plate", + desc = [[Beautifully detailed with images of King Aragorn's siege of the Black Gate, this armor was presented to the Returned King at his coronation ceremony. Despair fills the hearts of even the blackest villains at the sight of it.]], + color = colors.WHITE, + level_range = {45, 50}, + rarity = 350, + require = { stat = { str=48 }, }, + cost = 800, + material_level = 5, + wielder = { + inc_stats = { [Stats.STAT_WIL] = 9, }, + resists = { + [DamageType.ACID] = 25, + [DamageType.ARCANE] = 10, + [DamageType.FIRE] = 25, + [DamageType.BLIGHT] = 25, + [DamageType.DARKNESS] = 25, + }, + max_stamina = 60, + combat_def = 15, + combat_armor = 20, + stun_immune = 0.5, + knockback_immune = 0.5, + lite = 1, + }, +} + --[=[ newEntity{ unique = true,