diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 9bd5e3b9e30978181b5c1d147e7f3d784ce225a9..78f5baef72ff7288a4b54b4d79fe5822c5472533 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -886,6 +886,7 @@ end function _M:dieClonesDie() if not self.level then return end local p = self:getPlayer(true) + if not p.puuid then return end for uid, e in pairs(self.level.entities) do if p.puuid == e.puuid and e ~= p then self.level:removeEntity(e) end end diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua index 2b8cad5d1524a2a1c5de71aa82ac79197ca4916a..dfd45209efb24ce116a1ccfd7d40f9ccf3721a65 100644 --- a/game/modules/tome/data/general/objects/world-artifacts.lua +++ b/game/modules/tome/data/general/objects/world-artifacts.lua @@ -783,6 +783,48 @@ newEntity{ base = "BASE_SHIELD", }, } +newEntity{ base = "BASE_SHIELD", + power_source = {nature=true}, + unique = true, + name = "Black Mesh", image = "object/artifact/shield_mesh.png", + unided_name = "pile of tendrils", + desc = [[Black, interwoven tendrils form this mesh that can be used as shield. It reacts visibly to your touch, clinging to your arm and engulfing it in a warm, black mass.]], + color = colors.BLACK, + level_range = {15, 30}, + rarity = 270, + require = { stat = { str=20 }, }, --make str to 20 + cost = 400, + material_level = 3, + metallic = false, + special_combat = { + dam = resolvers.rngavg(25,35), + block = resolvers.rngavg(90, 120), + physcrit = 5, + dammod = {str=1}, + }, + wielder = { + combat_armor = 2, + combat_def = 8, + combat_def_ranged = 8, + fatigue = 12, + learn_talent = { [Talents.T_BLOCK] = 3, }, + resists = { [DamageType.BLIGHT] = 15, [DamageType.DARKNESS] = 30, }, + stamina_regen = 2, + + }, + on_block = function(self, who, src, type, dam, eff) + if rng.percent(30) then + if not src then return end + + src:pull(who.x, who.y, 15) + game.logSeen(src, "Black tendrils shoot out of the mesh and pull %s to you!", src.name:capitalize()) + if core.fov.distance(who.x, who.y, src.x, src.y) <= 1 and src:canBe('pin') then + src:setEffect(src.EFF_CONSTRICTED, 6, {src=who}) + end + end + end, +} + newEntity{ base = "BASE_LIGHT_ARMOR", power_source = {technique=true}, unique = true, diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua index 1a6340d7e4cfa50643f44154675c15db43406721..4e7fb397114cc9cf88339f6fadbd5c4f8efaa8ac 100644 --- a/game/modules/tome/data/timed_effects/physical.lua +++ b/game/modules/tome/data/timed_effects/physical.lua @@ -368,7 +368,7 @@ newEffect{ type = "physical", subtype = { grapple=true, pin=true }, status = "detrimental", - parameters = {}, + parameters = {power=10}, on_gain = function(self, err) return "#Target# is constricted!", "+Constricted" end, on_lose = function(self, err) return "#Target# is free to breathe.", "-Constricted" end, activate = function(self, eff)