From a784489c5d957fb29e7c7bd9bc41e6be769e0830 Mon Sep 17 00:00:00 2001 From: DarkGod <darkgod@net-core.org> Date: Sun, 9 Feb 2014 22:15:12 +0100 Subject: [PATCH] Many new artifacts --- game/modules/tome/class/Object.lua | 14 +- game/modules/tome/class/interface/Combat.lua | 10 +- game/modules/tome/data/damage_types.lua | 23 +- .../tome/data/general/npcs/horror-undead.lua | 20 +- .../modules/tome/data/general/npcs/horror.lua | 5 +- .../objects/boss-artifacts-far-east.lua | 12 +- .../objects/boss-artifacts-maj-eyal.lua | 9 +- .../data/general/objects/boss-artifacts.lua | 2 +- .../general/objects/brotherhood-artifacts.lua | 10 +- .../objects/world-artifacts-far-east.lua | 4 +- .../objects/world-artifacts-maj-eyal.lua | 2 +- .../data/general/objects/world-artifacts.lua | 434 +++++++++++++++++- .../object/artifact/fist_of_the_destroyer.png | Bin 0 -> 11058 bytes .../shockbolt/object/artifact/masochism.png | Bin 0 -> 10039 bytes .../shockbolt/object/artifact/obliterator.png | Bin 0 -> 7136 bytes .../object/artifact/shieldmaiden.png | Bin 0 -> 9580 bytes .../object/artifact/swordbreaker.png | Bin 0 -> 8728 bytes .../object/artifact/tirakais_maul.png | Bin 0 -> 9220 bytes .../object/artifact/yaldan_baoth.png | Bin 0 -> 11374 bytes .../data/gfx/talents/shieldsmaiden_aura.png | Bin 0 -> 2718 bytes .../tome/data/talents/misc/objects.lua | 88 ++++ .../tome/data/talents/psionic/absorption.lua | 6 +- .../tome/data/timed_effects/physical.lua | 5 +- .../tome/data/zones/rak-shor-pride/npcs.lua | 109 +++-- 24 files changed, 648 insertions(+), 105 deletions(-) create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/fist_of_the_destroyer.png create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/masochism.png create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/obliterator.png create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/shieldmaiden.png create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/swordbreaker.png create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/tirakais_maul.png create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/yaldan_baoth.png create mode 100644 game/modules/tome/data/gfx/talents/shieldsmaiden_aura.png diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua index e7fd2972ed..fb4e07f83b 100644 --- a/game/modules/tome/class/Object.lua +++ b/game/modules/tome/class/Object.lua @@ -653,6 +653,10 @@ function _M:getTextualDesc(compare_with, use_actor) elseif found then desc:add({"color","RED"}, "When used from stealth a simple attack with it will not break stealth.", {"color","LAST"}, true) end + + if combat.crushing_blow then + desc:add({"color", "YELLOW"}, "Crushing Blows: ", {"color", "LAST"}, "Damage dealt by this weapon is increased by your critical multiplier, if doing so would kill the target.", true) + end compare_fields(combat, compare_with, field, "travel_speed", "%+d%%", "Travel speed: ", 100, false, false, add_table) @@ -969,6 +973,7 @@ function _M:getTextualDesc(compare_with, use_actor) end compare_fields(w, compare_with, field, "combat_critical_power", "%+.2f%%", "Critical mult.: ") + compare_fields(w, compare_with, field, "ignore_direct_crits", "%-.2f%%", "Reduces incoming crit damage: ") compare_fields(w, compare_with, field, "combat_crit_reduction", "%-d%%", "Reduces opponents crit chance: ") compare_fields(w, compare_with, field, "disarm_bonus", "%+d", "Trap disarming bonus: ") @@ -1067,6 +1072,7 @@ function _M:getTextualDesc(compare_with, use_actor) compare_fields(w, compare_with, field, "projectile_evasion", "%+d%%", "Deflect projectiles away: ") compare_fields(w, compare_with, field, "evasion", "%+d%%", "Chance to avoid attacks: ") + compare_fields(w, compare_with, field, "cancel_damage_chance", "%+d%%", "Chance to avoid any damage: ") compare_fields(w, compare_with, field, "defense_on_teleport", "%+d", "Defense after a teleport: ") compare_fields(w, compare_with, field, "resist_all_on_teleport", "%+d%%", "Resist all after a teleport: ") @@ -1081,12 +1087,16 @@ function _M:getTextualDesc(compare_with, use_actor) compare_fields(w, compare_with, field, "shield_dur", "%+d", "Damage Shield Duration: ") compare_fields(w, compare_with, field, "shield_factor", "%+d%%", "Damage Shield Power: ") + + compare_fields(w, compare_with, field, "iceblock_pierce", "%+d%%", "Ice block penetration: ") compare_fields(w, compare_with, field, "slow_projectiles", "%+d%%", "Slows Projectiles: ") compare_fields(w, compare_with, field, "paradox_reduce_fails", "%+d", "Reduces paradox failures(equivalent to willpower): ") compare_fields(w, compare_with, field, "damage_backfire", "%+d%%", "Damage Backlash: ", nil, true) + + compare_fields(w, compare_with, field, "resist_unseen", "%-d%%", "Reduce all damage from unseen attackers: ") if w.undead then desc:add("The wearer is treated as an undead.", true) @@ -1105,11 +1115,11 @@ function _M:getTextualDesc(compare_with, use_actor) end if w.blind_fight then - desc:add({"color", "YELLOW"}, "Blind-Fight:", {"color", "LAST"}, "This item allows the wearer to attack unseen targets without any penalties.", true) + desc:add({"color", "YELLOW"}, "Blind-Fight: ", {"color", "LAST"}, "This item allows the wearer to attack unseen targets without any penalties.", true) end if w.lucid_dreamer then - desc:add({"color", "YELLOW"}, "Lucid-Dreamer:", {"color", "LAST"}, "This item allows the wearer to act while sleeping.", true) + desc:add({"color", "YELLOW"}, "Lucid Dreamer: ", {"color", "LAST"}, "This item allows the wearer to act while sleeping.", true) end if w.no_breath then diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua index 45cab167ed..0a06f94abc 100644 --- a/game/modules/tome/class/interface/Combat.lua +++ b/game/modules/tome/class/interface/Combat.lua @@ -468,6 +468,8 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam) local oldproj = DamageType:getProjectingFor(self) if self.__talent_running then DamageType:projectingFor(self, {project_type={talent=self.__talent_running}}) end + + if weapon and weapon.crushing_blow then self:attr("crushing_blow", 1) end -- Damage conversion? -- Reduces base damage but converts it into another damage type @@ -491,6 +493,8 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam) if dam > 0 then DamageType:get(damtype).projector(self, target.x, target.y, damtype, math.max(0, dam)) end + + if weapon and weapon.crushing_blow then self:attr("crushing_blow", -1) end if self.__talent_running then DamageType:projectingFor(self, oldproj) end @@ -752,15 +756,15 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam) -- Special effect if hitted and weapon and weapon.special_on_hit and weapon.special_on_hit.fct and (not target.dead or weapon.special_on_hit.on_kill) then - weapon.special_on_hit.fct(weapon, self, target) + weapon.special_on_hit.fct(weapon, self, target, dam) end if hitted and crit and weapon and weapon.special_on_crit and weapon.special_on_crit.fct and (not target.dead or weapon.special_on_crit.on_kill) then - weapon.special_on_crit.fct(weapon, self, target) + weapon.special_on_crit.fct(weapon, self, target, dam) end if hitted and weapon and weapon.special_on_kill and weapon.special_on_kill.fct and target.dead then - weapon.special_on_kill.fct(weapon, self, target) + weapon.special_on_kill.fct(weapon, self, target, dam) end if hitted and crit and not target.dead and self:knowTalent(self.T_BACKSTAB) and not target:attr("stunned") and rng.percent(self:callTalent(self.T_BACKSTAB, "getStunChance")) then diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua index 622dfefe23..e8b9d185ee 100644 --- a/game/modules/tome/data/damage_types.lua +++ b/game/modules/tome/data/damage_types.lua @@ -337,6 +337,16 @@ setDefaultProjector(function(src, x, y, type, dam, tmp, no_martyr) local def = src.tempeffect_def[src.EFF_CURSE_OF_MISFORTUNE] dam = def.doUnfortunateEnd(src, eff, target, dam) end + + if src:attr("crushing_blow") and (dam * (1.25 + (src.combat_critical_power or 0)/200)) > target.life then + dam = dam * (1.25 + (src.combat_critical_power or 0)/200) + game.logPlayer(src, "You end your target with a crushing blow!") + end + + if target:attr("resist_unseen") and not target:canSee(src) then + dam = dam * (1 - math.min(target.resist_unseen,100)/100) + end + -- Sanctuary: reduces damage if it comes from outside of Gloom if target.isTalentActive and target:isTalentActive(target.T_GLOOM) and target:knowTalent(target.T_SANCTUARY) then if tmp and tmp.sanctuaryDamageChange then @@ -985,6 +995,7 @@ newDamageType{ newDamageType{ name = "flameshock", type = "FLAMESHOCK", projector = function(src, x, y, type, dam) + if _G.type(dam) == "number" then dam = {dam=dam, dur=4} end local target = game.level.map(x, y, Map.ACTOR) if target then -- Set on fire! @@ -1096,7 +1107,7 @@ newDamageType{ -- Light damage + blind chance newDamageType{ - name = "blinding light", type = "LIGHT_BLIND", + name = "blinding light", type = "LIGHT_BLIND", text_color = "#YELLOW#", projector = function(src, x, y, type, dam) local realdam = DamageType:get(DamageType.LIGHT).projector(src, x, y, DamageType.LIGHT, dam) local target = game.level.map(x, y, Map.ACTOR) @@ -1113,7 +1124,7 @@ newDamageType{ -- Lightning damage + daze chance newDamageType{ - name = "lightning", type = "LIGHTNING_DAZE", text_color = "#ROYAL_BLUE#", + name = "dazing lightning", type = "LIGHTNING_DAZE", text_color = "#ROYAL_BLUE#", projector = function(src, x, y, type, dam) if _G.type(dam) == "number" then dam = {dam=dam, daze=25} end dam.daze = dam.daze or 25 @@ -1564,7 +1575,7 @@ newDamageType{ } newDamageType{ - name = "gloom", type = "RANDOM_GLOOM", + name = "% chance of gloom effects", type = "RANDOM_GLOOM", projector = function(src, x, y, type, dam) local target = game.level.map(x, y, Map.ACTOR) if target and rng.percent(dam) then @@ -1674,7 +1685,7 @@ newDamageType{ -- Drain Vim newDamageType{ - name = "enervating blight", type = "DRAIN_VIM", + name = "vim draining blight", type = "DRAIN_VIM", text_color = "#DARK_GREEN#", projector = function(src, x, y, type, dam) if _G.type(dam) == "number" then dam = {dam=dam, vim=0.2} end local target = game.level.map(x, y, Map.ACTOR) @@ -1821,7 +1832,7 @@ newDamageType{ -- blood boiled, blight damage + slow newDamageType{ - name = "hindering_blight", type = "BLOOD_BOIL", + name = "hindering blight", type = "BLOOD_BOIL", text_color = "#DARK_GREEN#", projector = function(src, x, y, type, dam) DamageType:get(DamageType.BLIGHT).projector(src, x, y, DamageType.BLIGHT, dam) local target = game.level.map(x, y, Map.ACTOR) @@ -2729,7 +2740,7 @@ newDamageType{ -- Acid damage + Slow newDamageType{ - name = "cautic mire", type = "CAUSTIC_MIRE", + name = "caustic mire", type = "CAUSTIC_MIRE", projector = function(src, x, y, type, dam, tmp) if _G.type(dam) == "number" then dam = {dur = 2, slow=20} end local target = game.level.map(x, y, Map.ACTOR) diff --git a/game/modules/tome/data/general/npcs/horror-undead.lua b/game/modules/tome/data/general/npcs/horror-undead.lua index ccee4662f0..0843706f06 100644 --- a/game/modules/tome/data/general/npcs/horror-undead.lua +++ b/game/modules/tome/data/general/npcs/horror-undead.lua @@ -48,7 +48,7 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD", desc ="This putrid mass of rotting flesh shifts and quivers, but shows no signs of intelligence or mobility.", resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_necrotic_mass.png", display_h=2, display_y=-1}}}, level_range = {15, nil}, exp_worth = 1, - rarity = 3, + rarity = 4, rank = 1, size_category = 2, life_rating = 7, combat_armor = 0, combat_def = 0, @@ -63,17 +63,17 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD", desc ="This monstrous form of putrid, torn flesh and chipped bone drags its mass towards you, spurting blood and viscera along the way.", resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_necrotic_abomination.png", display_h=2, display_y=-1}}}, level_range = {30, nil}, exp_worth = 1, - rarity = 8, + rarity = 7, rank = 3, size_category = 4, combat_armor = 0, combat_def = 40, - max_life=400, + max_life=400, life_rating=11, disease_immune = 1, combat = { dam=resolvers.levelup(resolvers.rngavg(40,45), 1, 1.2), atk=resolvers.rngavg(60,80), apr=20, - dammod={mag=1.2}, physcrit = 10, + dammod={mag=1.3}, physcrit = 10, damtype=engine.DamageType.BLIGHT, }, @@ -106,7 +106,7 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD", desc ="The massive ribcage in the middle beats with loud, audible cracks, as many a skeletal hand protrude forth, entwining, fusing, forming long skeletal appendages to support itself, while others crumble and collapse inward. During all this, somehow, it seems they grasp for you.", resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_bone_horror.png", display_h=2, display_y=-1}}}, level_range = {30, nil}, exp_worth = 1, - rarity = 8, + rarity = 7, rank = 3, size_category = 4, combat_armor = 30, combat_def = 0, @@ -124,7 +124,7 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD", autolevel = "warriormage", summon = { - {type="undead", subtype = "skeleton", number=4, hasxp=false}, + {type="undead", subtype = "skeleton", number=5, hasxp=false}, }, resolvers.talents{ @@ -151,13 +151,15 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD", desc ="This pulsing, quivering form is a deep crimson, and appears to be composed entirely of thick, virulent blood. Waves rhythmically ripple across its surface, indicating a still beating heart somewhere in its body.", resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_sanguine_horror.png", display_h=2, display_y=-1}}}, level_range = {30, nil}, exp_worth = 1, - rarity = 8, - rank = 3, + rarity = 7, + rank = 3, life_rating = 13, size_category = 4, combat_armor = 30, combat_def = 0, max_life=400, stats = { con=50, }, + lifesteal=15, + combat = { dam=resolvers.levelup(resolvers.rngavg(50,60), 1, 1.2), atk=resolvers.rngavg(60,80), apr=20, @@ -197,5 +199,5 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD", size_category = 2, life_rating = 7, combat_armor = 0, combat_def = 0, max_life=100, - combat = {dam=resolvers.levelup(resolvers.mbonus(25, 15), 1, 1.1), apr=0, atk=resolvers.mbonus(30, 15), dammod={str=0.6}}, + combat = {dam=resolvers.levelup(resolvers.mbonus(25, 15), 1, 1.1), apr=0, atk=resolvers.mbonus(30, 15), dammod={str=0.6}, damtype=engine.DamageType.DRAINLIFE,}, } \ No newline at end of file diff --git a/game/modules/tome/data/general/npcs/horror.lua b/game/modules/tome/data/general/npcs/horror.lua index 2bdf4f71d8..dea3194762 100644 --- a/game/modules/tome/data/general/npcs/horror.lua +++ b/game/modules/tome/data/general/npcs/horror.lua @@ -921,6 +921,7 @@ newEntity{ base = "BASE_NPC_HORROR", combat_armor = 30, combat_def = 18, is_akgishil = true, can_spawn = 1, + psionic_shield_override = 1, resolvers.drops{chance=100, nb=1, {defined="BLADE_RIFT"} }, @@ -982,7 +983,7 @@ newEntity{ base="BASE_NPC_HORROR", define_as = "ANIMATED_BLADE", no_breath = 1, size_category = 2, - negative_status_immune = 1, + negative_status_effect_immune = 1, body = { INVEN = 10, MAINHAND=1 }, resolvers.equip{ @@ -1041,7 +1042,7 @@ newEntity{ base="BASE_NPC_HORROR", define_as = "DISTORTED_BLADE", no_breath = 1, size_category = 2, - negative_status_immune = 1, + negative_status_effect_immune = 1, body = { INVEN = 10, MAINHAND=1 }, diff --git a/game/modules/tome/data/general/objects/boss-artifacts-far-east.lua b/game/modules/tome/data/general/objects/boss-artifacts-far-east.lua index c97334f737..f762ac48b9 100644 --- a/game/modules/tome/data/general/objects/boss-artifacts-far-east.lua +++ b/game/modules/tome/data/general/objects/boss-artifacts-far-east.lua @@ -458,14 +458,12 @@ newEntity{ base = "BASE_GREATMAUL", define_as="ROTTING_MAUL", dammod = {str=1.4}, convert_damage = {[DamageType.BLIGHT] = 20}, melee_project={[DamageType.CORRUPTED_BLOOD] = 30}, - special_on_hit = {desc="25% chance to damage nearby creatures", on_kill=1, fct=function(combat, who, target) - if rng.percent(25) then + special_on_hit = {desc="Damage nearby creatures", on_kill=1, fct=function(combat, who, target) local o, item, inven_id = who:findInAllInventoriesBy("define_as", "ROTTING_MAUL") - local dam = rng.avg(1,2) * (70+ who:getStr() * 1.8) - game.logSeen(who, "The ground shakes as the %s hits!", o:getName()) - local tg = {type="ball", range=0, selffire=false, radius=2, no_restrict=true} - who:project(tg, target.x, target.y, engine.DamageType.PHYSICAL, dam) - end + local dam = rng.avg(1,2) * (70+ who:getStr()) + game.logSeen(who, "The ground shakes as the %s hits!", o:getName()) + local tg = {type="ball", range=0, selffire=false, radius=2, no_restrict=true} + who:project(tg, target.x, target.y, engine.DamageType.PHYSICAL, dam) end}, }, wielder = { diff --git a/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua b/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua index 92a4f7008a..137a51c0d9 100644 --- a/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua +++ b/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua @@ -291,9 +291,7 @@ newEntity{ base = "BASE_SHIELD", rarity = 200, cost = 20, material_level = 2, - rarity = false, metallic = false, - special_combat = { dam = resolvers.rngavg(20,30), block = 60, @@ -318,22 +316,23 @@ newEntity{ base = "BASE_GEM", power_source = {nature=true}, unique = true, define_as = "PETRIFIED_WOOD", unided_name = "burned piece of wood", - name = "Petrified Wood", subtype = "black", + name = "Petrified Wood", subtype = "red", --Visually black, but associate with fire, not acid color = colors.WHITE, image = "object/artifact/petrified_wood.png", level_range = {35, 45}, rarity = 280, - identified = false, desc = [[A piece of the scorched wood taken from the remains of Snaproot.]], - rarity = false, cost = 100, material_level = 4, + identified = false, imbue_powers = { resists = { [DamageType.NATURE] = 25, [DamageType.DARKNESS] = 10, [DamageType.COLD] = 10 }, inc_stats = { [Stats.STAT_CON] = 25, }, + ignore_direct_crits = 23, }, wielder = { resists = { [DamageType.NATURE] = 25, [DamageType.DARKNESS] = 10, [DamageType.COLD] = 10 }, inc_stats = { [Stats.STAT_CON] = 25, }, + ignore_direct_crits = 23, }, } diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua index 9b41a05c08..35f575f2d4 100644 --- a/game/modules/tome/data/general/objects/boss-artifacts.lua +++ b/game/modules/tome/data/general/objects/boss-artifacts.lua @@ -114,7 +114,7 @@ newEntity{ base = "BASE_LONGSWORD", define_as = "RIFT_SWORD", unided_name = "time-warped sword", desc = [[The remnants of a damaged timeline, this blade shifts and fades at random.]], level_range = {30, 50}, - rarity = nil, --Not random! + rarity = 220, require = { stat = { str=44 }, }, cost = 300, material_level = 4, diff --git a/game/modules/tome/data/general/objects/brotherhood-artifacts.lua b/game/modules/tome/data/general/objects/brotherhood-artifacts.lua index 5ae99007c4..218725f057 100644 --- a/game/modules/tome/data/general/objects/brotherhood-artifacts.lua +++ b/game/modules/tome/data/general/objects/brotherhood-artifacts.lua @@ -315,21 +315,27 @@ newEntity{ base = "BASE_GEM", quest = 1, material_level = 5, wielder = { - inc_stats = {[Stats.STAT_CON] = 10, }, + inc_stats = {[Stats.STAT_CON] = 15, }, healing_factor = 0.3, life_regen = 2, resists = { [DamageType.BLIGHT] = 10, }, + damage_affinity = { + [DamageType.NATURE] = 15, + }, }, imbue_powers = { - inc_stats = {[Stats.STAT_CON] = 10, }, + inc_stats = {[Stats.STAT_CON] = 15, }, healing_factor = 0.3, life_regen = 2, stun_immune = 0.3, resists = { [DamageType.BLIGHT] = 10, }, + damage_affinity = { + [DamageType.NATURE] = 15, + }, }, } diff --git a/game/modules/tome/data/general/objects/world-artifacts-far-east.lua b/game/modules/tome/data/general/objects/world-artifacts-far-east.lua index 51190c645b..5664eb9e2b 100644 --- a/game/modules/tome/data/general/objects/world-artifacts-far-east.lua +++ b/game/modules/tome/data/general/objects/world-artifacts-far-east.lua @@ -159,7 +159,7 @@ newEntity{ base = "BASE_GEM", power_source = {arcane=true}, unique = true, unided_name = "unearthly black stone", - name = "Goedalath Rock", subtype = "black", image = "object/artifact/goedalath_rock.png", + name = "Goedalath Rock", subtype = "demonic", image = "object/artifact/goedalath_rock.png", color = colors.PURPLE, level_range = {42, 50}, desc = [[A small rock that seems from beyond this world, vibrating with a fierce energy. It feels warped and terrible and evil... and yet oh so powerful.]], @@ -280,7 +280,7 @@ Now the broken fragments of Raasul's soul are trapped in this terrible artifact, type = "undead", subtype = "blood", display = "L", name = "animated blood", color=colors.RED, - resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_lich_blood_lich.png", display_h=1, display_y=0}}}, + resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_animated_blood.png", display_h=1, display_y=0}}}, desc = "A haze of blood, vibrant and pulsing through the air, possessed by a warped and cracked soul. Every now and then a scream or wail of agony garbles through it, telling of the mindless suffering undergone by its possessor.", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, }, rank = 3, diff --git a/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua b/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua index 9135abf4e3..a4e9b77194 100644 --- a/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua +++ b/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua @@ -612,7 +612,6 @@ newEntity{ base = "BASE_WARAXE", [DamageType.COLD] = 20, }, iceblock_pierce=25, - talent_on_hit = { [Talents.T_ICE_BREATH] = {level=2, chance=15} }, }, combat = { dam = 33, @@ -622,6 +621,7 @@ newEntity{ base = "BASE_WARAXE", convert_damage = { [DamageType.ICE] = 50, }, + talent_on_hit = { [Talents.T_ICE_BREATH] = {level=2, chance=15} }, }, } diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua index fe39eb3c89..9cf2214209 100644 --- a/game/modules/tome/data/general/objects/world-artifacts.lua +++ b/game/modules/tome/data/general/objects/world-artifacts.lua @@ -50,15 +50,23 @@ newEntity{ base = "BASE_GEM", movement_speed = 0.2, }, imbue_powers = { - inc_stats = {[Stats.STAT_DEX] = 10, [Stats.STAT_CUN] = 10 }, + inc_stats = {[Stats.STAT_DEX] = 8, [Stats.STAT_CUN] = 8 }, inc_damage = {[DamageType.LIGHTNING] = 20 }, - cancel_damage_chance = 10, -- add to tooltip + cancel_damage_chance = 8, damage_affinity={ [DamageType.LIGHTNING] = 20, }, - movement_speed = 0.2, + movement_speed = 0.15, + }, + wielder = { + inc_stats = {[Stats.STAT_DEX] = 8, [Stats.STAT_CUN] = 8 }, + inc_damage = {[DamageType.LIGHTNING] = 20 }, + cancel_damage_chance = 8, + damage_affinity={ + [DamageType.LIGHTNING] = 20, + }, + movement_speed = 0.15, }, - } -- Low base values because you can stack affinity and resist @@ -3890,7 +3898,7 @@ newEntity{ base = "BASE_TOOL_MISC", combat_mindpower=8, }, max_power = 35, power_regen = 1, - use_power = { name = "call an antimagic pillar", power = 35, + use_power = { name = "call an antimagic pillar, but silence yourself", power = 35, use = function(self, who) local x, y = util.findFreeGrid(who.x, who.y, 5, true, {[engine.Map.ACTOR]=true}) if not x then @@ -3908,10 +3916,11 @@ newEntity{ base = "BASE_TOOL_MISC", blood_color = colors.GREEN, display = "T", color=colors.GREEN, life_rating=18, + combat_dam = 40, combat = { dam=resolvers.rngavg(50,60), atk=resolvers.rngavg(50,75), apr=25, - dammod={wil=1.1}, physcrit = 10, + dammod={wil=1.2}, physcrit = 10, damtype=engine.DamageType.SLIME, }, level_range = {1, nil}, exp_worth = 0, @@ -3925,7 +3934,7 @@ newEntity{ base = "BASE_TOOL_MISC", size_category = 5, blind=1, esp_all=1, - resists={[engine.DamageType.BLIGHT] = 40, [engine.DamageType.ARCANE] = 40, [engine.DamageType.NATURE] = 70}, + resists={all = 15, [engine.DamageType.BLIGHT] = 40, [engine.DamageType.ARCANE] = 40, [engine.DamageType.NATURE] = 70}, no_breath = 1, cant_be_moved = 1, stone_immune = 1, @@ -3937,10 +3946,10 @@ newEntity{ base = "BASE_TOOL_MISC", stun_immune = 1, blind_immune = 1, cut_immune = 1, - knockback_resist, + knockback_resist=1, combat_mentalresist=50, combat_spellresist=100, - on_act = function(self) self:project({type="ball", range=0, radius=5, selffire=false}, self.x, self.y, engine.DamageType.SILENCE, {dur=2, power_check=self:combatMindpower()}) end, + on_act = function(self) self:project({type="ball", range=0, radius=5, friendlyfire=false}, self.x, self.y, engine.DamageType.SILENCE, {dur=2, power_check=self:combatMindpower()}) end, resolvers.talents{ [Talents.T_RESOLVE]={base=3, every=6}, [Talents.T_MANA_CLASH]={base=3, every=5}, @@ -3963,6 +3972,7 @@ newEntity{ base = "BASE_TOOL_MISC", title="Summon", orders = {target=true, leash=true, anchor=true, talents=true}, }) + who:setEffect(who.EFF_SILENCED, 5, {}) return {id=true, used=true} end }, @@ -5329,7 +5339,7 @@ newEntity{ base = "BASE_AMULET", rarity = 220, cost = 350, material_level = 5, - special_desc = function(self) return "Gives all your cold damage a 20% chance to freeze the target, and allows 20% of your damage to ignore ice blocks." end, + special_desc = function(self) return "Gives all your cold damage a 20% chance to freeze the target." end, wielder = { combat_spellpower=12, inc_damage={ @@ -5952,7 +5962,7 @@ newEntity{ base = "BASE_SHIELD", special_desc = function(self) return "When you block an attack, there is a 30% chance of petrifying the attacker." end, special_combat = { dam = 40, - block = 100, + block = 180, physcrit = 5, dammod = {str=1}, }, @@ -6039,6 +6049,408 @@ newEntity{ base = "BASE_KNIFE", --Shibari's #1 quick_weapon_swap = 1, }, } + +newEntity{ base = "BASE_KNIFE", + power_source = {technique=true}, + unique = true, + name = "Swordbreaker", image = "object/artifact/swordbreaker.png", + unided_name = "hooked blade", + desc = [[This ordinary blade is made of fine, sturdy voratun and outfitted with jagged hooks along the edge. This simple appearance belies a great power - the hooked maw of this dagger broke many a blade and the stride of many would-be warriors.]], + level_range = {20, 30}, + rarity = 250, + require = { stat = { dex=10, cun=10 }, }, + cost = 300, + material_level = 3, + special_desc = function(self) return "Can block like a shield, potentially disarming the enemy." end, + combat = { + dam = 25, + apr = 20, + physcrit = 15, + physspeed = 0.9, + dammod = {dex=0.5,cun=0.5}, + special_on_crit = {desc="Breaks enemy weapon.", fct=function(combat, who, target) + target:setEffect(target.EFF_SUNDER_ARMS, 5, {power=5+(who:combatPhysicalpower()*0.33), apply_power=who:combatPhysicalpower()}) + end}, + }, + wielder = { + combat_def = 15, + disarm_immune=0.5, + combat_physresist = 15, + inc_stats = { + [Stats.STAT_DEX] = 8, + [Stats.STAT_CUN] = 8, + }, + combat_armor_hardiness = 20, + learn_talent = { [Talents.T_DAGGER_BLOCK] = 1, }, + }, +} + +newEntity{ base = "BASE_SHIELD", + power_source = {arcane=true}, + unique = true, + name = "Shieldsmaiden", image = "object/artifact/shieldmaiden.png", + unided_name = "icy shield", + desc = [["Myths tell of shieldsmaidens, a tribe of warrior women from the northern wastes of Maj'Eyal. Their martial prowess and beauty drew the fascination of swaths of admirers, yet all unrequited. So began the saying, that a shieldsmaidens heart is as cold and unbreakable as her shield."]], + color = colors.BROWN, + level_range = {36, 48}, + rarity = 270, + require = { stat = { str=28 }, }, + cost = 400, + material_level = 5, + metallic = false, + special_desc = function(self) return "Granted talent can block up to 1 instance of damage each 10 turns." end, + special_combat = { + dam = 48, + block = 150, + physcrit = 8, + dammod = {str=1}, + damtype = DamageType.ICE, + talent_on_hit = { [Talents.T_ICE_SHARDS] = {level=3, chance=15} }, + }, + wielder = { + combat_armor = 20, + combat_def = 5, + combat_def_ranged = 12, + fatigue = 10, + learn_talent = { [Talents.T_BLOCK] = 4, [Talents.T_SHIELDSMAIDEN_AURA] = 1, }, + resists = { [DamageType.COLD] = 25, [DamageType.FIRE] = 25,}, + }, +} + +-- Thanks to Naghyal's Beholder code for the basic socket skeleton +newEntity{ base = "BASE_GREATMAUL", + power_source = {arcane=true}, -- Should really make this only arcane for some gems + unique = true, + color = colors.BLUE, + name = "Tirakai's Maul", + desc = [[This massive hammer is formed from a thick mass of strange crystalline growths. In the side of the hammer itself you see an empty slot; it looks like a gem of your own could easily fit inside it.]], + gemDesc = "None", -- Defined by the elemental properties and used by special_desc + special_desc = function(self) + -- You'll want to color this and such + if not self.Gem then return ("No gem") end + return ("%s: %s"):format(self.Gem.name:capitalize(), self.gemDesc or ("Write a description for this gem's properties!")) + end, + cost = 1000, + material_level = 1, -- Changes to gem material level on socket + evel_range = {1, 15}, + rarity = 280, + combat = { + dam = 10, + apr = 7, + physcrit = 4, + damrange=1.3, + dammod = {str=1.2}, + }, + max_power = 1, power_regen = 1, + use_power = { name = "imbue the hammer with a gem of your choice", power = 0, + use = function(self, who) + local DamageType = require "engine.DamageType" + local Stats = require "engine.interface.ActorStats" + local d + d = who:showInventory("Use which gem?", who:getInven("INVEN"), function(gem) return gem.type == "gem" and gem.imbue_powers and gem.material_level end, + function(gem, gem_item) + who:onTakeoff(self) + local name_old=self.name + local old_hotkey + for i, v in pairs(who.hotkey) do + if v[2]==name_old then + old_hotkey=i + end + end + + -- Recycle the old gem + local old_gem=self.Gem + if old_gem then + who:addObject(who:getInven("INVEN"), old_gem) + game.logPlayer(who, "You remove your %s.", old_gem:getName{do_colour=true, no_count=true}) + end + + if gem then + + -- The Blank Slate. This is a horrible method of changing modes, but it is the easiest to avoid fucking up. This doesn't do much better than just making a static table for every element but its much easier to work with. + self.Gem = nil + self.Gem = gem + self.gemDesc = "Describe all the goddamn colors. NOW." + + self.sentient = false + self.act = mod.class.Object.act + + self.talent_on_spell = nil + + self.material_level=gem.material_level + local scalingFactor = self.material_level + + self.combat = { + dam = (14 * scalingFactor), + apr = (3 * scalingFactor), + physcrit = (2.5 * scalingFactor), + dammod = {str=1.2}, + damrange = 1.3, + } + + self.wielder = { + inc_stats = {[Stats.STAT_MAG] = (2 * scalingFactor), [Stats.STAT_CUN] = (2 * scalingFactor), [Stats.STAT_DEX] = (2 * scalingFactor),}, + } + + who:removeObject(who:getInven("INVEN"), gem_item) + + -- Each element merges its effect into the combat/wielder tables (or anything else) after the base stats are scaled + -- You can modify damage and such here too but you should probably make static tables instead of merging + if gem.subtype =="black" then -- Acid + self.combat.damtype = DamageType.ACID + table.mergeAdd(self.wielder, {inc_damage = { [DamageType.ACID] = 4 * scalingFactor} }, true) + + self.combat.burst_on_crit = {[DamageType.ACID_DISARM] = 12 * scalingFactor,} + self.gemDesc = "Acid" + end + if gem.subtype =="blue" then -- Lightning + self.combat.damtype = DamageType.LIGHTNING + table.mergeAdd(self.wielder, { + inc_damage = { [DamageType.LIGHTNING] = 4 * scalingFactor} + + }, true) + self.combat.burst_on_crit = {[DamageType.LIGHTNING_DAZE] = 12 * scalingFactor,} + self.gemDesc = "Lightning" + end + if gem.subtype =="green" then -- Nature + self.combat.damtype = DamageType.NATURE + table.mergeAdd(self.wielder, { + inc_damage = { [DamageType.NATURE] = 4 * scalingFactor} + + }, true) + self.combat.burst_on_crit = {[DamageType.SPYDRIC_POISON] = 12 * scalingFactor,} + self.gemDesc = "Nature" + end + if gem.subtype =="red" then -- Fire + self.combat.damtype = DamageType.FIRE + table.mergeAdd(self.wielder, { + inc_damage = { [DamageType.FIRE] = 4 * scalingFactor}, + }, true) + self.combat.burst_on_crit = {[DamageType.FLAMESHOCK] = 12 * scalingFactor,} + self.gemDesc = "Fire" + end + if gem.subtype =="violet" then -- Arcane + self.combat.damtype = DamageType.ARCANE + table.mergeAdd(self.wielder, { + inc_damage = { [DamageType.ARCANE] = 4 * scalingFactor} + + }, true) + self.combat.burst_on_crit = {[DamageType.ARCANE_SILENCE] = 12 * scalingFactor,} + self.gemDesc = "Arcane" + end + if gem.subtype =="white" then -- Cold + self.combat.damtype = DamageType.COLD + table.mergeAdd(self.wielder, { + inc_damage = { [DamageType.COLD] = 4 * scalingFactor} + + }, true) + self.combat.burst_on_crit = {[DamageType.ICE] = 12 * scalingFactor,} + self.gemDesc = "Cold" + end + if gem.subtype =="yellow" then -- Light + self.combat.damtype = DamageType.LIGHT + table.mergeAdd(self.wielder, { + inc_damage = { [DamageType.LIGHT] = 4 * scalingFactor} + + }, true) + self.combat.burst_on_crit = {[DamageType.LIGHT_BLIND] = 12 * scalingFactor,} + self.gemDesc = "Light" + end + if gem.subtype == "multi-hued" then -- Some but not all artifacts, if you want to do artifact specific effects make conditionals by name, don't use this + table.mergeAdd(self.combat, {convert_damage = {[DamageType.COLD] = 25, [DamageType.FIRE] = 25, [DamageType.LIGHTNING] = 25, [DamageType.ARCANE] = 25,} }, true) + table.mergeAdd(self.wielder, { + inc_damage = { all = 2 * scalingFactor}, + resists_pen = { all = 2 * scalingFactor}, + }, true) + self.gemDesc = "Unique" + end + if gem.subtype == "demonic" then -- Goedalath Rock + self.combat.damtype = DamageType.SHADOWFLAME + table.mergeAdd(self.wielder, { + inc_damage = { [DamageType.FIRE] = 3 * scalingFactor, [DamageType.DARKNESS] = 3 * scalingFactor,}, + resists_pen = { all = 2 * scalingFactor}, + }, true) + self.gemDesc = "Demonic" + end + game.logPlayer(who, "You imbue your %s with %s.", self:getName{do_colour=true, no_count=true}, gem:getName{do_colour=true, no_count=true}) + + --self.name = (gem.name .. " of Divinity") + + table.mergeAdd(self.wielder, gem.imbue_powers, true) + + end + if gem.talent_on_spell then + self.talent_on_spell = self.talent_on_spell or {} + table.append(self.talent_on_spell, gem.talent_on_spell) + end + who:onWear(self) + for i, v in pairs(who.hotkey) do + if v[2]==name_old then + v[2]=self.name + end + if v[2]==self.name and old_hotkey and i~=old_hotkey then + who.hotkey[i] = nil + end + end + d.used_talent=true + game:unregisterDialog(d) + return true + end) + return {id=true, used=true} + end + }, + on_wear = function(self, who) + + return true + end, + wielder = { + -- Stats only from gems + }, +} + +newEntity{ base = "BASE_GLOVES", define_as = "SET_GLOVE_DESTROYER", + power_source = {arcane=true, technique=true}, + unique = true, + name = "Fist of the Destroyer", color = colors.RED, image = "object/artifact/fist_of_the_destroyer.png", + unided_name = "vile gauntlets", + desc = [[These terrible looking gloves glow with untold power.]], + level_range = {40, 50}, + rarity = 300, + cost = 800, + material_level = 5, + special_desc = function(self) + local num=4 + if self.set_complete then + num=6 + end + return ("Increases all damage by %d%% of current vim \nCurrent Bonus: %d%%"):format(num, num*0.01*(game.player:getVim() or 0)) + end, + wielder = { + inc_stats = { [Stats.STAT_STR] = 9, [Stats.STAT_MAG] = 9, [Stats.STAT_CUN] = 3, }, + demonblood_dam=0.04, + max_vim = 25, + combat_def = 8, + stun_immune = 0.2, + talents_types_mastery = { ["corruption/shadowflame"] = 0.2, ["corruption/vim"] = 0.2,}, + combat = { + dam = 35, + apr = 15, + physcrit = 10, + physspeed = 0, + dammod = {dex=0.4, str=-0.6, cun=0.4, mag=0.2,}, + damrange = 0.3, + talent_on_hit = { T_DRAIN = {level=2, chance=8}, T_SOUL_ROT = {level=3, chance=12}, T_BLOOD_GRASP = {level=3, chance=10}}, + }, + }, + max_power = 12, power_regen = 1, + use_talent = { id = Talents.T_DARKFIRE, level = 5, power = 12 }, + set_list = { {"define_as", "SET_ARMOR_MASOCHISM"} }, + on_set_complete = function(self, who) + game.logPlayer(who, "#STEEL_BLUE#The fist and the mangled clothing glow ominously!") + self:specialSetAdd({"wielder","demonblood_dam"}, 0.02) + self:specialSetAdd({"wielder","inc_damage"}, { [engine.DamageType.FIRE] = 15, [engine.DamageType.DARKNESS] = 15, all = 5 }) + end, + on_set_broken = function(self, who) + game.logPlayer(who, "#STEEL_BLUE#The ominous glow dies down.") + end, +} + +newEntity{ base = "BASE_LIGHT_ARMOR", define_as = "SET_ARMOR_MASOCHISM", + power_source = {arcane=true, technique=true}, + unique = true, + name = "Masochism", color = colors.RED, image = "object/artifact/masochism.png", + unided_name = "mangled clothing", + desc = [[Stolen flesh, + Stolen pain, + To give it up, + Is to live again.]], + level_range = {40, 50}, + rarity = 300, + cost = 800, + material_level = 5, + special_desc = function(self) + local num=7 + if self.set_complete then + num=10 + end + return ("Reduces all damage by %d%% of current vim or 50%% of the damage, whichever is lower; but at the cost of vim equal to 5%% of the damage blocked. \nCurrent Bonus: %d"):format(num, num*0.01*(game.player:getVim() or 0)) + end, + wielder = { + inc_stats = {[Stats.STAT_MAG] = 9, [Stats.STAT_CUN] = 3, }, + combat_spellpower = 10, + demonblood_def=0.07, + max_vim = 25, + disease_immune = 1, + combat_physresist = 10, + combat_mentalresist = 10, + combat_spellresist = 10, + on_melee_hit={[DamageType.DRAIN_VIM] = 25}, + melee_project={[DamageType.DRAIN_VIM] = 25}, + talents_types_mastery = { ["corruption/sanguisuge"] = 0.2, ["corruption/blood"] = 0.2,}, + }, + max_power = 12, power_regen = 1, + use_talent = { id = Talents.T_BLOOD_GRASP, level = 5, power = 12 }, + set_list = { {"define_as", "SET_GLOVE_DESTROYER"} }, + on_set_complete = function(self, who) + self:specialSetAdd({"wielder","demonblood_def"}, 0.03) + self:specialSetAdd({"wielder","resists"}, { [engine.DamageType.FIRE] = 15, [engine.DamageType.DARKNESS] = 15, all = 5 }) + end, + on_set_broken = function(self, who) + end, +} + +newEntity{ base = "BASE_GREATMAUL", + power_source = {technique=true}, + unique = true, + name = "Obliterator", color = colors.UMBER, image = "object/artifact/obliterator.png", + unided_name = "titanic maul", + desc = [[This massive hammer strikes with an impact that could shatter bones.]], + level_range = {23, 30}, + rarity = 270, + require = { stat = { str=40 }, }, + cost = 250, + material_level = 3, + combat = { + dam = 48, + apr = 10, + physcrit = 0, + dammod = {str=1.2}, + crushing_blow=1, + }, + wielder = { + combat_critical_power = 10, + }, +} + +newEntity{ base = "BASE_HELM", + power_source = {technique=true}, + unique = true, + name = "Yaldan Baoth", image = "object/artifact/yaldan_baoth.png", + unided_name = "obscuring helm", + desc = [[The golden bascinet crown, affiliated to Veluca of Yaldan. King of the mythical city of Yaldan, that was struck from the face of Eyal by the arrogance of its people. Lone survivor of his kin, he spent his last years wandering the early world, teaching man to stand against the darkness. With his dying words, "Fear no evil", the crown was passed onto his successor.]], + level_range = {28, 39,}, + rarity = 240, + cost = 700, + material_level = 4, + wielder = { + combat_armor = 6, + fatigue = 4, + resist_unseen = 25, + sight = -2, + inc_stats = { [Stats.STAT_WIL] = 10, [Stats.STAT_CON] = 7, }, + inc_damage={ + [DamageType.LIGHT] = 10, + }, + resists={ + [DamageType.LIGHT] = 10, + [DamageType.DARKNESS] = 15, + }, + resists_cap={ + [DamageType.DARKNESS] = 10, + }, + blind_fight = 1, + }, +} --[=[ newEntity{ unique = true, diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/fist_of_the_destroyer.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/fist_of_the_destroyer.png new file mode 100644 index 0000000000000000000000000000000000000000..80870ad911ce63dc57dff257265a7062424aa8ef GIT binary patch literal 11058 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 literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/masochism.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/masochism.png new file mode 100644 index 0000000000000000000000000000000000000000..ced22684ca13353fc9c1202997f026673e20112d GIT binary patch literal 10039 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 N002ovPDHLkV1o9Nf>;0m literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/obliterator.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/obliterator.png new file mode 100644 index 0000000000000000000000000000000000000000..cae5836cdba68864f733fba17089a28c6ce0fca9 GIT binary patch literal 7136 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 Wsz`Y4wS?6G0000<MNUMnLSTYy)U0Fx literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/shieldmaiden.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/shieldmaiden.png new file mode 100644 index 0000000000000000000000000000000000000000..95a2065f3c0c96a02a331f2f592d094958ed1846 GIT binary patch literal 9580 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 W*_9|zgCz_A0000<MNUMnLSTYle{J^w literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/swordbreaker.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/swordbreaker.png new file mode 100644 index 0000000000000000000000000000000000000000..4288b810898c7ad53a3a003f06517343aa427830 GIT binary patch literal 8728 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 CLDNeB literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/tirakais_maul.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/tirakais_maul.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef0accf0a0b5c86bdd2c8fb477cf582658b896c GIT binary patch literal 9220 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 a{|x{|#S$^6yIOq!0000<MNUMnLSTX=J;ojY literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/yaldan_baoth.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/yaldan_baoth.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee4bdf279c2d1646fb86d9679da01e412c3530b GIT binary patch literal 11374 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 literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/talents/shieldsmaiden_aura.png b/game/modules/tome/data/gfx/talents/shieldsmaiden_aura.png new file mode 100644 index 0000000000000000000000000000000000000000..5db2a5eb5e5e04d1a2df84e9206b5c898e08cc43 GIT binary patch literal 2718 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 Y1vLdEYw^lf1^@s607*qoM6N<$g4;tIIsgCw literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/talents/misc/objects.lua b/game/modules/tome/data/talents/misc/objects.lua index 5d45f4d49f..0e852182d4 100644 --- a/game/modules/tome/data/talents/misc/objects.lua +++ b/game/modules/tome/data/talents/misc/objects.lua @@ -528,3 +528,91 @@ newTalent{ return ([[Reset up to 3 wild gift, psionic or cursed talents.]]) end, } + +newTalent{ + name = "Dagger Block", + image = "talents/block.png", + type = {"technique/objects", 1}, + cooldown = function(self, t) + return 8 - util.bound(self:getTalentLevelRaw(t), 1, 5) + end, + points = 5, + hard_cap = 5, + range = 1, + requires_target = true, + tactical = { ATTACK = 3, DEFEND = 3 }, + + getProperties = function(self, t) + local p = { + sp = false, + ref = false, + br = false, + sb = true + } + return p + end, + + getBlockedTypes = function(self, t) + + local bt = {[DamageType.PHYSICAL]=true} + bt[DamageType.FIRE] = false + bt[DamageType.LIGHTNING] = false + bt[DamageType.COLD] = false + bt[DamageType.ACID] = false + bt[DamageType.NATURE] = false + bt[DamageType.BLIGHT] = false + bt[DamageType.LIGHT] = false + bt[DamageType.DARKNESS] = false + bt[DamageType.ARCANE] = false + bt[DamageType.MIND] = false + bt[DamageType.TEMPORAL] = false + + local n = 0 + for t, _ in pairs(bt) do n = n + 1 end + + if n < 1 then return "(error 2)" end + local e_string = "" + if n == 1 then + e_string = DamageType.dam_def[next(bt)].name + else + local list = table.keys(bt) + for i = 1, #list do + list[i] = DamageType.dam_def[list[i]].name + end + e_string = table.concat(list, ", ") + end + return bt, e_string + end, + + action = function(self, t) + local properties = t.getProperties(self, t) + local bt, bt_string = t.getBlockedTypes(self, t) + self:setEffect(self.EFF_BLOCKING, 1 + (self:knowTalent(self.T_ETERNAL_GUARD) and 1 or 0), {power = 120+self:getCun()+self:getDex(), d_types=bt, properties=properties}) + return true + end, + info = function(self, t) + return ([[Raise your dagger into blocking position for one turn, reducing the damage of all physical attacks by %d. If you block all of an attack's damage, the attacker will be vulnerable to a deadly counterstrike (a normal attack will instead deal 200%% damage) for one turn and be left disarmed for 3 turns. + The blocking value will increase with your Dexterity and Cunning.]]):format(120 + self:getCun() + self:getDex()) + end, +} + +newTalent{ + name = "Shieldsmaiden Aura", + type = {"misc/objects", 1}, + points = 1, + mode = "passive", + cooldown = 10, + callbackOnHit = function(self, t, cb) + if not self:isTalentCoolingDown(t) then + self:startTalentCooldown(t) + cb.value=0 + game.logPlayer(self, "Your shield protects you from the blow!") + return true + else + return false + end + end, + info = function(self, t) + return ([[Can block up to 1 hit per 10 turns.]]) + end, +} diff --git a/game/modules/tome/data/talents/psionic/absorption.lua b/game/modules/tome/data/talents/psionic/absorption.lua index 724a1c9aa4..4a9402e186 100644 --- a/game/modules/tome/data/talents/psionic/absorption.lua +++ b/game/modules/tome/data/talents/psionic/absorption.lua @@ -76,7 +76,7 @@ newTalent{ no_energy = true, tactical = { DEFEND = 2 }, on_pre_use = function(self, t, silent) - if self:isTalentActive(self.T_THERMAL_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then + if self:isTalentActive(self.T_THERMAL_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) and not self:attr("psionic_shield_override") then if not silent then game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.") end return false end @@ -202,7 +202,7 @@ newTalent{ no_energy = true, tactical = { DEFEND = 2 }, on_pre_use = function(self, t, silent) - if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then + if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) and not self:attr("psionic_shield_override") then if not silent then game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.") end return false end @@ -325,7 +325,7 @@ newTalent{ no_energy = true, tactical = { DEFEND = 2 }, on_pre_use = function(self, t, silent) - if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_THERMAL_SHIELD) then + if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_THERMAL_SHIELD) and not self:attr("psionic_shield_override") then if not silent then game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.") end return false end diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua index f49de2deff..671d34e158 100644 --- a/game/modules/tome/data/timed_effects/physical.lua +++ b/game/modules/tome/data/timed_effects/physical.lua @@ -1838,7 +1838,7 @@ newEffect{ game:delayedLogMessage(self, src, "block_heal", "#CRIMSON##Source# heals from blocking with %s shield!", string.his_her(self)) end if eff.properties.ref and src.life then DamageType.defaultProjector(src, src.x, src.y, type, blocked, tmp, true) end - if (self:knowTalent(self.T_RIPOSTE) or amt == 0) and src.life then src:setEffect(src.EFF_COUNTERSTRIKE, (1 + dur_inc) * (src.global_speed or 1), {power=eff.power, no_ct_effect=true, src=self, crit_inc=crit_inc, nb=nb}) end -- specify duration here to avoid stacking for high speed attackers + if (self:knowTalent(self.T_RIPOSTE) or amt == 0) and src.life then src:setEffect(src.EFF_COUNTERSTRIKE, (1 + dur_inc) * (src.global_speed or 1), {power=eff.power, no_ct_effect=true, src=self, crit_inc=crit_inc, nb=nb}) if eff.properties.sb then if src:canBe("disarm") then src:setEffect(src.EFF_DISARMED, 3, {apply_power=self:combatPhysicalpower()}) else game.logSeen(target, "%s resists the disarming attempt!", src.name:capitalize()) end end end-- specify duration here to avoid stacking for high speed attackers return amt end, activate = function(self, eff) @@ -2011,7 +2011,7 @@ newEffect{ newEffect{ name = "DISABLE", image = "talents/cripple.png", desc = "Disable", - long_desc = function(self, eff) return ("The target is disabled, reducing movement speed by %d%% and physical power by %d."):format(eff.speed * 100, eff.atk) end, + long_desc = function(self, eff) return ("The target is disabled, reducing movement speed by %d%% and accuracy by %d."):format(eff.speed * 100, eff.atk) end, type = "physical", subtype = { wound=true }, status = "detrimental", @@ -2308,3 +2308,4 @@ newEffect{ self:incEquilibrium(-eff.power) end, } + diff --git a/game/modules/tome/data/zones/rak-shor-pride/npcs.lua b/game/modules/tome/data/zones/rak-shor-pride/npcs.lua index 84625373d2..96475482bc 100644 --- a/game/modules/tome/data/zones/rak-shor-pride/npcs.lua +++ b/game/modules/tome/data/zones/rak-shor-pride/npcs.lua @@ -110,7 +110,7 @@ newEntity{ base = "BASE_NPC_GHOUL", define_as = "ROTTING_TITAN", resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_ghoul_rotting_titan.png", display_h=2, display_y=-1}}}, desc = [[This gigantic mass of flesh and stone moves slowly, the ground rumbling with each step it takes. Its body seems to constantly pulsate and reform. Massive stones at the end of each limb form massive blunt weapons.]], level_range = {45, nil}, exp_worth = 2, - rarity = 40, + rarity = 28, max_life = resolvers.rngavg(150,200), life_rating = 40, combat_armor = 40, combat_def = 10, ai_state = { talent_in=2 }, @@ -138,15 +138,17 @@ newEntity{ base = "BASE_NPC_GHOUL", define_as = "ROTTING_TITAN", combat_atk=40, combat_spellpower=25, + inc_damage = { [DamageType.PHYSICAL] = 15 }, + disarm_immune=1, --Since disarming him would be, well, DISARMING him. on_move = function(self) - if rng.percent(20) then - game.logSeen(self, "The ground shakes as %s steps!", self.name:capitalize()) - local tg = {type="ball", range=0, selffire=false, radius=3, no_restrict=true} - local DamageType = require "engine.DamageType" - self:project(tg, self.x, self.y, DamageType.PHYSKNOCKBACK, {dam=24, dist=1}) - self:doQuake(tg, self.x, self.y) + if rng.percent(35) then + game.logSeen(self, "The ground shakes as %s steps!", self.name:capitalize()) + local tg = {type="ball", range=0, selffire=false, radius=4, no_restrict=true} + local DamageType = require "engine.DamageType" + --self:project(tg, self.x, self.y, DamageType.PHYSKNOCKBACK, {dam=24, dist=5}) + self:doQuake(tg, self.x, self.y) end self:project({type="ball", range=0, selffire=false, radius=1}, self.x, self.y, engine.DamageType.DIG, 1) end, @@ -180,7 +182,7 @@ newEntity{ base = "BASE_NPC_GHOST", define_as = "GLACIAL_LEGION", resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_ghost_glacial_legion.png", display_h=2, display_y=-1}}}, desc = [[A massive, shifting, ethereal form floats in the air around an orb of frozen blood. Vapor pools on the floor beneath it.]], level_range = {45, nil}, exp_worth = 2, - rarity = 40, + rarity = 28, size_category=5, rank = 3.5, max_life = resolvers.rngavg(90,100), life_rating = 18, @@ -188,34 +190,36 @@ newEntity{ base = "BASE_NPC_GHOST", define_as = "GLACIAL_LEGION", ai = "tactical", ai_state = { talent_in=1, }, ai_tactic = resolvers.tactic"ranged", stats = { str=13, dex=15, mag=45, con=14 }, - combat_spellpower=40, + combat_spellpower = 100, resists = {all = -10, [DamageType.FIRE] = -100, [DamageType.LIGHT] = 30, [DamageType.COLD] = 100}, combat_armor = 0, combat_def = resolvers.mbonus(10, 10), --stealth = resolvers.mbonus(40, 10), - combat = { dam=50, atk=50, apr=100, dammod={mag=1.1} }, + combat = { dam=50, atk=90, apr=100, dammod={mag=1.1} }, melee_project = {[DamageType.COLD]=resolvers.mbonus(15, 25)}, on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 5)}, + + inc_damage = { [DamageType.COLD] = 25 }, on_move = function(self) - local DamageType = require "engine.DamageType" - local duration = 7 - local radius = 0 - local dam = 25 - -- Add a lasting map effect - game.level.map:addEffect(self, - self.x, self.y, duration, - engine.DamageType.ICE, 25, - radius, - 5, nil, - engine.Entity.new{alpha=100, display='', color_br=30, color_bg=60, color_bb=200}, - function(e) - e.radius = e.radius - return true - end, - false - ) + local DamageType = require "engine.DamageType" + local duration = 9 + local radius = 0 + local dam = 100 + -- Add a lasting map effect + game.level.map:addEffect(self, + self.x, self.y, duration, + engine.DamageType.ICE, dam, + radius, + 5, nil, + engine.Entity.new{alpha=100, display='', color_br=30, color_bg=60, color_bb=200}, + function(e) + e.radius = e.radius + return true + end, + false + ) end, resolvers.talents{ @@ -223,13 +227,12 @@ newEntity{ base = "BASE_NPC_GHOST", define_as = "GLACIAL_LEGION", [Talents.T_FREEZE]={base=5, every=4, max=10}, [Talents.T_ICE_STORM]={base=4, every=6, max=8}, [Talents.T_ICE_SHARDS]={base=5, every=5, max=9}, - [Talents.T_ARCANE_POWER]={base=4, every=3, max = 11}, [Talents.T_SHATTER]={base=3, every=6, max=8}, [Talents.T_UTTERCOLD]={base=3, every=7, max = 5}, [Talents.T_FROZEN_GROUND]={base=4, every=6, max = 6}, [Talents.T_CHILL_OF_THE_TOMB]={base=5, every=5, max=10}, [Talents.T_SPELLCRAFT]={base=3, every=7, max=8}, - [Talents.T_MANAFLOW]={base=5, every=4, max = 12}, + --[Talents.T_MANAFLOW]={base=5, every=4, max = 12}, [Talents.T_FROST_HANDS]={base=3, every=7, max=8}, }, resolvers.drops{chance=100, nb=3, {tome_drops="boss"} }, @@ -243,7 +246,7 @@ newEntity{ base = "BASE_NPC_BONE_GIANT", define_as = "HEAVY_SENTINEL", desc = [[A towering creature, made from the bones of countless bodies. An aura of flame bellows from within its chest.]], resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_giant_heavy_sentinel.png", display_h=2, display_y=-1}}}, level_range = {45, nil}, exp_worth = 2, - rarity = 40, + rarity = 28, rank = 3.5, ai = "tactical", size=5, @@ -251,12 +254,12 @@ newEntity{ base = "BASE_NPC_BONE_GIANT", define_as = "HEAVY_SENTINEL", combat_armor = 20, combat_def = 35, life_rating = 28, - combat_atk=30, - combat_spellpower=15, + combat_atk = 60, + combat_spellpower=35, stats = { str=28, dex=60, mag=20, con=20 }, - combat = { dam=resolvers.levelup(60, 1, 2), atk=resolvers.levelup(70, 1, 1), apr=20, dammod={str=1.2}, damtype=engine.DamageType.FIRE, convert_damage={[engine.DamageType.PHYSICAL]=50}}, + combat = { dam=resolvers.levelup(60, 1, 2), atk=resolvers.levelup(110, 1, 1), apr=20, dammod={str=1.2}, damtype=engine.DamageType.FIRE, convert_damage={[engine.DamageType.PHYSICAL]=50}}, melee_project = {[DamageType.FIRE]=resolvers.mbonus(15, 25)}, on_melee_hit = {[DamageType.FIRE]=resolvers.mbonus(15, 5)}, @@ -268,12 +271,10 @@ newEntity{ base = "BASE_NPC_BONE_GIANT", define_as = "HEAVY_SENTINEL", [Talents.T_SKELETON_REASSEMBLE]=5, [Talents.T_ARCANE_POWER]={base=3, every=3, max = 6}, [Talents.T_FLAME]={base=3, every=4, max = 8}, - [Talents.T_FLAMESHOCK]={base=2, every=6, max = 7}, - [Talents.T_MANAFLOW]={base=5, every=5, max = 10}, + [Talents.T_FLAMESHOCK]={base=3, every=6, max = 7}, [Talents.T_INFERNO]={base=2, every=5, max = 6}, [Talents.T_BURNING_WAKE]={base=1, every=4, max = 5}, [Talents.T_WILDFIRE]={base=3, every=7, max=5}, - --[Talents.T_GOLEM_MOLTEN_SKIN]={base=3, every=6, max=6}, [Talents.T_CLEANSING_FLAMES]={base=2, every=6, max = 5}, [Talents.T_ARCANE_COMBAT]=3, [Talents.T_SPELLCRAFT]={base=3, every=7, max=7}, @@ -291,20 +292,25 @@ newEntity{ base = "BASE_NPC_VAMPIRE", unique=true, define_as="ARCH_ZEPHYR", resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_vampire_arch_zephyr.png", display_h=2, display_y=-1}}}, desc=[[The robes of this ancient vampire billow with intense winds. Bolts of lightning arc along its body. In its hand it holds a bow, electricity streaking across it.]], level_range = {45, nil}, exp_worth = 1, - rarity = 40, + rarity = 28, autolevel="warriormage", stats = { str=24, dex=40, mag=24, con=20 }, max_life = resolvers.rngavg(100,120), life_rating=25, combat_armor = 15, combat_def = 15, rank = 3.5, - mana_regen=6, + mana_regen = 20, --Maintain Thunderstorm + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 }, - movement_speed=1.5, + movement_speed=1.75, - combat_atk = 40, - combat_spellpower = 40, + combat_atk = 120, + combat_spellpower = 60, + + ranged_project = {[DamageType.LIGHTNING] = resolvers.mbonus(30, 30)}, - ai = "tactical", ai_state = { talent_in=4, }, + ai = "tactical", ai_state = { talent_in=3, }, + ai_tactic = resolvers.tactic"ranged", resolvers.equip{ {type="weapon", subtype="longbow", defined="STORM_FURY", random_art_replace={chance=50}, autoreq=true, force_drop=true}, {type="ammo", subtype="arrow", autoreq=true} }, resists = { [DamageType.LIGHTNING] = 100, [DamageType.PHYSICAL] = -20, [DamageType.LIGHT] = 30, }, @@ -322,7 +328,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE", unique=true, define_as="ARCH_ZEPHYR", [Talents.T_SHOOT]=1, -- If possible, add talent that lets it temporarily fire lightning instead of arrows. [Talents.T_RELOAD]=1, - [Talents.T_BOW_MASTERY]={base=3, every=10}, + [Talents.T_BOW_MASTERY]={base=4, every=10}, [Talents.T_DUAL_ARROWS]={base=3, every=6, max=8}, [Talents.T_PINNING_SHOT]={base=2, every=6, max=4}, [Talents.T_CRIPPLING_SHOT]={base=2, every=6, max=7}, @@ -339,18 +345,23 @@ newEntity{ base = "BASE_NPC_WIGHT", desc=[[Intense Arcane energy whirls in the air around this ethereal form. ]], level_range = {45, nil}, exp_worth = 2, life_rating=16, - rarity = 40, + rarity = 28, rank = 3.5, max_life = resolvers.rngavg(200,300), max_mana = resolvers.rngavg(800,1200), - mana_regen = 5, + mana_regen = 100, --RAW ARCANE POWER combat_armor = 12, combat_def = 30, combat_atk=30, + combat_spellpower = resolvers.mbonus(90, 30), - combat = { dam=resolvers.mbonus(40, 20), atk=20, apr=15, damtype=DamageType.ARCANE }, + arcane_cooldown_divide = 4, --Aether Avatar ++ + inc_damage = { [DamageType.ARCANE] = 30 }, - resists = { [DamageType.COLD] = 30, [DamageType.FIRE] = 30, [DamageType.LIGHTNING] = 30, [DamageType.PHYSICAL] = 0, [DamageType.LIGHT] = 0, [DamageType.ARCANE] = 100}, + combat = { dam=resolvers.mbonus(40, 20), atk=20, apr=15, damtype=DamageType.ARCANE }, + + resists = { [DamageType.COLD] = 30, [DamageType.FIRE] = 30, [DamageType.LIGHTNING] = 30, [DamageType.PHYSICAL] = 0, [DamageType.LIGHT] = 0, [DamageType.ARCANE] = 100}, ai = "tactical", + ai_tactic = resolvers.tactic"ranged", resolvers.talents{ [Talents.T_FLAMESHOCK]={base=3, every=5, max=7}, [Talents.T_LIGHTNING]={base=4, every=5, max=8}, [Talents.T_GLACIAL_VAPOUR]={base=3, every=5, max=7}, [Talents.T_STRIKE]={base=3, every=5, max=7}, [Talents.T_ARCANE_POWER]={base=6, every=2, max=12}, [Talents.T_MANATHRUST]={base=6, every=4, max=10}, @@ -358,9 +369,9 @@ newEntity{ base = "BASE_NPC_WIGHT", [Talents.T_SPELLCRAFT]=5, [Talents.T_AETHER_BEAM]={base=6, every=7, max=9}, [Talents.T_AETHER_BREACH]={base=3, every=6, max=6}, - [Talents.T_HEAL]={base=2, every=6, max=6}, + [Talents.T_HEAL]={base=3, every=6, max=6}, [Talents.T_SHIELDING]={base=3, every=6, max=6}, - [Talents.T_ARCANE_SHIELD]={base=2, every=5, max=5}, + [Talents.T_ARCANE_SHIELD]={base=3, every=5, max=5}, [Talents.T_PURE_AETHER]={base=3, every=7, max=5}, [Talents.T_PHASE_DOOR]=10, }, -- GitLab