diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua index ea2a2f3390fefee04e5cf2d67353fc9f993b742b..3f25c9dd4412b7f4bb1e094a2b924dcc3ff79c08 100644 --- a/game/modules/tome/class/Object.lua +++ b/game/modules/tome/class/Object.lua @@ -81,6 +81,17 @@ function _M:getRequirementDesc(who) end end +local auto_moddable_tile_slots = { + MAINHAND = true, + OFFHAND = true, + BODY = true, + CLOAK = true, + HEAD = true, + HANDS = true, + FEET = true, + QUIVER = true, +} + function _M:init(t, no_default) t.encumber = t.encumber or 0 @@ -93,6 +104,61 @@ function _M:init(t, no_default) self.auto_image = nil self.image = "object/"..(self.unique and "artifact/" or "")..self.name:lower():gsub("[^a-z0-9]", "")..".png" end + if not self.auto_moddable_tile_check and self.unique and self.slot and auto_moddable_tile_slots[self.slot] and (not self.moddable_tile or type(self.moddable_tile) == "table" or (type(self.moddable_tile) == "string" and not self.moddable_tile:find("^special/"))) then + self.auto_moddable_tile_check = true + local file, filecheck = nil, nil + if self.type == "weapon" or self.subtype == "shield" then + file = "special/%s_"..self.name:lower():gsub("[^a-z0-9]", "_") + filecheck = file:format("left") + elseif self.subtype == "cloak" then + file = "special/"..self.name:lower():gsub("[^a-z0-9]", "_").."_%s" + filecheck = file:format("behind") + else + file = "special/"..self.name:lower():gsub("[^a-z0-9]", "_") + filecheck = file + end + if file and fs.exists("/data/gfx/shockbolt/player/human_female/"..filecheck..".png") then + self.moddable_tile = file + -- print("[UNIQUE MODDABLE] auto moddable set for ", self.name, file) + else + -- Try using the artifact image name + if type(self.image) == "string" and self.image:find("^object/artifact/") then + local base = self.image:gsub("object/artifact/", ""):gsub("%.png$", "") + if self.type == "weapon" or self.subtype == "shield" then + file = "special/%s_"..base + filecheck = file:format("left") + elseif self.subtype == "cloak" then + file = "special/"..base.."_%s" + filecheck = file:format("behind") + else + file = "special/"..base + filecheck = file + end + if file and fs.exists("/data/gfx/shockbolt/player/human_female/"..filecheck..".png") then + self.moddable_tile = file + -- print("[UNIQUE MODDABLE] auto moddable set for ", self.name, file) + else + print("[UNIQUE MODDABLE] auto moddable failed for ", self.name) + end + end + end + end + + -- if self.unique and self.slot and type(self.moddable_tile) == "string" then + -- local filecheck = nil, nil + -- if self.type == "weapon" or self.subtype == "shield" then + -- filecheck = self.moddable_tile:format("left") + -- elseif self.subtype == "cloak" then + -- filecheck = self.moddable_tile:format("behind") + -- else + -- filecheck = self.moddable_tile + -- end + -- if filecheck and fs.exists("/data/gfx/shockbolt/player/human_female/"..filecheck..".png") then + -- -- print("[UNIQUE MODDABLE] auto moddable set for ", self.name, file) + -- else + -- print("[UNIQUE MODDABLE] auto moddable failed for ", self.name, self.moddable_tile, filecheck) + -- end + -- end end function _M:altered(t) 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 c2e68f7429c1672721ff7bb23b2b825a0a349f75..5059856d9940c4a0bf699113ba8743168706c20b 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 @@ -194,6 +194,7 @@ newEntity{ base = "BASE_CLOTH_ARMOR", define_as = "BLACK_ROBE", name = "Black Robe", unique=true, unided_name = "black robe", color=colors.DARK_GREY, image = "object/artifact/robe_black_robe.png", + moddable_tile = "special/robe_black_robe", desc = [[A silk robe, darker than the darkest night sky, it radiates power.]], level_range = {40, 50}, rarity = 280, 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 a3a60bbff43d2edc680e8d76346fb8f6899bb596..d9dc19dddc4317ea78819a4fb7f496ad5fd2717f 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 @@ -1310,6 +1310,7 @@ newEntity{ base = "BASE_MASSIVE_ARMOR", desc = [[Inch-thick stralite plates lock together with voratun joints. The whole suit looks impenetrable, but has clearly been subjected to terrible treatment - great dents and misshaping warps, and caustic fissures bored across the surface. Though clearly a powerful piece, it must once have been much greater.]], color = colors.WHITE, image = "object/artifact/armor_plate_borfasts_cage.png", + moddable_tile = "special/armor_plate_borfasts_cage", level_range = {20, 28}, rarity = 200, require = { stat = { str=35 }, }, @@ -1340,6 +1341,7 @@ newEntity{ base = "BASE_LEATHER_CAP", -- No armor training requirement power_source = {psionic=true}, define_as = "ALETTA_DIADEM", name = "Aletta's Diadem", unique=true, unided_name="jeweled diadem", image = "object/artifact/diadem_alettas_diadem.png", + moddable_tile = "special/diadem_alettas_diadem", desc = [[A filigree of silver set with many small jewels, this diadem seems radiant - ethereal almost. But its touch seems to freeze your skin and brings wild thoughts to your mind. You want to drop it, throw it away, and yet you cannot resist thinking of what powers it might bring you. Is this temptation a weak will on your part, or some domination from the artifact itself...?]], require = { stat = { wil=24 }, }, @@ -1363,6 +1365,7 @@ newEntity{ base = "BASE_SLING", power_source = {nature=true}, define_as = "HARESKIN_SLING", name = "Hare-Skin Sling", unique=true, unided_name = "hare-skin sling", image = "object/artifact/sling_hareskin_sling.png", + moddable_tile = "special/%s_hareskin_sling", desc = [[This well-tended sling is made from the leather and sinews of a large hare. It feels smooth to the touch, yet very durable. Some say that the skin of a hare brings luck and fortune. Hard to tell if that really helped its former owner, but it's clear that the skin is at least also strong and reliable.]], level_range = {20, 28}, diff --git a/game/modules/tome/data/general/objects/quest-artifacts.lua b/game/modules/tome/data/general/objects/quest-artifacts.lua index e6f7ccd729f745800be15094fb7633f8047ffa21..2a1bc407eef91051c9d9ff89d0fffa06e4136c55 100644 --- a/game/modules/tome/data/general/objects/quest-artifacts.lua +++ b/game/modules/tome/data/general/objects/quest-artifacts.lua @@ -31,9 +31,9 @@ newEntity{ define_as = "STAFF_ABSORPTION", flavor_name = "magestaff", level_range = {30, 30}, display = "\\", color=colors.VIOLET, image = "object/artifact/staff_absorption.png", + moddable_tile = "special/%s_staff_of_absorbtion", encumber = 7, auto_pickup = 1, - moddable_tile = resolvers.moddable_tile("staff"), plot = true, quest = true, desc = [[Carved with runes of power, this staff seems to have been made long ago, yet it bears no signs of tarnish. Light around it seems to dim and you can feel its tremendous power simply by touching it.]], 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 c5b229b4043e5136362f2e4fd7f5f690d8de85b1..8565d17123663d25caeb08195c6d77aeeec1c711 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 @@ -375,6 +375,7 @@ newEntity{ base = "BASE_STAFF", power_source = {arcane=true}, unique = true, name = "Bolbum's Big Knocker", image = "object/artifact/staff_bolbums_big_knocker.png", + moddable_tile = "special/%s_staff_bolbums_big_knocker", unided_name = "thick staff", level_range = {20, 35}, color=colors.UMBER, diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua index 0515ba46be4e020e8428d83ba9ed6e541c65e91c..93f7fafe22c44b798fe22d77533e29928796f805 100644 --- a/game/modules/tome/data/general/objects/world-artifacts.lua +++ b/game/modules/tome/data/general/objects/world-artifacts.lua @@ -401,6 +401,7 @@ newEntity{ base = "BASE_LEATHER_BOOT", power_source = {technique=true}, unique = true, name = "Eden's Guile", image = "object/artifact/boots_edens_guile.png", + moddable_tile = "special/boots_edens_guile", unided_name = "pair of yellow boots", desc = [[The boots of a Rogue outcast, who knew that the best way to deal with a problem was to run from it.]], on_id_lore = "eden-guile", @@ -1369,7 +1370,7 @@ newEntity{ base = "BASE_BATTLEAXE", unique = true, unided_name = "crude iron battle axe", name = "Crude Iron Battle Axe of Kroll", color = colors.GREY, image = "object/artifact/crude_iron_battleaxe_of_kroll.png", - moddable = "special/crude_iron_battleaxe_of_kroll", + moddable_tile = "special/crude_iron_battleaxe_of_kroll", moddable_tile_big = true, desc = [[Made in times before the Dwarves learned beautiful craftsmanship, the rough appearance of this axe belies its great power. Only Dwarves may harness its true strength, however.]], require = { stat = { str=50 }, }, @@ -1485,6 +1486,7 @@ newEntity{ base = "BASE_LIGHT_ARMOR", power_source = {technique=true}, unique = true, name = "Behemoth Hide", image = "object/artifact/behemoth_skin.png", + moddable_tile = "special/behemoth_skin", unided_name = "tough weathered hide", desc = [[A rough hide made from a massive beast. Seeing as it's so weathered but still usable, maybe it's a bit special...]], color = colors.BROWN, @@ -3967,6 +3969,7 @@ newEntity{ base = "BASE_LEATHER_BOOT", --Thanks Grayswandir! power_source = {arcane=true}, unique = true, name = "Aetherwalk", image = "object/artifact/aether_walk.png", + moddable_tile = "special/aether_walk", unided_name = "ethereal boots", desc = [[A wispy purple aura surrounds these translucent black boots.]], color = colors.PURPLE, @@ -6016,6 +6019,7 @@ newEntity{ base = "BASE_GREATSWORD", power_source = {technique=true}, define_as = "DOUBLESWORD", name = "Borosk's Hate", unique=true, image="object/artifact/borosks_hate.png", + moddable_tile = "special/%s_borosks_hate", unided_name = "double-bladed sword", color=colors.GREY, desc = [[This impressive looking sword features two massive blades aligned in parallel. They seem weighted remarkably well.]], require = { stat = { str=35 }, }, @@ -6451,6 +6455,7 @@ newEntity{ base = "BASE_ARROW", power_source = {technique=true}, unique = true, name = "Arkul's Siege Arrows", image = "object/artifact/arkuls_seige_arrows.png", + moddable_tile = "special/arkuls_seige_arrows", proj_image = "object/artifact/arrow_s_arkuls_seige_arrows.png", unided_name = "gigantic spiral arrows", desc = [[These titanic double-helical arrows seem to have been designed more for knocking down towers than for use in regular combat. They'll no doubt make short work of most foes.]], @@ -7096,6 +7101,7 @@ newEntity{ base = "BASE_HELM", newEntity{ base = "BASE_GREATSWORD", power_source = {technique=true, arcane=true}, name = "Champion's Will", unique=true, image = "object/artifact/champions_will.png", + moddable_tile = "special/%s_champions_will", unided_name = "blindingly bright sword", color=colors.YELLOW, desc = [[This impressive looking sword features a golden engraving of a sun in its hilt. Etched into its blade are a series of runes claiming that only one who has mastered both their body and mind may wield this sword effectively.]], require = { stat = { str=35 }, }, diff --git a/game/modules/tome/data/zones/high-peak/objects.lua b/game/modules/tome/data/zones/high-peak/objects.lua index 0360b3c58dbe5a09ae97f2cb4e16e5e07081e76e..b6990d771e451e9c83b8be37248b67c0b0e2ad39 100644 --- a/game/modules/tome/data/zones/high-peak/objects.lua +++ b/game/modules/tome/data/zones/high-peak/objects.lua @@ -33,6 +33,7 @@ newEntity{ define_as = "STAFF_ABSORPTION_AWAKENED", base="BASE_STAFF", unided_name = "ominous, dark runed staff", force_lore_artifact=true, display = "\\", color=colors.VIOLET, image = "object/artifact/staff_absorption.png", + moddable_tile = "special/%s_awaken_staff_of_absorbtion", encumber = 7, plot=true, desc = [[Carved with runes of power, this staff seems to have been made long ago, yet it bears no signs of tarnish.