diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 76d2d848b53d78e7fb73b5f98e6fe4c2609815bf..0c42e0fe3b9d89fdea5cb3ca95379ca1bf0fcd3f 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -681,7 +681,7 @@ function _M:setupCommands() --]] -- [[ for i = 1, 50 do - local a = self.zone:makeEntity(self.level, "object", {type="scroll", ego_chance=100, add_levels=50}, nil, true) + local a = self.zone:makeEntity(self.level, "object", {type="weapon", ego_chance=100, add_levels=50}, nil, true) if a then a:identify(true) self.zone:addEntity(self.level, a, "object", self.player.x, self.player.y) diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua index 36581e643a97d6134ea03fddc4b5520df5333749..e4b23824f6b16d94a803b1e17a56f0ffe39e5fa7 100644 --- a/game/modules/tome/class/Object.lua +++ b/game/modules/tome/class/Object.lua @@ -244,6 +244,14 @@ function _M:getTextualDesc() if combat.travel_speed then desc:add("Increase travel speed by "..combat.travel_speed.."%", true) end + + if combat.melee_project then + local rs = {} + for typ, dam in pairs(combat.melee_project) do + rs[#rs+1] = ("%d %s"):format(dam, DamageType.dam_def[typ].name) + end + desc:add(("Damage on strike(melee): %s."):format(table.concat(rs, ',')), true) + end end local desc_wielder = function(w) diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua index 9776fba3ffa8235446b93ace1dcc85dbbd9f2e42..31c2db38ce48f9cf747255384d5e520d76bb5810 100644 --- a/game/modules/tome/class/interface/Combat.lua +++ b/game/modules/tome/class/interface/Combat.lua @@ -239,6 +239,11 @@ function _M:attackTargetWith(target, weapon, damtype, mult) end -- Melee project + if hitted and not target.dead and weapon.melee_project then for typ, dam in pairs(weapon.melee_project) do + if dam > 0 then + DamageType:get(typ).projector(self, target.x, target.y, typ, dam) + end + end end if hitted and not target.dead then for typ, dam in pairs(self.melee_project) do if dam > 0 then DamageType:get(typ).projector(self, target.x, target.y, typ, dam) diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua index 9ccf07a67596a61901b82434bc98fbeaad9491e4..ace4ef9b835aad27eee605d51d33dbd7f57dc098 100644 --- a/game/modules/tome/data/general/objects/boss-artifacts.lua +++ b/game/modules/tome/data/general/objects/boss-artifacts.lua @@ -38,13 +38,13 @@ It is said the Conclave created this weapon for their warmaster during the dark physcrit = 10, dammod = {str=1}, damrange = 1.4, + melee_project={[DamageType.ICE] = 15}, }, 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, @@ -164,6 +164,10 @@ Tridents require the exotic weapons mastery talent to correctly use.]], physcrit = 15, dammod = {str=1.3}, damrange = 1.4, + melee_project={ + [DamageType.COLD] = 15, + [DamageType.NATURE] = 20, + }, }, wielder = { @@ -171,10 +175,6 @@ Tridents require the exotic weapons mastery talent to correctly use.]], 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, @@ -356,11 +356,11 @@ newEntity{ base = "BASE_WARAXE", physcrit = 10, dammod = {str=1}, damrange = 1.2, + melee_project={[DamageType.BLIGHT] = 20}, }, wielder = { life_regen = -0.3, inc_damage = { [DamageType.BLIGHT] = 20 }, - melee_project={[DamageType.BLIGHT] = 20}, }, } diff --git a/game/modules/tome/data/general/objects/egos/weapon.lua b/game/modules/tome/data/general/objects/egos/weapon.lua index 575d5ed6278ccdda2882e69429c95a37830059b9..4e9cb5344800312e279bd3db468914d32370c3c8 100644 --- a/game/modules/tome/data/general/objects/egos/weapon.lua +++ b/game/modules/tome/data/general/objects/egos/weapon.lua @@ -25,7 +25,7 @@ newEntity{ name = "flaming ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 5, - wielder = { + combat = { melee_project={[DamageType.FIRE] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.64 end)}, }, } @@ -33,7 +33,7 @@ newEntity{ name = "icy ", prefix=true, instant_resolve=true, level_range = {15, 50}, rarity = 5, - wielder = { + combat = { melee_project={[DamageType.ICE] = resolvers.mbonus_material(15, 4, function(e, v) return v * 0.7 end)}, }, } @@ -41,7 +41,7 @@ newEntity{ name = "acidic ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 5, - wielder = { + combat = { melee_project={[DamageType.ACID] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end)}, }, } @@ -49,7 +49,7 @@ newEntity{ name = "shocking ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 5, - wielder = { + combat = { melee_project={[DamageType.LIGHTNING] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end)}, }, } @@ -57,7 +57,7 @@ newEntity{ name = "poisonous ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 5, - wielder = { + combat = { melee_project={[DamageType.POISON] = resolvers.mbonus_material(45, 6, function(e, v) return v * 0.5 end)}, }, } @@ -66,7 +66,7 @@ newEntity{ name = "slime-covered ", prefix=true, instant_resolve=true, level_range = {10, 50}, rarity = 5, - wielder = { + combat = { melee_project={[DamageType.SLIME] = resolvers.mbonus_material(45, 6, function(e, v) return v * 0.9 end)}, }, } @@ -93,7 +93,7 @@ newEntity{ greater_ego = true, rarity = 25, cost = 35, - wielder = { + combat = { melee_project={ [DamageType.FIRE] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end), [DamageType.ICE] = resolvers.mbonus_material(15, 4, function(e, v) return v * 0.7 end), @@ -165,11 +165,13 @@ newEntity{ greater_ego = true, rarity = 20, cost = 35, - wielder = { + combat = { melee_project={ [DamageType.BLIGHT] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end), [DamageType.DARKNESS] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end), }, + }, + wielder = { see_invisible = resolvers.mbonus_material(20, 5, function(e, v) return v * 0.2 end), combat_physcrit = resolvers.mbonus_material(10, 4, function(e, v) return v * 0.4 end), }, diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua index 5bc1fb6311a3cbe85ddef43f72f50201eec6e612..5c27b4ad0cbac6ad9b361a20115a74b55bfc5ca8 100644 --- a/game/modules/tome/data/general/objects/world-artifacts.lua +++ b/game/modules/tome/data/general/objects/world-artifacts.lua @@ -588,8 +588,6 @@ newEntity{ base = "BASE_KNIFE", physcrit = 8, dammod = {dex=0.55,cun=0.35}, no_stealth_break = true, - }, - wielder = { melee_project={[DamageType.RANDOM_SILENCE] = 10}, }, } @@ -609,13 +607,13 @@ newEntity{ base = "BASE_KNIFE", apr = 15, physcrit = 5, dammod = {dex=0.45,str=0.45}, + melee_project={[DamageType.DARKNESS] = 20}, }, wielder = { lite = -1, inc_damage={ [DamageType.DARKNESS] = 5, }, - melee_project={[DamageType.DARKNESS] = 20}, }, } @@ -634,13 +632,13 @@ newEntity{ base = "BASE_KNIFE", apr = 7, physcrit = 13, dammod = {dex=0.45,str=0.45}, + melee_project={[DamageType.LIGHT] = 20}, }, wielder = { lite = 1, inc_damage={ [DamageType.LIGHT] = 5, }, - melee_project={[DamageType.LIGHT] = 20}, }, } @@ -692,12 +690,12 @@ newEntity{ base = "BASE_GREATMAUL", physcrit = 4, dammod = {str=1.2}, talent_on_hit = { [Talents.T_FLAMESHOCK] = {level=3, chance=10} }, + melee_project={[DamageType.FIRE] = 30}, }, wielder = { inc_damage={ [DamageType.PHYSICAL] = 15, }, - melee_project={[DamageType.FIRE] = 30}, }, } @@ -1005,10 +1003,10 @@ newEntity{ base = "BASE_WARAXE", apr = 4.5, physcrit = 7, dammod = {str=1}, + melee_project={[DamageType.COLD] = 25}, }, wielder = { combat_atk = 15, - melee_project={[DamageType.COLD] = 25}, }, } @@ -1025,10 +1023,10 @@ newEntity{ base = "BASE_WHIP", atk = 10, physcrit = 5, dammod = {dex=1}, + melee_project={[DamageType.POISON] = 22}, }, wielder = { see_invisible = 9, - melee_project={[DamageType.POISON] = 22}, }, } @@ -1296,8 +1294,6 @@ newEntity{ base = "BASE_GREATSWORD", elseif eff == "confusion" then target:setEffect(target.EFF_CONFUSED, 3, {power=75}) end end}, - }, - wielder = { melee_project={[DamageType.LIGHT] = 40, [DamageType.DARKNESS] = 40}, }, }