Skip to content
Snippets Groups Projects
Commit 10c1836c authored by dg's avatar dg
Browse files

Arcane Blades start with Aegis, Conveyance and Dirty Fighting unlocked

Arcane Blades now use Cunning instead of Dexterity
Arcane Blades now can unlock Battle Tactics and Superiority
Arcane Blades, Arcane Combat now triggers less when dual wielding
Arcane Blades Frost Hands changed to Shock Hands
Arcane Blades Fire Hands now also regens stamina on hit
Arcane Blades Shock Hands now also regens mana on hit
Arcane Blades Arcane Destruction buffer, also upon a melee crit a random radius 2 ball will trigger


git-svn-id: http://svn.net-core.org/repos/t-engine4@5265 51575b47-30f0-44d4-a5cc-537603b46e54
parent a2e60593
No related branches found
No related tags found
No related merge requests found
......@@ -537,6 +537,12 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
end
end
-- Critical Burst (generally more damage then burst on hit and larger radius)
if hitted and crit and weapon and self:knowTalent(self.T_ARCANE_DESTRUCTION) then
local typ = rng.table{DamageType.FIRE, DamageType.LIGHTNING, DamageType.ARCANE}
self:project({type="ball", radius=2, friendlyfire=false}, target.x, target.y, typ, self:combatSpellpower() * 2)
end
-- Onslaught
if hitted and self:attr("onslaught") then
local dir = util.getDir(target.x, target.y, self.x, self.y) or 6
......@@ -977,7 +983,7 @@ function _M:combatPhysicalpower(mod, weapon)
mod = mod or 1
local add = 0
if self:knowTalent(Talents.T_ARCANE_DESTRUCTION) then
add = add + self:combatSpellpower() * self:getTalentLevel(Talents.T_ARCANE_DESTRUCTION) / 9
add = add + self:combatSpellpower() * self:getTalentLevel(Talents.T_ARCANE_DESTRUCTION) / 7
end
if self:isTalentActive(Talents.T_BLOOD_FRENZY) then
add = add + self.blood_frenzy
......@@ -1009,8 +1015,8 @@ end
function _M:combatSpellpower(mod)
mod = mod or 1
local add = 0
if self:knowTalent(self.T_ARCANE_DEXTERITY) then
add = add + (15 + self:getTalentLevel(self.T_ARCANE_DEXTERITY) * 5) * self:getDex() / 100
if self:knowTalent(self.T_ARCANE_CUNNING) then
add = add + (15 + self:getTalentLevel(self.T_ARCANE_CUNNING) * 5) * self:getCun() / 100
end
if self:knowTalent(self.T_SHADOW_CUNNING) then
add = add + (15 + self:getTalentLevel(self.T_SHADOW_CUNNING) * 5) * self:getCun() / 100
......
......@@ -196,27 +196,29 @@ newBirthDescriptor{
"Their use of magic is innate and not really studied; as such they do not naturally regenerate mana and must use external means of recharging.",
"They can cast spells from a limited selection but have the unique capacity to 'channel' their attack spells through their melee attacks.",
"They are adept with two-handed weapons, for the sheer destruction they can bring.",
"Their most important stats are: Strength, Dexterity and Magic",
"Their most important stats are: Strength, Cunning and Magic",
"#GOLD#Stat modifiers:",
"#LIGHT_BLUE# * +3 Strength, +3 Dexterity, +0 Constitution",
"#LIGHT_BLUE# * +3 Magic, +0 Willpower, +0 Cunning",
"#LIGHT_BLUE# * +3 Strength, +0 Dexterity, +0 Constitution",
"#LIGHT_BLUE# * +3 Magic, +0 Willpower, +3 Cunning",
"#GOLD#Life per level:#LIGHT_BLUE# +2",
},
power_source = {technique=true, arcane=true},
stats = { mag=3, str=3, dex=3},
stats = { mag=3, str=3, cun=3},
talents_types = {
["spell/fire"]={true, 0.2},
["spell/air"]={true, 0.2},
["spell/conveyance"]={false, 0.2},
["spell/aegis"]={false, 0.1},
["spell/earth"]={true, 0.2},
["spell/conveyance"]={true, 0.2},
["spell/aegis"]={true, 0.1},
["spell/enhancement"]={true, 0.2},
["technique/2hweapon-cripple"]={true, 0.1},
["technique/battle-tactics"]={false, 0.2},
["technique/superiority"]={false, 0.2},
["technique/combat-techniques-active"]={true, 0.1},
["technique/combat-techniques-passive"]={false, 0.1},
["technique/combat-training"]={true, 0.1},
["technique/magical-combat"]={true, 0.3},
["cunning/survival"]={true, -0.1},
["cunning/dirty"]={false, -0.1},
["cunning/survival"]={true, 0.1},
["cunning/dirty"]={true, 0.2},
},
unlockable_talents_types = {
["spell/stone"]={false, 0.1, "mage_geomancer"},
......@@ -224,7 +226,7 @@ newBirthDescriptor{
talents = {
[ActorTalents.T_FLAME] = 1,
[ActorTalents.T_ARCANE_COMBAT] = 1,
[ActorTalents.T_STUNNING_BLOW] = 1,
[ActorTalents.T_DIRTY_FIGHTING] = 1,
[ActorTalents.T_WEAPON_COMBAT] = 1,
},
copy = {
......
......@@ -1660,10 +1660,6 @@ newTalent{
format(restoration)
end,
}
------------------------------
--General of Urh'Rok Talents--
------------------------------
newTalent{
name = "Infernal Breath", image = "talents/flame_of_urh_rok.png",
type = {"spell/other",1},
......@@ -1705,3 +1701,33 @@ newTalent{
}
newTalent{
name = "Frost Hands", image = "talents/shock_hands.png",
type = {"spell/other", 3},
points = 5,
mode = "sustained",
cooldown = 10,
sustain_mana = 40,
tactical = { BUFF = 2 },
getIceDamage = function(self, t) return self:combatTalentSpellDamage(t, 3, 20) end,
getIceDamageIncrease = function(self, t) return self:combatTalentSpellDamage(t, 5, 14) end,
activate = function(self, t)
game:playSoundNear(self, "talents/ice")
return {
dam = self:addTemporaryValue("melee_project", {[DamageType.ICE] = t.getIceDamage(self, t)}),
per = self:addTemporaryValue("inc_damage", {[DamageType.COLD] = t.getIceDamageIncrease(self, t)}),
}
end,
deactivate = function(self, t, p)
self:removeTemporaryValue("melee_project", p.dam)
self:removeTemporaryValue("inc_damage", p.per)
return true
end,
info = function(self, t)
local icedamage = t.getIceDamage(self, t)
local icedamageinc = t.getIceDamageIncrease(self, t)
return ([[Engulfs your hands (and weapons) in a sheath of frost, dealing %d cold damage per melee attack and increasing all cold damage by %d%%.
The effects will increase with your Spellpower.]]):
format(damDesc(self, DamageType.COLD, icedamage), icedamageinc, self:getTalentLevel(t) / 3)
end,
}
......@@ -33,19 +33,22 @@ newTalent{
return {
dam = self:addTemporaryValue("melee_project", {[DamageType.FIRE] = t.getFireDamage(self, t)}),
per = self:addTemporaryValue("inc_damage", {[DamageType.FIRE] = t.getFireDamageIncrease(self, t)}),
sta = self:addTemporaryValue("stamina_regen_on_hit", self:getTalentLevel(t) / 3),
}
end,
deactivate = function(self, t, p)
self:removeTemporaryValue("melee_project", p.dam)
self:removeTemporaryValue("inc_damage", p.per)
self:removeTemporaryValue("stamina_regen_on_hit", p.sta)
return true
end,
info = function(self, t)
local firedamage = t.getFireDamage(self, t)
local firedamageinc = t.getFireDamageIncrease(self, t)
return ([[Engulfs your hands (and weapons) in a sheath of fire, dealing %0.2f fire damage per melee attack and increasing all fire damage by %d%%.
Each hit will also regenerate %0.2f stamina.
The effects will increase with your Spellpower.]]):
format(damDesc(self, DamageType.FIRE, firedamage), firedamageinc)
format(damDesc(self, DamageType.FIRE, firedamage), firedamageinc, self:getTalentLevel(t) / 3)
end,
}
......@@ -74,7 +77,7 @@ newTalent{
}
newTalent{
name = "Frost Hands",
name = "Shock Hands",
type = {"spell/enhancement", 3},
require = spells_req3,
points = 5,
......@@ -85,23 +88,26 @@ newTalent{
getIceDamage = function(self, t) return self:combatTalentSpellDamage(t, 3, 20) end,
getIceDamageIncrease = function(self, t) return self:combatTalentSpellDamage(t, 5, 14) end,
activate = function(self, t)
game:playSoundNear(self, "talents/ice")
game:playSoundNear(self, "talents/lightning")
return {
dam = self:addTemporaryValue("melee_project", {[DamageType.ICE] = t.getIceDamage(self, t)}),
per = self:addTemporaryValue("inc_damage", {[DamageType.COLD] = t.getIceDamageIncrease(self, t)}),
dam = self:addTemporaryValue("melee_project", {[DamageType.LIGHTNING_DAZE] = t.getIceDamage(self, t)}),
per = self:addTemporaryValue("inc_damage", {[DamageType.LIGHTNING] = t.getIceDamageIncrease(self, t)}),
man = self:addTemporaryValue("mana_regen_on_hit", self:getTalentLevel(t) / 3),
}
end,
deactivate = function(self, t, p)
self:removeTemporaryValue("melee_project", p.dam)
self:removeTemporaryValue("inc_damage", p.per)
self:removeTemporaryValue("mana_regen_on_hit", p.man)
return true
end,
info = function(self, t)
local icedamage = t.getIceDamage(self, t)
local icedamageinc = t.getIceDamageIncrease(self, t)
return ([[Engulfs your hands (and weapons) in a sheath of ice, dealing %d ice damage per melee attack and increasing all cold damage by %d%%.
return ([[Engulfs your hands (and weapons) in a sheath of lightnings, dealing %d lightning damage per melee attack and increasing all lightning damage by %d%%.
Each hit will also regenerate %0.2f mana.
The effects will increase with your Spellpower.]]):
format(damDesc(self, DamageType.COLD, icedamage), icedamageinc)
format(damDesc(self, DamageType.LIGHTNING, icedamage), icedamageinc, self:getTalentLevel(t) / 3)
end,
}
......
......@@ -30,7 +30,10 @@ newTalent{
do_trigger = function(self, t, target)
if self.x == target.x and self.y == target.y then return nil end
if rng.percent(20 + self:getTalentLevel(t) * (1 + self:getDex(9, true))) then
local chance = 20 + self:getTalentLevel(t) * (1 + self:getCun(9, true))
if self:hasDualWeapon() then chance = chance / 2 end
if rng.percent(chance) then
local spells = {}
local fatigue = (100 + 2 * self:combatFatigue()) / 100
local mana = self:getMana() - 1
......@@ -74,20 +77,21 @@ newTalent{
end,
info = function(self, t)
return ([[Allows one to use a melee weapon to focus spells, granting %d%% chance per melee attack to deliver a Flame, Lightning or Earthen Missiles spell as a free action on the target.
When using two weapons the chance is half for each weapon.
Delivering the spell this way will not trigger a spell cooldown, but only works if the spell is not cooling-down.
The chance increases with dexterity.]]):
format(20 + self:getTalentLevel(t) * (1 + self:getDex(9, true)))
The chance increases with cunning.]]):
format(20 + self:getTalentLevel(t) * (1 + self:getCun(9, true)))
end,
}
newTalent{
name = "Arcane Dexterity",
name = "Arcane Cunning",
type = {"technique/magical-combat", 2},
mode = "passive",
points = 5,
require = techs_req2,
info = function(self, t)
return ([[The user gains a bonus to spellpower equal to %d%% of their dexterity.]]):
return ([[The user gains a bonus to spellpower equal to %d%% of their cunning.]]):
format(15 + self:getTalentLevel(t) * 5)
end,
}
......@@ -98,12 +102,12 @@ newTalent{
mode = "sustained",
points = 5,
cooldown = 5,
sustain_stamina = 40,
sustain_stamina = 20,
require = techs_req3,
range = 10,
tactical = { BUFF = 2 },
activate = function(self, t)
local power = self:getTalentLevel(t) / 14
local power = self:getTalentLevel(t) / 7
return {
regen = self:addTemporaryValue("mana_regen", power),
}
......@@ -113,7 +117,7 @@ newTalent{
return true
end,
info = function(self, t)
return ([[Regenerates %0.2f mana per turn while active.]]):format(self:getTalentLevel(t) / 14)
return ([[Regenerates %0.2f mana per turn while active.]]):format(self:getTalentLevel(t) / 7)
end,
}
......@@ -125,8 +129,9 @@ newTalent{
require = techs_req4,
info = function(self, t)
return ([[Raw magical damage channels through the caster's weapon, increasing physical power by %d.
The bonus scales with Magic and Dexterity.]]):
format(self:combatSpellpower() * self:getTalentLevel(Talents.T_ARCANE_DESTRUCTION) / 9)
Each time your crit with a melee blow you will unleash a radius 2 ball of either fire, lightning or arcane damage doing %0.2f.
The bonus scales with Magic and Cunning.]]):
format(self:combatSpellpower() * self:getTalentLevel(Talents.T_ARCANE_DESTRUCTION) / 7, self:combatSpellpower() * 2)
end,
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment