From 62b8dc37e2e25f519b55ba108cbc73aad0fb8d6b Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Thu, 18 Nov 2010 23:30:17 +0000 Subject: [PATCH] Weapon brands now affect only the weapon carrying it. Other equipment granting brands work for all weapons. git-svn-id: http://svn.net-core.org/repos/t-engine4@1934 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/modules/tome/class/Game.lua | 2 +- game/modules/tome/class/Object.lua | 8 ++++++++ game/modules/tome/class/interface/Combat.lua | 5 +++++ .../data/general/objects/boss-artifacts.lua | 12 ++++++------ .../tome/data/general/objects/egos/weapon.lua | 18 ++++++++++-------- .../data/general/objects/world-artifacts.lua | 14 +++++--------- 6 files changed, 35 insertions(+), 24 deletions(-) diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 76d2d848b5..0c42e0fe3b 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 36581e643a..e4b23824f6 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 9776fba3ff..31c2db38ce 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 9ccf07a675..ace4ef9b83 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 575d5ed627..4e9cb53448 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 5bc1fb6311..5c27b4ad0c 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}, }, } -- GitLab