From 360f9b24fb2e0170aa85f76aacfbe6546e256ea5 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Sun, 31 Oct 2010 03:46:20 +0000 Subject: [PATCH] Boss artifacts can be found before the boss is killed, the boss will cheat and use it for combat but will drop something else git-svn-id: http://svn.net-core.org/repos/t-engine4@1725 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engines/default/engine/Zone.lua | 14 +- game/modules/tome/class/Actor.lua | 5 +- .../data/general/objects/boss-artifacts.lua | 658 ++++++++++++++++++ .../tome/data/general/objects/objects.lua | 1 + .../data/general/objects/world-artifacts.lua | 2 +- .../data/zones/ancient-elven-ruins/npcs.lua | 2 +- .../zones/ancient-elven-ruins/objects.lua | 34 +- .../tome/data/zones/blighted-ruins/npcs.lua | 2 +- .../data/zones/blighted-ruins/objects.lua | 15 - .../tome/data/zones/charred-scar/npcs.lua | 2 +- .../tome/data/zones/charred-scar/objects.lua | 23 - game/modules/tome/data/zones/daikara/npcs.lua | 4 +- .../tome/data/zones/daikara/objects.lua | 48 -- .../tome/data/zones/flooded-cave/npcs.lua | 2 +- .../tome/data/zones/flooded-cave/objects.lua | 34 - .../tome/data/zones/gorbat-pride/npcs.lua | 2 +- .../tome/data/zones/gorbat-pride/objects.lua | 20 - .../tome/data/zones/grushnak-pride/npcs.lua | 2 +- .../data/zones/grushnak-pride/objects.lua | 27 - .../tome/data/zones/high-peak/objects.lua | 2 +- game/modules/tome/data/zones/maze/npcs.lua | 4 +- game/modules/tome/data/zones/maze/objects.lua | 51 -- .../tome/data/zones/old-forest/npcs.lua | 5 +- .../tome/data/zones/old-forest/objects.lua | 46 -- .../tome/data/zones/rak-shor-pride/npcs.lua | 2 +- .../data/zones/rak-shor-pride/objects.lua | 18 - game/modules/tome/data/zones/reknor/npcs.lua | 2 +- .../tome/data/zones/reknor/objects.lua | 21 - .../tome/data/zones/ruins-kor-pul/npcs.lua | 4 +- .../tome/data/zones/ruins-kor-pul/objects.lua | 44 -- game/modules/tome/data/zones/telmur/npcs.lua | 2 +- .../tome/data/zones/telmur/objects.lua | 23 - .../tome/data/zones/tol-falas/npcs.lua | 4 +- .../tome/data/zones/tol-falas/objects.lua | 87 --- .../zones/town-sunwall-outpost/objects.lua | 67 -- .../tome/data/zones/trollshaws/npcs.lua | 4 +- .../tome/data/zones/trollshaws/objects.lua | 48 -- .../tome/data/zones/valley-moon/npcs.lua | 2 +- .../tome/data/zones/valley-moon/objects.lua | 27 - .../tome/data/zones/vor-armoury/npcs.lua | 2 +- .../tome/data/zones/vor-armoury/objects.lua | 27 - .../tome/data/zones/vor-pride/npcs.lua | 2 +- .../tome/data/zones/vor-pride/objects.lua | 27 - game/modules/tome/resolvers.lua | 10 +- 44 files changed, 707 insertions(+), 721 deletions(-) create mode 100644 game/modules/tome/data/general/objects/boss-artifacts.lua diff --git a/game/engines/default/engine/Zone.lua b/game/engines/default/engine/Zone.lua index e24a23e1ab..d6d36fc05d 100644 --- a/game/engines/default/engine/Zone.lua +++ b/game/engines/default/engine/Zone.lua @@ -256,7 +256,7 @@ end --- Find a given entity and resolve it -- @return the fully resolved entity, ready to be used on a level. Or nil if a filter was given an nothing found -function _M:makeEntityByName(level, type, name) +function _M:makeEntityByName(level, type, name, force_unique) resolvers.current_level = self.base_level + level.level - 1 local e @@ -267,11 +267,19 @@ function _M:makeEntityByName(level, type, name) end if not e then return nil end - if e.unique and game.uniques[e.__CLASSNAME.."/"..e.unique] then print("refused unique", e.name, e.__CLASSNAME.."/"..e.unique) return nil end + local forced = false + if e.unique and game.uniques[e.__CLASSNAME.."/"..e.unique] then + if not force_unique then + print("refused unique", e.name, e.__CLASSNAME.."/"..e.unique) + return nil + else + forced = true + end + end e = self:finishEntity(level, type, e) - return e + return e, forced end --- Finishes generating an entity diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index 87464626a1..f869c9f804 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -749,7 +749,7 @@ function _M:die(src) for i, o in ipairs(inven) do -- Handle boss wielding artifacts if o.__special_boss_drop and rng.percent(o.__special_boss_drop.chance) then - print("Refusing to drop "..self.name.." artifact "..o.name) + print("Refusing to drop "..self.name.." artifact "..o.name.." with chance "..o.__special_boss_drop.chance) -- Do not drop o.no_drop = true @@ -757,9 +757,6 @@ function _M:die(src) -- Drop a random artifact instead local ro = game.zone:makeEntity(game.level, "object", {unique=true}, nil, true) if ro then game.zone:addEntity(game.level, ro, "object", self.x, self.y) end - - -- Add to the pool - game.state:addWorldArtifact(o.define_as, o.__special_boss_drop) end if not o.no_drop then diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua new file mode 100644 index 0000000000..b413f88e1c --- /dev/null +++ b/game/modules/tome/data/general/objects/boss-artifacts.lua @@ -0,0 +1,658 @@ +-- ToME - Tales of Middle-Earth +-- Copyright (C) 2009, 2010 Nicolas Casalini +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- Nicolas Casalini "DarkGod" +-- darkgod@te4.org + +local Stats = require "engine.interface.ActorStats" +local Talents = require "engine.interface.ActorTalents" + +-- This file describes artifacts associated with a boss of the game, they have a high chance of dropping their respective ones, but they can still be found elsewhere + +newEntity{ base = "BASE_LONGSWORD", + define_as = "LONGSWORD_RINGIL", rarity=false, unided_name = "glittering longsword", + name = "Ringil, the glittering sword of Fingolfin", unique=true, + desc = [[The sword of Fingolfin, said to have glittered like ice. With it he wounded Morgoth in single combat after the Dagor Bragollach.]], + require = { stat = { str=35 }, }, + level_range = {35, 45}, + rarity = 280, + cost = 2000, + material_level = 5, + combat = { + dam = 45, + apr = 10, + physcrit = 10, + dammod = {str=1}, + damrange = 1.4, + }, + wielder = { + lite = 1, + see_invisible = 2, + resists={[DamageType.COLD] = 25}, + inc_damage = { [DamageType.COLD] = 20 }, + melee_project={[DamageType.ICE] = 15}, + }, + max_power = 18, power_regen = 1, + use_power = { name = "generate a burst of ice", power = 8, + use = function(self, who) + local tg = {type="ball", range=0, radius=4, friendlyfire=false} + who:project(tg, who.x, who.y, engine.DamageType.ICE, 10 + (who:getMag() + who:getWil()) / 2, {type="freeze"}) + game:playSoundNear(who, "talents/ice") + game.logSeen(who, "%s invokes the power of Ringil!", who.name:capitalize()) + return true + end + }, +} + +newEntity{ base = "BASE_LITE", define_as = "UNDEATH_PHIAL", + unided_name = "phial filled with darkness", unique = true, + name = "Phial of Undead", color=colors.DARK_GREY, + desc = [[This phial seems filled with darkness, yet it cleanses your thoughts.]], + level_range = {1, 10}, + rarity = 220, + encumber = 2, + cost = 50, + material_level = 2, + + wielder = { + lite = 1, + infravision = 6, + }, +} + +newEntity{ base = "BASE_AMULET", + define_as = "FIERY_CHOKER", rarity=false, + name = "Fiery Choker", unique=true, + desc = [[A choker made of pure flame, forever shifting patterns around the neck of its wearer. Its fire seems to not harm the wearer.]], + level_range = {32, 42}, + rarity = 220, + cost = 50, + wielder = { + inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 }, + combat_spellpower = 7, + combat_spellcrit = 8, + resists = { + [DamageType.FIRE] = 20, + [DamageType.COLD] = -20, + }, + inc_damage={ + [DamageType.FIRE] = 10, + [DamageType.COLD] = -5, + }, + blind_immune = 1, + }, +} + +-- Artifact, droped by Rantha +newEntity{ base = "BASE_LEATHER_BOOT", + define_as = "FROST_TREADS", + name = "Frost Treads", unique=true, + desc = [[A pair of leather boots. Cold to the touch, they radiate a cold blue light.]], + require = { stat = { dex=16 }, }, + level_range = {10, 18}, + rarity = 220, + cost = 40, + + wielder = { + lite = 1, + combat_armor = 2, + combat_def = 1, + fatigue = 14, + inc_damage = { + [DamageType.COLD] = 5, + }, + resists = { + [DamageType.COLD] = 20, + [DamageType.NATURE] = 10, + }, + inc_stats = { [Stats.STAT_STR] = 4, [Stats.STAT_DEX] = 4, [Stats.STAT_CUN] = 4, }, + }, +} + +newEntity{ base = "BASE_HELM", + define_as = "RUNED_SKULL", + name = "Dragonskull Helm", unique=true, unided_name="skull helm", + desc = [[Traces of a dragon's power still remain in this bleached and cracked skull.]], + require = { stat = { mag=24 }, }, + level_range = {45, 50}, + rarity = 280, + cost = 200, + + wielder = { + resists = { + [DamageType.FIRE] = 15, + [DamageType.COLD] = 15, + [DamageType.LIGHTNING] = 15, + }, + esp = {dragon=1}, + combat_armor = 2, + fatigue = 12, + combat_physresist = 12, + combat_mentalresist = 12, + combat_spellresist = 12, + }, +} + +newEntity{ base = "BASE_TRIDENT", + define_as = "TRIDENT_TIDES", + name = "Trident of the Tides", unique=true, + desc = [[As you wield this trident you can feel the power of the tides rushing through your arms. +Tridents require the exotic weapons mastery talent to correctly use.]], + require = { stat = { str=35 }, }, + level_range = {30, 40}, + rarity = 230, + cost = 300, + material_level = 4, + combat = { + dam = 50, + atk = 10, + apr = 4, + physcrit = 15, + dammod = {str=1.3}, + damrange = 1.4, + }, + + wielder = { + combat_spellresist = 18, + see_invisible = 2, + resists={[DamageType.COLD] = 25}, + inc_damage = { [DamageType.COLD] = 20 }, + melee_project={ + [DamageType.COLD] = 15, + [DamageType.NATURE] = 20, + }, + }, + + max_power = 150, power_regen = 1, + use_talent = { id = Talents.T_WATER_BOLT, level=3, power = 60 }, +} + +newEntity{ base = "BASE_LIGHT_ARMOR", + define_as = "CHROMATIC_HARNESS", rarity=false, + name = "Chromatic Harness", unique=true, + unided_name = "multi-hued leather armour", color=colors.VIOLET, + desc = [[This leather harness shines of multiple colors, quickly shifting through them in a seemingly chaotic manner.]], + level_range = {40, 50}, + rarity = 280, + cost = 500, + material_level = 5, + wielder = { + talent_cd_reduction={[Talents.T_ICE_BREATH]=3, [Talents.T_FIRE_BREATH]=3, [Talents.T_SAND_BREATH]=3, }, + inc_stats = { [Stats.STAT_WIL] = 6, [Stats.STAT_CUN] = 4, [Stats.STAT_DEX] = 3, [Stats.STAT_LCK] = 10, }, + poison_immune = 0.7, + combat_armor = 10, + esp = { dragon = 1 }, + fatigue = 10, + }, +} + +newEntity{ base = "BASE_RING", + define_as = "PRIDE_GLORY", rarity=false, + name = "Glory of the Pride", unique=true, + desc = [[The most prized treasure of the Battlemaster of the Pride, Grushnak. This gold ring is incribed in the orc tongue, the black speech.]], + unided_name = "deep black ring", + level_range = {40, 50}, + rarity = 280, + cost = 500, + material_level = 5, + wielder = { + max_mana = -40, + max_stamina = 40, + stun_immune = 1, + confusion_immune = 1, + combat_atk = 10, + combat_dam = 10, + combat_def = 5, + combat_armor = 10, + fatigue = -15, + talent_cd_reduction={ + [Talents.T_RUSH]=15, + }, + inc_damage={ [DamageType.PHYSICAL] = 8, }, + }, +} + +newEntity{ base = "BASE_HELM", + define_as = "HELM_OF_HAMMERHAND", + name = "Steel Helm of Hammerhand", unique=true, + desc = [[A great helm as steady as the heroes of the Westdike. Mighty were the blows of Helm, the Hammerhand!]], + require = { stat = { str=16 }, }, + level_range = {12, 22}, + rarity = 200, + cost = 20, + + wielder = { + combat_armor = 4, + fatigue = 8, + inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_CON] = 3, [Stats.STAT_WIL] = 4 }, + combat_physresist = 7, + combat_mentalresist = 7, + combat_spellresist = 7, + }, +} + +newEntity{ base = "BASE_SHIELD", + define_as = "LUNAR_SHIELD", + unique = true, + name = "Lunar Shield", + unided_name = "chitinous shield", + desc = [[A large section of chitin removed from Nimisil. It continues to give off a strange white glow.]], + color = colors.YELLOW, + metallic = false, + require = { stat = { str=35 }, }, + level_range = {40, 50}, + rarity = 280, + cost = 350, + material_level = 5, + special_combat = { + dam = 45, + physcrit = 10, + dammod = {str=1}, + damtype = DamageType.ARCANE, + }, + wielder = { + resists={[DamageType.DARKNESS] = 25}, + inc_damage={[DamageType.DARKNESS] = 15}, + + combat_armor = 7, + combat_def = 12, + combat_def_ranged = 5, + fatigue = 12, + + lite = 1, + talents_types_mastery = {["divine/star-fury"]=0.2,["divine/twilight"]=0.1,}, + }, +} + +newEntity{ base = "BASE_SHIELD", + define_as = "OLD_MAN_WILLOW_SHIELD", + name = "Old Man Willow's Barkwood", unique=true, + desc = [[The barkwood of the Old Man's Willow, made into roughly the shape of a shield.]], + require = { stat = { str=25 }, }, + level_range = {12, 2}, + rarity = 200, + cost = 20, + rarity = false, + metallic = false, + + special_combat = { + dam = resolvers.rngavg(20,30), + physcrit = 2, + dammod = {str=1.5}, + }, + wielder = { + combat_armor = 5, + combat_def = 9, + fatigue = 14, + resists = { + [DamageType.FIRE] = -20, + [DamageType.COLD] = 20, + [DamageType.NATURE] = 20, + }, + }, +} + +newEntity{ base = "BASE_GEM", + unique = true, define_as = "PETRIFIED_WOOD", + unided_name = "burned piece of wood", + name = "Petrified Wood", subtype = "black", + color = colors.WHITE, image="object/bloodstone.png", + level_range = {35, 45}, + rarity = 280, + desc = [[A piece of the scorched wood took from the remains of Snaproot.]], + rarity = false, + cost = 100, + material_level = 5, + imbue_powers = { + resists = { [DamageType.NATURE] = 25, [DamageType.FIRE] = -10, [DamageType.COLD] = 10 }, + inc_stats = { [Stats.STAT_CON] = 10, }, + }, +} + +newEntity{ base = "BASE_CLOTH_ARMOR", + define_as = "BLACK_ROBE", rarity=false, + name = "Black Robe", unique=true, + unided_name = "black robe", color=colors.DARK_GREY, + desc = [[A silk robe, darker than the darkest night sky, it radiates power.]], + level_range = {40, 50}, + rarity = 280, + cost = 500, + wielder = { + inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 }, + see_invisible = 10, + blind_immune = 1, + combat_spellpower = 10, + combat_dam = 10, + combat_def = 6, + }, +} + +newEntity{ base = "BASE_WARAXE", + define_as = "MALEDICTION", rarity=false, + unided_name = "pestilent waraxe", + name = "Malediction", unique=true, + desc = [[The land withers and crumbles wherever this cursed axe rests.]], + require = { stat = { str=55 }, }, + level_range = {35, 45}, + rarity = 290, + cost = 375, + combat = { + dam = 55, + apr = 15, + physcrit = 10, + dammod = {str=1}, + damrange = 1.2, + }, + wielder = { + life_regen = -0.3, + inc_damage = { [DamageType.BLIGHT] = 20 }, + melee_project={[DamageType.BLIGHT] = 20}, + }, +} + +newEntity{ base = "BASE_STAFF", + define_as = "STAFF_KOR", rarity=false, + name = "Kor's Fall", unique=true, + desc = [[Made from the bones of of many creatures this staff glows with power. You can feel its evilness as you touch it.]], + require = { stat = { mag=25 }, }, + level_range = {1, 10}, + rarity = 200, + cost = 5, + combat = { + dam = 10, + apr = 0, + physcrit = 1.5, + dammod = {mag=1.1}, + }, + wielder = { + see_invisible = 2, + combat_spellpower = 7, + combat_spellcrit = 8, + inc_damage={ + [DamageType.FIRE] = 4, + [DamageType.COLD] = 4, + [DamageType.ACID] = 4, + [DamageType.LIGHTNING] = 4, + [DamageType.BLIGHT] = 4, + }, + }, +} + +newEntity{ base = "BASE_AMULET", + define_as = "VOX", rarity=false, + name = "Vox", unique=true, + unided_name = "ringing amulet", color=colors.BLUE, + desc = [[No force can hope to silence the wearer of this amulet.]], + level_range = {40, 50}, + rarity = 220, + cost = 3000, + wielder = { + see_invisible = 20, + silence_immune = 0.8, + combat_spellpower = 9, + combat_spellcrit = 4, + mana = 50, + vim = 50, + }, +} + +newEntity{ base = "BASE_STAFF", + define_as = "TELOS_TOP_HALF", rarity=false, + slot_forbid = false, + twohanded = false, + name = "Telos's Staff (Top Half)", unique=true, + desc = [[The top part of Telos's broken staff.]], + require = { stat = { mag=35 }, }, + level_range = {40, 50}, + rarity = 210, + encumberance = 2.5, + cost = 500, + combat = { + dam = 35, + apr = 0, + physcrit = 1.5, + dammod = {mag=1.0}, + }, + wielder = { + combat_spellpower = 25, + combat_spellcrit = 5, + combat_mentalresist = 8, + inc_stats = { [Stats.STAT_WIL] = 5, }, + }, +} + +newEntity{ base = "BASE_AMULET", + define_as = "AMULET_DREAD", rarity=false, + name = "Choker of Dread", unique=true, + unided_name = "dark amulet", color=colors.LIGHT_DARK, + desc = [[The evilness of undeath radiates from this amulet.]], + level_range = {20, 28}, + rarity = 220, + cost = 5000, + wielder = { + see_invisible = 10, + blind_immune = 1, + combat_spellpower = 5, + combat_dam = 5, + }, + max_power = 60, power_regen = 1, + use_power = { name = "summon an elder vampire to your side", power = 60, use = function(self, who) + if not who:canBe("summon") then game.logPlayer(who, "You can not summon, you are suppressed!") return end + + -- Find space + local x, y = util.findFreeGrid(who.x, who.y, 5, true, {[engine.Map.ACTOR]=true}) + if not x then + game.logPlayer(who, "Not enough space to invoke the vampire!") + return + end + print("Invoking guardian on", x, y) + + local NPC = require "mod.class.NPC" + local vampire = NPC.new{ + type = "undead", subtype = "vampire", + display = "V", + name = "elder vampire", color=colors.RED, + desc=[[A terrible robed undead figure, this creature has existed in its unlife for many centuries by stealing the life of others. It can + summon the very shades of its victims from beyond the grave to come enslaved to its aid.]], + + combat = { dam=resolvers.rngavg(9,13), atk=10, apr=9, damtype=engine.DamageType.DRAINLIFE, dammod={str=1.9} }, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, + + autolevel = "warriormage", + ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=3, }, + energy = { mod=1 }, + stats = { str=12, dex=12, mag=12, con=12 }, + life_regen = 3, + size_category = 3, + rank = 3, + infravision = 20, + + inc_damage = table.clone(who.inc_damage, true), + + resolvers.tmasteries{ ["technique/other"]=0.5, ["spell/phantasm"]=0.8, }, + + resists = { [engine.DamageType.COLD] = 80, [engine.DamageType.NATURE] = 80, [engine.DamageType.LIGHT] = -50, }, + blind_immune = 1, + confusion_immune = 1, + see_invisible = 5, + undead = 1, + + level_range = {who.level, who.level}, exp_worth = 0, + max_life = resolvers.rngavg(90,100), + combat_armor = 12, combat_def = 10, + resolvers.talents{ [who.T_STUN]=2, [who.T_BLUR_SIGHT]=3, [who.T_PHANTASMAL_SHIELD]=2, [who.T_ROTTING_DISEASE]=3, }, + + faction = who.faction, + summoner = who, + summon_time = 10, + } + + vampire:resolve() + game.zone:addEntity(game.level, vampire, "actor", x, y) + + game:playSoundNear(who, "talents/spell_generic") + end }, +} + +newEntity{ define_as = "RUNED_SKULL", + unique = true, + type = "gem", subtype="red", + unided_name = "human skull", + name = "Runed Skull", + display = "*", color=colors.RED, + level_range = {40, 50}, + rarity = 390, + encumber = 3, + desc = [[Dull red runes are etched all over this blackened skull.]], + + carrier = { + combat_spellpower = 7, + on_melee_hit = {[DamageType.FIREKNOCKBACK]=25}, + }, +} + +newEntity{ base = "BASE_GREATMAUL", + define_as = "GREATMAUL_BILL_TRUNK", + name = "Bill's Tree Trunk", unique=true, + desc = [[This is a big nasty looking tree trunk that Bill was using as a weapon. It could still serve this purpose, should you be strong enough to wield it!]], + require = { stat = { str=25 }, }, + level_range = {1, 10}, + rarity = 200, + metallic = false, + cost = 5, + combat = { + dam = 30, + apr = 7, + physcrit = 1.5, + dammod = {str=1.3}, + damrange = 1.7, + }, + + wielder = { + }, +} + + +newEntity{ base = "BASE_SHIELD", + define_as = "SANGUINE_SHIELD", + unided_name = "bloody shield", + name = "Sanguine Shield", unique=true, + desc = [[Though tarnished and spattered with blood, the emblem of the sun still manages to shine through on this shield.]], + require = { stat = { str=39 }, }, + level_range = {35, 45}, + rarity = 240, + cost = 120, + + special_combat = { + dam = 40, + physcrit = 9, + dammod = {str=1.2}, + }, + wielder = { + combat_armor = 4, + combat_def = 14, + combat_def_ranged = 14, + inc_stats = { [Stats.STAT_CON] = 5, }, + fatigue = 19, + resists = { [DamageType.BLIGHT] = 25, }, + life_regen = 5, + }, +} + +newEntity{ base = "BASE_WHIP", + define_as = "WHIP_GOTHMOG", + unided_name = "fiery whip", + name = "Whip of Gothmog, High Captain of the Balrogs", color=colors.PURPLE, unique = true, + desc = [[With this unbearably bright whip of flame, the Balrog Gothmog has become known for never having lost in combat. +But nothing lasts forever and he was finally defeated by Echtelion in the First Age. His whip must have been taken by the other balrogs from his corpse.]], + require = { stat = { dex=48 }, }, + level_range = {40, 50}, + rarity = 390, + cost = 250, + material_level = 5, + combat = { + dam = resolvers.rngavg(40,45), + apr = 0, + physcrit = 9, + dammod = {dex=1}, + damtype = DamageType.FIREKNOCKBACK, + }, + wielder = { + esp = {["demon/minor"]=1, ["demon/major"]=1}, + see_invisible = 2, + }, + carrier = { + inc_damage={ + [DamageType.BLIGHT] = 8, + }, + }, +} + +newEntity{ base = "BASE_GREATSWORD", + define_as = "MURDERBLADE", rarity=false, + name = "Warmaster Gnarg's Murderblade", unique=true, + unided_name = "blood-etched greatsword", color=colors.CRIMSON, + desc = [[A blood etched greatsword, it has seen many foes. From the inside.]], + require = { stat = { str=35 }, }, + level_range = {35, 45}, + rarity = 230, + cost = 300, + material_level = 5, + combat = { + dam = 54, + apr = 19, + physcrit = 4.5, + dammod = {str=1.2}, + }, + wielder = { + see_invisible = 25, + inc_stats = { [Stats.STAT_CON] = 5, [Stats.STAT_STR] = 5, [Stats.STAT_DEX] = 5, }, + talents_types_mastery = { + ["technique/2hweapon-cripple"] = 0.2, + ["technique/2hweapon-offense"] = 0.2, + }, + }, +} + +newEntity{ base = "BASE_LEATHER_CAP", + define_as = "CROWN_ELEMENTS", rarity=false, + name = "Crown of the Elements", unique=true, + unided_name = "jeweled crown", color=colors.DARK_GREY, + desc = [[Jeweled crown]], + level_range = {40, 50}, + rarity = 280, + cost = 500, + material_level = 5, + wielder = { + inc_stats = { [Stats.STAT_CON] = 5, [Stats.STAT_WIL] = 3, }, + resists={ + [DamageType.FIRE] = 15, + [DamageType.COLD] = 15, + [DamageType.ACID] = 15, + [DamageType.LIGHTNING] = 15, + }, + melee_project={ + [DamageType.FIRE] = 10, + [DamageType.COLD] = 10, + [DamageType.ACID] = 10, + [DamageType.LIGHTNING] = 10, + }, + see_invisible = 15, + combat_armor = 5, + fatigue = 5, + }, +} diff --git a/game/modules/tome/data/general/objects/objects.lua b/game/modules/tome/data/general/objects/objects.lua index b17183bd62..77ac265709 100644 --- a/game/modules/tome/data/general/objects/objects.lua +++ b/game/modules/tome/data/general/objects/objects.lua @@ -86,3 +86,4 @@ loadIfNot("/data/general/objects/lore/spellhunt.lua") loadIfNot("/data/general/objects/world-artifacts.lua") loadIfNot("/data/general/objects/quest-artifacts.lua") loadIfNot("/data/general/objects/special-artifacts.lua") +loadIfNot("/data/general/objects/boss-artifacts.lua") diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua index 560e6c8725..dad6631fba 100644 --- a/game/modules/tome/data/general/objects/world-artifacts.lua +++ b/game/modules/tome/data/general/objects/world-artifacts.lua @@ -30,7 +30,7 @@ end newEntity{ base = "BASE_STAFF", unique = true, name = "Staff of Destruction", - unided_name = "ash staff", + unided_name = "darkness infused staff", level_range = {20, 25}, color=colors.VIOLET, rarity = 100, diff --git a/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua b/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua index 6174ba57c7..96826c4a4d 100644 --- a/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua +++ b/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua @@ -46,7 +46,7 @@ newEntity{ define_as = "GREATER_MUMMY_LORD", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, }, equipment = resolvers.equip{ - {type="weapon", subtype="longsword", defined="LONGSWORD_RINGIL", random_art_replace={chance=75, rarity=280, level_range={35, 45}}, autoreq=true}, + {type="weapon", subtype="longsword", defined="LONGSWORD_RINGIL", random_art_replace={chance=75}}, autoreq=true}, {type="armor", subtype="shield", ego_chance=100, autoreq=true}, {type="armor", subtype="mummy", ego_chance=100, autoreq=true}, }, diff --git a/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua b/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua index 62a9c0307c..b3015b7619 100644 --- a/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua +++ b/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua @@ -23,39 +23,6 @@ load("/data/general/objects/mummy-wrappings.lua") local Stats = require "engine.interface.ActorStats" local Talents = require "engine.interface.ActorTalents" -newEntity{ base = "BASE_LONGSWORD", - define_as = "LONGSWORD_RINGIL", rarity=false, unided_name = "glittering longsword", - name = "Ringil, the glittering sword of Fingolfin", unique=true, - desc = [[The sword of Fingolfin, said to have glittered like ice. With it he wounded Morgoth in single combat after the Dagor Bragollach.]], - require = { stat = { str=35 }, }, - cost = 2000, - material_level = 5, - combat = { - dam = 45, - apr = 10, - physcrit = 10, - dammod = {str=1}, - damrange = 1.4, - }, - wielder = { - lite = 1, - see_invisible = 2, - resists={[DamageType.COLD] = 25}, - inc_damage = { [DamageType.COLD] = 20 }, - melee_project={[DamageType.ICE] = 15}, - }, - max_power = 18, power_regen = 1, - use_power = { name = "generate a burst of ice", power = 8, - use = function(self, who) - local tg = {type="ball", range=0, radius=4, friendlyfire=false} - who:project(tg, who.x, who.y, engine.DamageType.ICE, 10 + (who:getMag() + who:getWil()) / 2, {type="freeze"}) - game:playSoundNear(who, "talents/ice") - game.logSeen(who, "%s invokes the power of Ringil!", who.name:capitalize()) - return true - end - }, -} - -- Random artifact newEntity{ base = "BASE_MUMMY_WRAPPING", unique = true, @@ -81,3 +48,4 @@ newEntity{ base = "BASE_MUMMY_WRAPPING", max_power = 80, power_regen = 1, use_talent = { id = Talents.T_SPIT_POISON, level = 2, power = 50 }, } + diff --git a/game/modules/tome/data/zones/blighted-ruins/npcs.lua b/game/modules/tome/data/zones/blighted-ruins/npcs.lua index 74e41a1aa2..d7c356d5a5 100644 --- a/game/modules/tome/data/zones/blighted-ruins/npcs.lua +++ b/game/modules/tome/data/zones/blighted-ruins/npcs.lua @@ -83,7 +83,7 @@ This specimen look like it was hastily assembled and is not really complete yet. resolvers.sustains_at_birth(), resolvers.drops{chance=100, nb=3, {ego_chance=100} }, - resolvers.drops{chance=100, nb=1, {defined="UNDEATH_PHIAL", random_art_replace={chance=75, rarity=150, level_range={1, 10}}} }, + resolvers.drops{chance=100, nb=1, {defined="UNDEATH_PHIAL", random_art_replace={chance=75}}} }, ai = "dumb_talented_simple", ai_state = { talent_in=4, ai_move="move_astar", }, diff --git a/game/modules/tome/data/zones/blighted-ruins/objects.lua b/game/modules/tome/data/zones/blighted-ruins/objects.lua index 4a8ae637cd..96c2416da8 100644 --- a/game/modules/tome/data/zones/blighted-ruins/objects.lua +++ b/game/modules/tome/data/zones/blighted-ruins/objects.lua @@ -52,18 +52,3 @@ newEntity{ define_as = "CLOAK_DECEPTION", who:setQuestStatus("start-undead", engine.Quest.COMPLETED, "black-cloak") end, } - -newEntity{ base = "BASE_LITE", define_as = "UNDEATH_PHIAL", - unided_name = "phial filled with darkness", unique = true, - name = "Phial of Undead", color=colors.DARK_GREY, - desc = [[This phial seems filled with darkness, yet it cleanses your thoughts.]], - rarity = false, - encumber = 2, - cost = 50, - material_level = 2, - - wielder = { - lite = 1, - infravision = 6, - }, -} diff --git a/game/modules/tome/data/zones/charred-scar/npcs.lua b/game/modules/tome/data/zones/charred-scar/npcs.lua index 15fbfd04a3..439b0b9fae 100644 --- a/game/modules/tome/data/zones/charred-scar/npcs.lua +++ b/game/modules/tome/data/zones/charred-scar/npcs.lua @@ -276,7 +276,7 @@ This one looks even nastier and looks toward you with what seems to be disdain. ai = "dumb_talented_simple", ai_state = { talent_in=1, ai_move="move_astar" }, resolvers.equip{ - {type="jewelry", subtype="amulet", defined="FIERY_CHOKER", random_art_replace={chance=75, rarity=200, level_range={35, 45}}}, + {type="jewelry", subtype="amulet", defined="FIERY_CHOKER", random_art_replace={chance=75}}, }, resolvers.drops{chance=20, nb=1, {defined="JEWELER_TOME"} }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, diff --git a/game/modules/tome/data/zones/charred-scar/objects.lua b/game/modules/tome/data/zones/charred-scar/objects.lua index e1d2227747..4e7b8c6c64 100644 --- a/game/modules/tome/data/zones/charred-scar/objects.lua +++ b/game/modules/tome/data/zones/charred-scar/objects.lua @@ -18,26 +18,3 @@ -- darkgod@te4.org load("/data/general/objects/objects.lua") - -local Stats = require"engine.interface.ActorStats" - -newEntity{ base = "BASE_AMULET", - define_as = "FIERY_CHOKER", rarity=false, - name = "Fiery Choker", unique=true, - desc = [[A choker made of pure flame, forever shifting patterns around the neck of its wearer. Its fire seems to not harm the wearer.]], - cost = 50, - wielder = { - inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 }, - combat_spellpower = 7, - combat_spellcrit = 8, - resists = { - [DamageType.FIRE] = 20, - [DamageType.COLD] = -20, - }, - inc_damage={ - [DamageType.FIRE] = 10, - [DamageType.COLD] = -5, - }, - blind_immune = 1, - }, -} diff --git a/game/modules/tome/data/zones/daikara/npcs.lua b/game/modules/tome/data/zones/daikara/npcs.lua index 2e5c5f8842..925bb31095 100644 --- a/game/modules/tome/data/zones/daikara/npcs.lua +++ b/game/modules/tome/data/zones/daikara/npcs.lua @@ -47,7 +47,7 @@ newEntity{ define_as = "RANTHA_THE_WORM", resists = { [DamageType.FIRE] = -20, [DamageType.COLD] = 100 }, body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, - resolvers.drops{chance=100, nb=1, {defined="FROST_TREADS", random_art_replace={chance=75, rarity=150, level_range={12, 22}}}, }, + resolvers.drops{chance=100, nb=1, {defined="FROST_TREADS", random_art_replace={chance=75}}, }, resolvers.drops{chance=100, nb=3, {ego_chance=100} }, resolvers.drops{chance=100, nb=10, {type="money"} }, @@ -101,7 +101,7 @@ newEntity{ base="BASE_NPC_ORC_GRUSHNAK", define_as = "MASSOK", resolvers.equip{ {type="weapon", subtype="battleaxe", ego_change=100, autoreq=true}, {type="armor", subtype="massive", ego_chance=100, autoreq=true}, - {type="armor", subtype="head", defined="RUNED_SKULL", random_art_replace={chance=75, rarity=250, level_range={45, 50}}, autoreq=true}, + {type="armor", subtype="head", defined="RUNED_SKULL", random_art_replace={chance=75}, autoreq=true}, {type="armor", subtype="feet", ego_chance=100, autoreq=true}, }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, diff --git a/game/modules/tome/data/zones/daikara/objects.lua b/game/modules/tome/data/zones/daikara/objects.lua index 98dcc59189..4e7b8c6c64 100644 --- a/game/modules/tome/data/zones/daikara/objects.lua +++ b/game/modules/tome/data/zones/daikara/objects.lua @@ -18,51 +18,3 @@ -- darkgod@te4.org load("/data/general/objects/objects.lua") - -local Stats = require "engine.interface.ActorStats" - --- Artifact, droped by Rantha -newEntity{ base = "BASE_LEATHER_BOOT", - define_as = "FROST_TREADS", - name = "Frost Treads", unique=true, - desc = [[A pair of leather boots. Cold to the touch, they radiate a cold blue light.]], - require = { stat = { dex=16 }, }, - cost = 40, - - wielder = { - lite = 1, - combat_armor = 2, - combat_def = 1, - fatigue = 14, - inc_damage = { - [DamageType.COLD] = 5, - }, - resists = { - [DamageType.COLD] = 20, - [DamageType.NATURE] = 10, - }, - inc_stats = { [Stats.STAT_STR] = 4, [Stats.STAT_DEX] = 4, [Stats.STAT_CUN] = 4, }, - }, -} - -newEntity{ base = "BASE_HELM", - define_as = "RUNED_SKULL", - name = "Dragonskull Helm", unique=true, unided_name="skull helm", - desc = [[Traces of a dragon's power still remain in this bleached and cracked skull.]], - require = { stat = { mag=24 }, }, - cost = 200, - - wielder = { - resists = { - [DamageType.FIRE] = 15, - [DamageType.COLD] = 15, - [DamageType.LIGHTNING] = 15, - }, - esp = {dragon=1}, - combat_armor = 2, - fatigue = 12, - combat_physresist = 12, - combat_mentalresist = 12, - combat_spellresist = 12, - }, -} diff --git a/game/modules/tome/data/zones/flooded-cave/npcs.lua b/game/modules/tome/data/zones/flooded-cave/npcs.lua index 3d6538f4ff..dff19dfc85 100644 --- a/game/modules/tome/data/zones/flooded-cave/npcs.lua +++ b/game/modules/tome/data/zones/flooded-cave/npcs.lua @@ -50,7 +50,7 @@ newEntity{ define_as = "UKLLMSWWIK", resists = { [DamageType.COLD] = 60, [DamageType.LIGHTNING] = 20, }, body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, - resolvers.drops{chance=100, nb=1, {defined="TRIDENT_TIDES", random_art_replace={chance=50, rarity=250, level_range={30, 40}}, autoreq=true} }, + resolvers.drops{chance=100, nb=1, {defined="TRIDENT_TIDES", random_art_replace={chance=50}, autoreq=true} }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, resolvers.drops{chance=100, nb=10, {type="money"} }, diff --git a/game/modules/tome/data/zones/flooded-cave/objects.lua b/game/modules/tome/data/zones/flooded-cave/objects.lua index ac8051ff27..844b155d24 100644 --- a/game/modules/tome/data/zones/flooded-cave/objects.lua +++ b/game/modules/tome/data/zones/flooded-cave/objects.lua @@ -23,37 +23,3 @@ local DamageType = require "engine.DamageType" load("/data/general/objects/2htridents.lua", function(e) e.rarity = e.trident_rarity end) load("/data/general/objects/objects.lua") - --- Artifact, droped (and used!) by Bill the Stone Troll - -newEntity{ base = "BASE_TRIDENT", - define_as = "TRIDENT_TIDES", - name = "Trident of the Tides", unique=true, - desc = [[As you wield this trident you can feel the power of the tides rushing through your arms. -Tridents require the exotic weapons mastery talent to correctly use.]], - require = { stat = { str=35 }, }, - cost = 300, - material_level = 4, - combat = { - dam = 50, - atk = 10, - apr = 4, - physcrit = 15, - dammod = {str=1.3}, - damrange = 1.4, - }, - - wielder = { - combat_spellresist = 18, - see_invisible = 2, - resists={[DamageType.COLD] = 25}, - inc_damage = { [DamageType.COLD] = 20 }, - melee_project={ - [DamageType.COLD] = 15, - [DamageType.NATURE] = 20, - }, - }, - - max_power = 150, power_regen = 1, - use_talent = { id = Talents.T_WATER_BOLT, level=3, power = 60 }, -} diff --git a/game/modules/tome/data/zones/gorbat-pride/npcs.lua b/game/modules/tome/data/zones/gorbat-pride/npcs.lua index fcfb5484c8..85cb02b3f9 100644 --- a/game/modules/tome/data/zones/gorbat-pride/npcs.lua +++ b/game/modules/tome/data/zones/gorbat-pride/npcs.lua @@ -49,7 +49,7 @@ newEntity{ base="BASE_NPC_ORC_GORBAT", define_as = "GORBAT", resolvers.equip{ {type="weapon", subtype="greatmaul", ego_change=100, autoreq=true}, - {type="armor", subtype="light", defined="CHROMATIC_HARNESS", random_art_replace={chance=75, rarity=250, level_range={40, 50}}, autoreq=true}, + {type="armor", subtype="light", defined="CHROMATIC_HARNESS", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=1, {defined="ORB_DRAGON"} }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, diff --git a/game/modules/tome/data/zones/gorbat-pride/objects.lua b/game/modules/tome/data/zones/gorbat-pride/objects.lua index 1b705e2c92..c8bcaaefa0 100644 --- a/game/modules/tome/data/zones/gorbat-pride/objects.lua +++ b/game/modules/tome/data/zones/gorbat-pride/objects.lua @@ -19,23 +19,3 @@ load("/data/general/objects/objects-far-east.lua") load("/data/general/objects/lore/sunwall.lua") - -local Talents = require("engine.interface.ActorTalents") -local Stats = require"engine.interface.ActorStats" - -newEntity{ base = "BASE_LIGHT_ARMOR", - define_as = "CHROMATIC_HARNESS", rarity=false, - name = "Chromatic Harness", unique=true, - unided_name = "multi-hued leather armour", color=colors.VIOLET, - desc = [[This leather harness shines of multiple colors, quickly shifting through them in a seemingly chaotic manner.]], - cost = 500, - material_level = 5, - wielder = { - talent_cd_reduction={[Talents.T_ICE_BREATH]=3, [Talents.T_FIRE_BREATH]=3, [Talents.T_SAND_BREATH]=3, }, - inc_stats = { [Stats.STAT_WIL] = 6, [Stats.STAT_CUN] = 4, [Stats.STAT_DEX] = 3, [Stats.STAT_LCK] = 10, }, - poison_immune = 0.7, - combat_armor = 10, - esp = { dragon = 1 }, - fatigue = 10, - }, -} diff --git a/game/modules/tome/data/zones/grushnak-pride/npcs.lua b/game/modules/tome/data/zones/grushnak-pride/npcs.lua index 5fa18ef828..abd1b04c2c 100644 --- a/game/modules/tome/data/zones/grushnak-pride/npcs.lua +++ b/game/modules/tome/data/zones/grushnak-pride/npcs.lua @@ -55,7 +55,7 @@ newEntity{ base="BASE_NPC_ORC_GRUSHNAK", define_as = "GRUSHNAK", -- Commented because this can generate rings of invis or amulets of telepathy and drain the life of the boss -- {type="jewelry", subtype="amulet", ego_chance=100, autoreq=true}, -- {type="jewelry", subtype="ring", ego_chance=100, autoreq=true}, - {type="jewelry", subtype="ring", defined="PRIDE_GLORY", random_art_replace={chance=75, rarity=250, level_range={40, 50}}, autoreq=true}, + {type="jewelry", subtype="ring", defined="PRIDE_GLORY", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=1, {defined="ORB_DESTRUCTION"} }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, diff --git a/game/modules/tome/data/zones/grushnak-pride/objects.lua b/game/modules/tome/data/zones/grushnak-pride/objects.lua index 021a682375..c8bcaaefa0 100644 --- a/game/modules/tome/data/zones/grushnak-pride/objects.lua +++ b/game/modules/tome/data/zones/grushnak-pride/objects.lua @@ -19,30 +19,3 @@ load("/data/general/objects/objects-far-east.lua") load("/data/general/objects/lore/sunwall.lua") - -local Talents = require"engine.interface.ActorTalents" -local Stats = require"engine.interface.ActorStats" - -newEntity{ base = "BASE_RING", - define_as = "PRIDE_GLORY", rarity=false, - name = "Glory of the Pride", unique=true, - desc = [[The most prized treasure of the Battlemaster of the Pride, Grushnak. This gold ring is incribed in the orc tongue, the black speech.]], - unided_name = "deep black ring", - cost = 500, - material_level = 5, - wielder = { - max_mana = -40, - max_stamina = 40, - stun_immune = 1, - confusion_immune = 1, - combat_atk = 10, - combat_dam = 10, - combat_def = 5, - combat_armor = 10, - fatigue = -15, - talent_cd_reduction={ - [Talents.T_RUSH]=15, - }, - inc_damage={ [DamageType.PHYSICAL] = 8, }, - }, -} diff --git a/game/modules/tome/data/zones/high-peak/objects.lua b/game/modules/tome/data/zones/high-peak/objects.lua index f1d423a8ca..18fe3bba18 100644 --- a/game/modules/tome/data/zones/high-peak/objects.lua +++ b/game/modules/tome/data/zones/high-peak/objects.lua @@ -85,4 +85,4 @@ newEntity{ define_as = "PEARL_LIFE_DEATH", resists = {all = 7}, stun_immune = 1, }, -} \ No newline at end of file +} diff --git a/game/modules/tome/data/zones/maze/npcs.lua b/game/modules/tome/data/zones/maze/npcs.lua index e69167929f..c87425d024 100644 --- a/game/modules/tome/data/zones/maze/npcs.lua +++ b/game/modules/tome/data/zones/maze/npcs.lua @@ -50,7 +50,7 @@ newEntity{ define_as = "MINOTAUR_MAZE", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, }, resolvers.equip{ {type="weapon", subtype="battleaxe", autoreq=true}, - {type="armor", subtype="head", defined="HELM_OF_HAMMERHAND", random_art_replace={chance=75, rarity=200, level_range={12, 22}}, autoreq=true}, + {type="armor", subtype="head", defined="HELM_OF_HAMMERHAND", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, @@ -87,7 +87,7 @@ newEntity{ base = "BASE_NPC_SPIDER", define_as = "NIMISIL", instakill_immune = 1, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, - resolvers.drops{chance=100, nb=1, {defined="LUNAR_SHIELD", random_art_replace={chance=75, rarity=220, level_range={40, 50}}} }, + resolvers.drops{chance=100, nb=1, {defined="LUNAR_SHIELD", random_art_replace={chance=75}} }, combat_armor = 25, combat_def = 33, diff --git a/game/modules/tome/data/zones/maze/objects.lua b/game/modules/tome/data/zones/maze/objects.lua index fd04a496a1..4e7b8c6c64 100644 --- a/game/modules/tome/data/zones/maze/objects.lua +++ b/game/modules/tome/data/zones/maze/objects.lua @@ -18,54 +18,3 @@ -- darkgod@te4.org load("/data/general/objects/objects.lua") - -local Stats = require"engine.interface.ActorStats" - --- Artifact, droped (and used!) by the Minautaur -newEntity{ base = "BASE_HELM", - define_as = "HELM_OF_HAMMERHAND", - name = "Steel Helm of Hammerhand", unique=true, - desc = [[A great helm as steady as the heroes of the Westdike. Mighty were the blows of Helm, the Hammerhand!]], - require = { stat = { str=16 }, }, - cost = 20, - - wielder = { - combat_armor = 4, - fatigue = 8, - inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_CON] = 3, [Stats.STAT_WIL] = 4 }, - combat_physresist = 7, - combat_mentalresist = 7, - combat_spellresist = 7, - }, -} - -newEntity{ base = "BASE_SHIELD", - define_as = "LUNAR_SHIELD", - unique = true, - name = "Lunar Shield", - unided_name = "chitinous shield", - desc = [[A large section of chitin removed from Nimisil. It continues to give off a strange white glow.]], - color = colors.YELLOW, - metallic = false, - require = { stat = { str=35 }, }, - cost = 350, - material_level = 5, - special_combat = { - dam = 45, - physcrit = 10, - dammod = {str=1}, - damtype = DamageType.ARCANE, - }, - wielder = { - resists={[DamageType.DARKNESS] = 25}, - inc_damage={[DamageType.DARKNESS] = 15}, - - combat_armor = 7, - combat_def = 12, - combat_def_ranged = 5, - fatigue = 12, - - lite = 1, - talents_types_mastery = {["divine/star-fury"]=0.2,["divine/twilight"]=0.1,}, - }, -} diff --git a/game/modules/tome/data/zones/old-forest/npcs.lua b/game/modules/tome/data/zones/old-forest/npcs.lua index 6f28db77d8..f598f41df4 100644 --- a/game/modules/tome/data/zones/old-forest/npcs.lua +++ b/game/modules/tome/data/zones/old-forest/npcs.lua @@ -55,7 +55,7 @@ newEntity{ define_as = "OLD_MAN_WILLOW", resists = { [DamageType.FIRE] = -50 }, body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, - equipment = resolvers.equip{ {type="armor", subtype="shield", defined="OLD_MAN_WILLOW_SHIELD", random_art_replace={chance=75, rarity=200, level_range={10, 20}}, autoreq=true}, }, + equipment = resolvers.equip{ {type="armor", subtype="shield", defined="OLD_MAN_WILLOW_SHIELD", random_art_replace={chance=75}, autoreq=true}, }, drops = resolvers.drops{chance=100, nb=5, {ego_chance=100} }, resolvers.talents{ @@ -110,7 +110,8 @@ newEntity{ define_as = "SNAPROOT", -- backup guardian resists = { [DamageType.FIRE] = -20, [DamageType.PHYSICAL] = 50, [DamageType.COLD] = 50, [DamageType.NATURE] = 25 }, body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, - drops = resolvers.drops{chance=100, nb=5, {ego_chance=100} }, + resolvers.drops{chance=100, nb=1, {defined="PETRIFIED_WOOD", random_art_replace={chance=75}}}, + resolvers.drops{chance=100, nb=5, {ego_chance=100} }, resolvers.talents{ [Talents.T_STUN]=5, [Talents.T_GRAB]=5, diff --git a/game/modules/tome/data/zones/old-forest/objects.lua b/game/modules/tome/data/zones/old-forest/objects.lua index b88418361e..4e7b8c6c64 100644 --- a/game/modules/tome/data/zones/old-forest/objects.lua +++ b/game/modules/tome/data/zones/old-forest/objects.lua @@ -18,49 +18,3 @@ -- darkgod@te4.org load("/data/general/objects/objects.lua") - -local Stats = require "engine.interface.ActorStats" - --- Artifact, droped (and used!) by Bill the Stone Troll - -newEntity{ base = "BASE_SHIELD", - define_as = "OLD_MAN_WILLOW_SHIELD", - name = "Old Man Willow's Barkwood", unique=true, - desc = [[The barkwood of the Old Man's Willow, made into roughly the shape of a shield.]], - require = { stat = { str=25 }, }, - cost = 20, - rarity = false, - metallic = false, - - special_combat = { - dam = resolvers.rngavg(20,30), - physcrit = 2, - dammod = {str=1.5}, - }, - wielder = { - combat_armor = 5, - combat_def = 9, - fatigue = 14, - resists = { - [DamageType.FIRE] = -20, - [DamageType.COLD] = 20, - [DamageType.NATURE] = 20, - }, - }, -} - -newEntity{ base = "BASE_GEM", - unique = true, - unided_name = "burned piece of wood", - name = "Petrified Wood", subtype = "black", - color = colors.WHITE, image="object/bloodstone.png", - level_range = {35, 45}, - desc = [[A piece of the scorched wood took from the remains of Snaproot.]], - rarity = false, - cost = 100, - material_level = 5, - imbue_powers = { - resists = { [DamageType.NATURE] = 25, [DamageType.FIRE] = -10, [DamageType.COLD] = 10 }, - inc_stats = { [Stats.STAT_CON] = 10, }, - }, -} 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 c164698cf6..459408e749 100644 --- a/game/modules/tome/data/zones/rak-shor-pride/npcs.lua +++ b/game/modules/tome/data/zones/rak-shor-pride/npcs.lua @@ -52,7 +52,7 @@ newEntity{ base="BASE_NPC_ORC_RAK_SHOR", define_as = "RAK_SHOR", resolvers.equip{ {type="weapon", subtype="staff", ego_change=100, autoreq=true}, - {type="armor", subtype="cloth", defined="BLACK_ROBE", random_art_replace={chance=75, rarity=250, level_range={40, 50}}, autoreq=true}, + {type="armor", subtype="cloth", defined="BLACK_ROBE", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=20, nb=1, {defined="JEWELER_TOME"} }, resolvers.drops{chance=100, nb=1, {defined="ORB_UNDEATH"} }, diff --git a/game/modules/tome/data/zones/rak-shor-pride/objects.lua b/game/modules/tome/data/zones/rak-shor-pride/objects.lua index cc9153fd36..c8bcaaefa0 100644 --- a/game/modules/tome/data/zones/rak-shor-pride/objects.lua +++ b/game/modules/tome/data/zones/rak-shor-pride/objects.lua @@ -19,21 +19,3 @@ load("/data/general/objects/objects-far-east.lua") load("/data/general/objects/lore/sunwall.lua") - -local Stats = require"engine.interface.ActorStats" - -newEntity{ base = "BASE_CLOTH_ARMOR", - define_as = "BLACK_ROBE", rarity=false, - name = "Black Robe", unique=true, - unided_name = "black robe", color=colors.DARK_GREY, - desc = [[A silk robe, darker than the darkest night sky, it radiates power.]], - cost = 500, - wielder = { - inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 }, - see_invisible = 10, - blind_immune = 1, - combat_spellpower = 10, - combat_dam = 10, - combat_def = 6, - }, -} diff --git a/game/modules/tome/data/zones/reknor/npcs.lua b/game/modules/tome/data/zones/reknor/npcs.lua index cdcab34dd6..4989c8e7ec 100644 --- a/game/modules/tome/data/zones/reknor/npcs.lua +++ b/game/modules/tome/data/zones/reknor/npcs.lua @@ -167,7 +167,7 @@ newEntity{ define_as = "LITHFENGEL", -- Lord of Ash; backup guardian body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, resolvers.equip{ - {type="weapon", subtype="waraxe", defined="MALEDICTION", random_art_replace={chance=75, rarity=200, level_range={35, 45}}, autoreq=true}, + {type="weapon", subtype="waraxe", defined="MALEDICTION", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=4, {ego_chance=100} }, resolvers.drops{chance=100, nb=1, {defined="ATHAME_WEST"} }, diff --git a/game/modules/tome/data/zones/reknor/objects.lua b/game/modules/tome/data/zones/reknor/objects.lua index 6ced2f0277..df77035cab 100644 --- a/game/modules/tome/data/zones/reknor/objects.lua +++ b/game/modules/tome/data/zones/reknor/objects.lua @@ -28,27 +28,6 @@ newEntity{ base = "BASE_SCROLL", define_as = "NOTE_FROM_LAST_HOPE", end} } -newEntity{ base = "BASE_WARAXE", - define_as = "MALEDICTION", rarity=false, - unided_name = "pestilent waraxe", - name = "Malediction", unique=true, - desc = [[The land withers and crumbles wherever this cursed axe rests.]], - require = { stat = { str=55 }, }, - cost = 375, - combat = { - dam = 55, - apr = 15, - physcrit = 10, - dammod = {str=1}, - damrange = 1.2, - }, - wielder = { - life_regen = -0.3, - inc_damage = { [DamageType.BLIGHT] = 20 }, - melee_project={[DamageType.BLIGHT] = 20}, - }, -} - newEntity{ base = "BASE_GEM", define_as = "RESONATING_DIAMOND_WEST", name = "Resonating Diamond", color=colors.VIOLET, quest=true, unique="Resonating Diamond West", identified=true, no_unique_lore=true, diff --git a/game/modules/tome/data/zones/ruins-kor-pul/npcs.lua b/game/modules/tome/data/zones/ruins-kor-pul/npcs.lua index 6b7a905760..2165dcdb80 100644 --- a/game/modules/tome/data/zones/ruins-kor-pul/npcs.lua +++ b/game/modules/tome/data/zones/ruins-kor-pul/npcs.lua @@ -48,7 +48,7 @@ newEntity{ define_as = "SHADE", move_others=true, body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, - equipment = resolvers.equip{ {type="weapon", subtype="staff", defined="STAFF_KOR", random_art_replace={chance=75, rarity=150, level_range={1, 10}}, autoreq=true}, {type="armor", subtype="light", autoreq=true}, }, + equipment = resolvers.equip{ {type="weapon", subtype="staff", defined="STAFF_KOR", random_art_replace={chance=75}, autoreq=true}, {type="armor", subtype="light", autoreq=true}, }, drops = resolvers.drops{chance=100, nb=3, {ego_chance=100} }, resolvers.talents{ @@ -98,7 +98,7 @@ newEntity{ define_as = "KOR_FURY", resolvers.equip{ {type="weapon", subtype="staff", ego_chance=100, autoreq=true}, {type="armor", subtype="light", autoreq=true}, - {type="jewelry", subtype="amulet", defined="VOX", random_art_replace={chance=75, rarity=220, level_range={40, 50}}, autoreq=true}, + {type="jewelry", subtype="amulet", defined="VOX", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=3, {ego_chance=100} }, diff --git a/game/modules/tome/data/zones/ruins-kor-pul/objects.lua b/game/modules/tome/data/zones/ruins-kor-pul/objects.lua index 011289877f..4e7b8c6c64 100644 --- a/game/modules/tome/data/zones/ruins-kor-pul/objects.lua +++ b/game/modules/tome/data/zones/ruins-kor-pul/objects.lua @@ -18,47 +18,3 @@ -- darkgod@te4.org load("/data/general/objects/objects.lua") - --- Artifact, droped (and used!) by the Shade -newEntity{ base = "BASE_STAFF", - define_as = "STAFF_KOR", rarity=false, - name = "Kor's Fall", unique=true, - desc = [[Made from the bones of of many creatures this staff glows with power. You can feel its evilness as you touch it.]], - require = { stat = { mag=25 }, }, - cost = 5, - combat = { - dam = 10, - apr = 0, - physcrit = 1.5, - dammod = {mag=1.1}, - }, - wielder = { - see_invisible = 2, - combat_spellpower = 7, - combat_spellcrit = 8, - inc_damage={ - [DamageType.FIRE] = 4, - [DamageType.COLD] = 4, - [DamageType.ACID] = 4, - [DamageType.LIGHTNING] = 4, - [DamageType.BLIGHT] = 4, - }, - }, -} - -newEntity{ base = "BASE_AMULET", - define_as = "VOX", rarity=false, - name = "Vox", unique=true, - unided_name = "ringing amulet", color=colors.BLUE, - desc = [[No force can hope to silence the wearer of this amulet.]], - cost = 3000, - wielder = { - see_invisible = 20, - silence_immune = 0.8, - combat_spellpower = 9, - combat_spellcrit = 4, - mana = 50, - vim = 50, - }, - -} diff --git a/game/modules/tome/data/zones/telmur/npcs.lua b/game/modules/tome/data/zones/telmur/npcs.lua index 24a2bff5e5..8795b21df9 100644 --- a/game/modules/tome/data/zones/telmur/npcs.lua +++ b/game/modules/tome/data/zones/telmur/npcs.lua @@ -58,7 +58,7 @@ newEntity{ define_as = "SHADE_OF_TELOS", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, }, resolvers.equip{ - {type="weapon", subtype="staff", defined="TELOS_TOP_HALF", random_art_replace={chance=75, rarity=190, level_range={40, 50}}, autoreq=true}, + {type="weapon", subtype="staff", defined="TELOS_TOP_HALF", random_art_replace={chance=75}, autoreq=true}, {type="weapon", subtype="staff", defined="TELOS_BOTTOM_HALF", autoreq=true}, }, resolvers.drops{chance=100, nb=2, {type="wand"} }, diff --git a/game/modules/tome/data/zones/telmur/objects.lua b/game/modules/tome/data/zones/telmur/objects.lua index b6812b426d..cd94e44171 100644 --- a/game/modules/tome/data/zones/telmur/objects.lua +++ b/game/modules/tome/data/zones/telmur/objects.lua @@ -21,29 +21,6 @@ load("/data/general/objects/objects.lua") local Stats = require "engine.interface.ActorStats" -newEntity{ base = "BASE_STAFF", - define_as = "TELOS_TOP_HALF", rarity=false, - slot_forbid = false, - twohanded = false, - name = "Telos's Staff (Top Half)", unique=true, - desc = [[The top part of Telos's broken staff.]], - require = { stat = { mag=35 }, }, - encumberance = 2.5, - cost = 500, - combat = { - dam = 35, - apr = 0, - physcrit = 1.5, - dammod = {mag=1.0}, - }, - wielder = { - combat_spellpower = 25, - combat_spellcrit = 5, - combat_mentalresist = 8, - inc_stats = { [Stats.STAT_WIL] = 5, }, - }, -} - newEntity{ base = "BASE_STAFF", slot = "OFFHAND", slot_forbid = false, twohanded = false, add_name=false, diff --git a/game/modules/tome/data/zones/tol-falas/npcs.lua b/game/modules/tome/data/zones/tol-falas/npcs.lua index 52d8cd8e5a..e5d7c5dee7 100644 --- a/game/modules/tome/data/zones/tol-falas/npcs.lua +++ b/game/modules/tome/data/zones/tol-falas/npcs.lua @@ -51,7 +51,7 @@ newEntity{ define_as = "THE_MASTER", equipment = resolvers.equip{ {type="weapon", subtype="greatsword", ego_chance=100, autoreq=true}, {type="armor", subtype="heavy", ego_chance=50, autoreq=true}, - {type="jewelry", subtype="amulet", defined="AMULET_DREAD", random_art_replace={chance=75, rarity=210, level_range={25, 35}}, autoreq=true}, + {type="jewelry", subtype="amulet", defined="AMULET_DREAD", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, resolvers.drops{chance=100, nb=1, {type="weapon", subtype="staff", defined="STAFF_ABSORPTION"} }, @@ -127,7 +127,7 @@ newEntity{ define_as = "PALE_DRAKE", {type="armor", subtype="cloth", ego_chance=50, autoreq=true}, }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, - resolvers.drops{chance=100, nb=1, {defined="RUNED_SKULL", random_art_replace={chance=75, rarity=250, level_range={40, 50}}} }, + resolvers.drops{chance=100, nb=1, {defined="RUNED_SKULL", random_art_replace={chance=75}} }, summon = { {type="undead", subtype="bone giant", special_rarity="bonegiant_rarity", number=2, hasxp=true}, diff --git a/game/modules/tome/data/zones/tol-falas/objects.lua b/game/modules/tome/data/zones/tol-falas/objects.lua index 69a55fc753..4e7b8c6c64 100644 --- a/game/modules/tome/data/zones/tol-falas/objects.lua +++ b/game/modules/tome/data/zones/tol-falas/objects.lua @@ -18,90 +18,3 @@ -- darkgod@te4.org load("/data/general/objects/objects.lua") - -newEntity{ base = "BASE_AMULET", - define_as = "AMULET_DREAD", rarity=false, - name = "Choker of Dread", unique=true, - unided_name = "dark amulet", color=colors.LIGHT_DARK, - desc = [[The evilness of undeath radiates from this amulet.]], - cost = 5000, - wielder = { - see_invisible = 10, - blind_immune = 1, - combat_spellpower = 5, - combat_dam = 5, - }, - max_power = 60, power_regen = 1, - use_power = { name = "summon an elder vampire to your side", power = 60, use = function(self, who) - if not who:canBe("summon") then game.logPlayer(who, "You can not summon, you are suppressed!") return end - - -- Find space - local x, y = util.findFreeGrid(who.x, who.y, 5, true, {[engine.Map.ACTOR]=true}) - if not x then - game.logPlayer(who, "Not enough space to invoke the vampire!") - return - end - print("Invoking guardian on", x, y) - - local NPC = require "mod.class.NPC" - local vampire = NPC.new{ - type = "undead", subtype = "vampire", - display = "V", - name = "elder vampire", color=colors.RED, - desc=[[A terrible robed undead figure, this creature has existed in its unlife for many centuries by stealing the life of others. It can - summon the very shades of its victims from beyond the grave to come enslaved to its aid.]], - - combat = { dam=resolvers.rngavg(9,13), atk=10, apr=9, damtype=engine.DamageType.DRAINLIFE, dammod={str=1.9} }, - - body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, - - autolevel = "warriormage", - ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=3, }, - energy = { mod=1 }, - stats = { str=12, dex=12, mag=12, con=12 }, - life_regen = 3, - size_category = 3, - rank = 3, - infravision = 20, - - inc_damage = table.clone(who.inc_damage, true), - - resolvers.tmasteries{ ["technique/other"]=0.5, ["spell/phantasm"]=0.8, }, - - resists = { [engine.DamageType.COLD] = 80, [engine.DamageType.NATURE] = 80, [engine.DamageType.LIGHT] = -50, }, - blind_immune = 1, - confusion_immune = 1, - see_invisible = 5, - undead = 1, - - level_range = {who.level, who.level}, exp_worth = 0, - max_life = resolvers.rngavg(90,100), - combat_armor = 12, combat_def = 10, - resolvers.talents{ [who.T_STUN]=2, [who.T_BLUR_SIGHT]=3, [who.T_PHANTASMAL_SHIELD]=2, [who.T_ROTTING_DISEASE]=3, }, - - faction = who.faction, - summoner = who, - summon_time = 10, - } - - vampire:resolve() - game.zone:addEntity(game.level, vampire, "actor", x, y) - - game:playSoundNear(who, "talents/spell_generic") - end }, -} - -newEntity{ define_as = "RUNED_SKULL", - unique = true, - type = "gem", subtype="red", - unided_name = "human skull", - name = "Runed Skull", - display = "*", color=colors.RED, - encumber = 3, - desc = [[Dull red runes are etched all over this blackened skull.]], - - carrier = { - combat_spellpower = 7, - on_melee_hit = {[DamageType.FIREKNOCKBACK]=25}, - }, -} diff --git a/game/modules/tome/data/zones/town-sunwall-outpost/objects.lua b/game/modules/tome/data/zones/town-sunwall-outpost/objects.lua index cdffd619b5..65f98bf33c 100644 --- a/game/modules/tome/data/zones/town-sunwall-outpost/objects.lua +++ b/game/modules/tome/data/zones/town-sunwall-outpost/objects.lua @@ -18,70 +18,3 @@ -- darkgod@te4.org load("/data/general/objects/objects-far-east.lua") - -newEntity{ base = "BASE_RING", - define_as = "RING_LOST_LOVE", rarity=false, - name = "Ring of Lost Love", unique=true, - unided_name = "wedding ring", color=colors.LIGHT_BLUE, - desc = [[Letters are engraved in it: "Crichton my love".]], - cost = 500, - wielder = { - see_invisible = 10, - blind_immune = 1, - combat_spellpower = 5, - combat_dam = 5, - }, - max_power = 60, power_regen = 1, - use_power = { name = "summon an elder vampire to your side", power = 60, use = function(self, who) - -- Find space - local x, y = util.findFreeGrid(who.x, who.y, 5, true, {[engine.Map.ACTOR]=true}) - if not x then - game.logPlayer(who, "Not enough space to invoke the vampire!") - return - end - print("Invoking guardian on", x, y) - - local NPC = require "mod.class.NPC" - local vampire = NPC.new{ - type = "undead", subtype = "vampires", - display = "V", - name = "elder vampire", color=colors.RED, - desc=[[A terrible robed undead figure, this creature has existed in its unlife for many centuries by stealing the life of others. It can - summon the very shades of its victims from beyond the grave to come enslaved to its aid.]], - - combat = { dam=resolvers.rngavg(9,13), atk=10, apr=9, damtype=DamageType.DRAINLIFE, dammod={str=1.9} }, - - body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, - - autolevel = "warriormage", - ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=3, }, - energy = { mod=1 }, - stats = { str=12, dex=12, mag=12, con=12 }, - life_regen = 3, - size_category = 3, - rank = 3, - - resolvers.tmasteries{ ["technique/other"]=0.5, ["spell/phantasm"]=0.8, }, - - resists = { [DamageType.COLD] = 80, [DamageType.NATURE] = 80, [DamageType.LIGHT] = -50, }, - blind_immune = 1, - confusion_immune = 1, - see_invisible = 5, - undead = 1, - - level_range = {who.level, who.level}, exp_worth = 0, - max_life = resolvers.rngavg(90,100), - combat_armor = 12, combat_def = 10, - resolvers.talents{ [who.T_STUN]=2, [who.T_BLUR_SIGHT]=3, [who.T_PHANTASMAL_SHIELD]=2, [who.T_ROTTING_DISEASE]=3, }, - - faction = who.faction, - summoner = who, - summon_time = 10, - } - - vampire:resolve() - game.zone:addEntity(game.level, vampire, "actor", x, y) - - game:playSoundNear(who, "talents/spell_generic") - end }, -} diff --git a/game/modules/tome/data/zones/trollshaws/npcs.lua b/game/modules/tome/data/zones/trollshaws/npcs.lua index 4bcb402075..4ce132ea5c 100644 --- a/game/modules/tome/data/zones/trollshaws/npcs.lua +++ b/game/modules/tome/data/zones/trollshaws/npcs.lua @@ -49,7 +49,7 @@ newEntity{ define_as = "TROLL_BILL", move_others=true, body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, - resolvers.equip{ {type="weapon", subtype="greatmaul", defined="GREATMAUL_BILL_TRUNK", random_art_replace={chance=75, rarity=150, level_range={1, 10}}, autoreq=true}, }, + resolvers.equip{ {type="weapon", subtype="greatmaul", defined="GREATMAUL_BILL_TRUNK", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=3, {ego_chance=100} }, resolvers.talents{ @@ -87,7 +87,7 @@ newEntity{ define_as = "ALUIN", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, resolvers.equip{ {type="weapon", subtype="waraxe", ego_chance=100, autoreq=true}, - {type="armor", subtype="shield", defined="SANGUINE_SHIELD", random_art_replace={chance=65, rarity=220, level_range={35, 45}}, autoreq=true}, + {type="armor", subtype="shield", defined="SANGUINE_SHIELD", random_art_replace={chance=65}, autoreq=true}, {type="armor", subtype="massive", ego_chance=100, autoreq=true}, }, resolvers.drops{chance=100, nb=3, {ego_chance=100} }, diff --git a/game/modules/tome/data/zones/trollshaws/objects.lua b/game/modules/tome/data/zones/trollshaws/objects.lua index 8a7fd4922f..f3741edc09 100644 --- a/game/modules/tome/data/zones/trollshaws/objects.lua +++ b/game/modules/tome/data/zones/trollshaws/objects.lua @@ -19,30 +19,6 @@ load("/data/general/objects/objects.lua") -local Stats = require "engine.interface.ActorStats" - --- Artifact, droped (and used!) by Bill the Stone Troll - -newEntity{ base = "BASE_GREATMAUL", - define_as = "GREATMAUL_BILL_TRUNK", - name = "Bill's Tree Trunk", unique=true, - desc = [[This is a big nasty looking tree trunk that Bill was using as a weapon. It could still serve this purpose, should you be strong enough to wield it!]], - require = { stat = { str=25 }, }, - rarity = false, - metallic = false, - cost = 5, - combat = { - dam = 30, - apr = 7, - physcrit = 1.5, - dammod = {str=1.3}, - damrange = 1.7, - }, - - wielder = { - }, -} - for i = 1, 5 do newEntity{ base = "BASE_SCROLL", define_as = "NOTE"..i, @@ -53,27 +29,3 @@ newEntity{ base = "BASE_SCROLL", encumberance = 0, } end - -newEntity{ base = "BASE_SHIELD", - define_as = "SANGUINE_SHIELD", - unided_name = "bloody shield", - name = "Sanguine Shield", unique=true, - desc = [[Though tarnished and spattered with blood, the emblem of the sun still manages to shine through on this shield.]], - require = { stat = { str=39 }, }, - cost = 120, - - special_combat = { - dam = 40, - physcrit = 9, - dammod = {str=1.2}, - }, - wielder = { - combat_armor = 4, - combat_def = 14, - combat_def_ranged = 14, - inc_stats = { [Stats.STAT_CON] = 5, }, - fatigue = 19, - resists = { [DamageType.BLIGHT] = 25, }, - life_regen = 5, - }, -} diff --git a/game/modules/tome/data/zones/valley-moon/npcs.lua b/game/modules/tome/data/zones/valley-moon/npcs.lua index 853c5b4ef7..e7c19673bc 100644 --- a/game/modules/tome/data/zones/valley-moon/npcs.lua +++ b/game/modules/tome/data/zones/valley-moon/npcs.lua @@ -45,7 +45,7 @@ newEntity{ define_as = "CORRUPTED_BALROG", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, resolvers.equip{ - {type="weapon", subtype="whip", defined="WHIP_GOTHMOG", random_art_replace={chance=75, rarity=290, level_range={40, 50}}, autoreq=true}, + {type="weapon", subtype="whip", defined="WHIP_GOTHMOG", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=3, {ego_chance=100} }, diff --git a/game/modules/tome/data/zones/valley-moon/objects.lua b/game/modules/tome/data/zones/valley-moon/objects.lua index 930ed6fdc0..65f98bf33c 100644 --- a/game/modules/tome/data/zones/valley-moon/objects.lua +++ b/game/modules/tome/data/zones/valley-moon/objects.lua @@ -18,30 +18,3 @@ -- darkgod@te4.org load("/data/general/objects/objects-far-east.lua") - -newEntity{ base = "BASE_WHIP", - define_as = "WHIP_GOTHMOG", - unided_name = "fiery whip", - name = "Whip of Gothmog, High Captain of the Balrogs", color=colors.PURPLE, unique = true, - desc = [[With this unbearably bright whip of flame, the Balrog Gothmog has become known for never having lost in combat. -But nothing lasts forever and he was finally defeated by Echtelion in the First Age. His whip must have been taken by the other balrogs from his corpse.]], - require = { stat = { dex=48 }, }, - cost = 250, - material_level = 5, - combat = { - dam = resolvers.rngavg(40,45), - apr = 0, - physcrit = 9, - dammod = {dex=1}, - damtype = DamageType.FIREKNOCKBACK, - }, - wielder = { - esp = {["demon/minor"]=1, ["demon/major"]=1}, - see_invisible = 2, - }, - carrier = { - inc_damage={ - [DamageType.BLIGHT] = 8, - }, - }, -} diff --git a/game/modules/tome/data/zones/vor-armoury/npcs.lua b/game/modules/tome/data/zones/vor-armoury/npcs.lua index 808e49afc8..2c35f65289 100644 --- a/game/modules/tome/data/zones/vor-armoury/npcs.lua +++ b/game/modules/tome/data/zones/vor-armoury/npcs.lua @@ -52,7 +52,7 @@ newEntity{ base="BASE_NPC_ORC_GRUSHNAK", define_as = "GNARG", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1 }, resolvers.equip{ - {type="weapon", subtype="greatsword", defined="MURDERBLADE", random_art_replace={chance=75, rarity=250, level_range={35, 45}}, autoreq=true}, + {type="weapon", subtype="greatsword", defined="MURDERBLADE", random_art_replace={chance=75}, autoreq=true}, {type="armor", subtype="massive", ego_change=100, autoreq=true}, }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, diff --git a/game/modules/tome/data/zones/vor-armoury/objects.lua b/game/modules/tome/data/zones/vor-armoury/objects.lua index 8087b04f7c..82b327ef5b 100644 --- a/game/modules/tome/data/zones/vor-armoury/objects.lua +++ b/game/modules/tome/data/zones/vor-armoury/objects.lua @@ -19,33 +19,6 @@ load("/data/general/objects/objects-far-east.lua") -local Stats = require"engine.interface.ActorStats" - -newEntity{ base = "BASE_GREATSWORD", - define_as = "MURDERBLADE", rarity=false, - name = "Warmaster Gnarg's Murderblade", unique=true, - unided_name = "blood-etched greatsword", color=colors.CRIMSON, - desc = [[A blood etched greatsword, it has seen many foes. From the inside.]], - - require = { stat = { str=35 }, }, - cost = 300, - material_level = 5, - combat = { - dam = 54, - apr = 19, - physcrit = 4.5, - dammod = {str=1.2}, - }, - wielder = { - see_invisible = 25, - inc_stats = { [Stats.STAT_CON] = 5, [Stats.STAT_STR] = 5, [Stats.STAT_DEX] = 5, }, - talents_types_mastery = { - ["technique/2hweapon-cripple"] = 0.2, - ["technique/2hweapon-offense"] = 0.2, - }, - }, -} - newEntity{ define_as = "ATHAME", quest=true, unique=true, identified=true, no_unique_lore=true, type = "misc", subtype="misc", diff --git a/game/modules/tome/data/zones/vor-pride/npcs.lua b/game/modules/tome/data/zones/vor-pride/npcs.lua index b888b232ef..b415fab5b7 100644 --- a/game/modules/tome/data/zones/vor-pride/npcs.lua +++ b/game/modules/tome/data/zones/vor-pride/npcs.lua @@ -47,7 +47,7 @@ newEntity{ base="BASE_NPC_ORC_VOR", define_as = "VOR", resolvers.equip{ {type="weapon", subtype="staff", ego_change=100, autoreq=true}, {type="armor", subtype="cloth", ego_change=100, autoreq=true}, - {type="armor", subtype="head", defined="CROWN_ELEMENTS", random_art_replace={chance=75, rarity=250, level_range={40, 50}}, autoreq=true}, + {type="armor", subtype="head", defined="CROWN_ELEMENTS", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=1, {defined="ORB_ELEMENTS"} }, resolvers.drops{chance=20, nb=1, {defined="JEWELER_TOME"} }, diff --git a/game/modules/tome/data/zones/vor-pride/objects.lua b/game/modules/tome/data/zones/vor-pride/objects.lua index 827607db2b..2126bb620e 100644 --- a/game/modules/tome/data/zones/vor-pride/objects.lua +++ b/game/modules/tome/data/zones/vor-pride/objects.lua @@ -22,33 +22,6 @@ load("/data/general/objects/lore/sunwall.lua") local Stats = require"engine.interface.ActorStats" -newEntity{ base = "BASE_LEATHER_CAP", - define_as = "CROWN_ELEMENTS", rarity=false, - name = "Crown of the Elements", unique=true, - unided_name = "jeweled crown", color=colors.DARK_GREY, - desc = [[Jeweled crown]], - cost = 500, - material_level = 5, - wielder = { - inc_stats = { [Stats.STAT_CON] = 5, [Stats.STAT_WIL] = 3, }, - resists={ - [DamageType.FIRE] = 15, - [DamageType.COLD] = 15, - [DamageType.ACID] = 15, - [DamageType.LIGHTNING] = 15, - }, - melee_project={ - [DamageType.FIRE] = 10, - [DamageType.COLD] = 10, - [DamageType.ACID] = 10, - [DamageType.LIGHTNING] = 10, - }, - see_invisible = 15, - combat_armor = 5, - fatigue = 5, - }, -} - -- Artifact, randomly dropped in Vor Pride, and only there newEntity{ base = "BASE_SCROLL", subtype="tome", name = "Tome of Wildfire", unided_name = "burning book", unique=true, no_unique_lore=true, diff --git a/game/modules/tome/resolvers.lua b/game/modules/tome/resolvers.lua index 9e81fe55df..aa256ca788 100644 --- a/game/modules/tome/resolvers.lua +++ b/game/modules/tome/resolvers.lua @@ -26,12 +26,18 @@ function resolvers.calc.equip(t, e) print("Equipment resolver for", e.name) -- Iterate of object requests, try to create them and equip them for i, filter in ipairs(t[1]) do - print("Equipment resolver", e.name, filter.type, filter.subtype) + print("Equipment resolver", e.name, filter.type, filter.subtype, filter.defined) local o if not filter.defined then o = game.zone:makeEntity(game.level, "object", filter, nil, true) else - o = game.zone:makeEntityByName(game.level, "object", filter.defined) + local forced + o, forced = game.zone:makeEntityByName(game.level, "object", filter.defined, filter.random_art_replace and true or false) + -- If we forced the generation this means it was already found + if forced then + print("Serving unique "..o.name.." but forcing replacement drop") + filter.random_art_replace.chance = 100 + end end if o then print("Zone made us an equipment according to filter!", o:getName()) -- GitLab