Skip to content
Snippets Groups Projects
Commit 06bf905c authored by dg's avatar dg
Browse files

Apprentice mage quest does not mistake an Alchemist for an Archmage

Talents that have hostile actions will default to hostile targets
Generic talents will be displayed as such in the talents screen
Fix many alchemist issues
continue on geomancers


git-svn-id: http://svn.net-core.org/repos/t-engine4@921 51575b47-30f0-44d4-a5cc-537603b46e54
parent dbb82a57
No related branches found
No related tags found
No related merge requests found
Showing
with 409 additions and 34 deletions
......@@ -152,7 +152,7 @@ function _M:setSpot(x, y)
self.target.entity = game.level.map(self.target.x, self.target.y, engine.Map.ACTOR)
end
function _M:scan(dir, radius, sx, sy)
function _M:scan(dir, radius, sx, sy, filter)
sx = sx or self.target.x
sy = sy or self.target.y
radius = radius or 20
......@@ -162,7 +162,7 @@ function _M:scan(dir, radius, sx, sy)
if game.level.map.seens(x, y) and game.level.map(x, y, engine.Map.ACTOR) then
local a = game.level.map(x, y, engine.Map.ACTOR)
if not self.source_actor or self.source_actor:canSee(a) then
if (not self.source_actor or self.source_actor:canSee(a)) and (not filter or filter(a)) then
table.insert(actors, {
a = a,
dist = math.abs(sx - x)*math.abs(sx - x) + math.abs(sy - y)*math.abs(sy - y)
......
......@@ -512,7 +512,13 @@ function _M:targetMode(v, msg, co, typ)
if self.target.target.entity and self.level.map.seens(self.target.target.entity.x, self.target.target.entity.y) and self.player ~= self.target.target.entity then
else
self.target:scan(5, nil, self.player.x, self.player.y)
local filter = nil
if type(typ) == "table" and typ.first_target and typ.first_target == "friend" then
filter = function(a) return self.player:reactionToward(a) >= 0 end
else
filter = function(a) return self.player:reactionToward(a) < 0 end
end
self.target:scan(5, nil, self.player.x, self.player.y, filter)
end
end
if self.target.target.x then
......@@ -572,7 +578,7 @@ function _M:setupCommands()
[{"_d","ctrl"}] = function()
if config.settings.tome.cheat then
self.player:forceLevelup(50)
self:changeLevel(9, "tol-falas")
self:changeLevel(1, "vor-pride")
-- self.player:grantQuest("escort-duty")
end
end,
......
......@@ -30,6 +30,9 @@ newBirthDescriptor{
__ALL__ = "disallow",
Archmage = function() return profile.mod.allow_build.mage and "allow" or "disallow" end,
Alchemist = "allow",
Pyromancer = function() return profile.mod.allow_build.mage_pyromancer and "allow" or "disallow" end,
Cryomancer = function() return profile.mod.allow_build.mage_cryomancer and "allow" or "disallow" end,
Shocker = function() return profile.mod.allow_build.mage_shocker and "allow" or "disallow" end,
},
},
copy = {
......@@ -145,3 +148,125 @@ newBirthDescriptor{
end),
},
}
newBirthDescriptor{
type = "subclass",
name = "Pyromancer",
desc = {
"Pyromancerrrrr!!! BURNNNNNN !!!",
"Their most important stats are: Magic and Willpower",
},
stats = { mag=5, wil=3, cun=1, },
talents_types = {
["spell/arcane"]={true, 0.2},
["spell/fire"]={true, 0.3},
["spell/wildfire"]={true, 0.4},
["spell/air"]={true, 0.2},
["spell/phantasm"]={true, 0.3},
["spell/temporal"]={false, 0.3},
["spell/meta"]={false, 0.3},
["spell/divination"]={true, 0.3},
["spell/conveyance"]={true, 0.3},
["cunning/survival"]={false, -0.1},
},
talents = {
[ActorTalents.T_ARCANE_POWER] = 1,
[ActorTalents.T_FLAME] = 1,
[ActorTalents.T_BLASTWAVE] = 1,
[ActorTalents.T_PHASE_DOOR] = 1,
[ActorTalents.T_TELEPORT_ANGOLWEN]=1,
},
copy = {
max_life = 90,
life_rating = 10,
resolvers.equip{ id=true,
{type="weapon", subtype="staff", name="elm staff", autoreq=true},
{type="armor", subtype="cloth", name="linen robe", autoreq=true},
},
resolvers.inventory{ id=true,
{type="potion", subtype="potion", name="potion of lesser mana", ego_chance=-1000},
{type="potion", subtype="potion", name="potion of lesser mana", ego_chance=-1000},
},
},
}
newBirthDescriptor{
type = "subclass",
name = "Cryomancer",
desc = {
"Freeeeeze",
"Their most important stats are: Magic and Willpower",
},
stats = { mag=5, wil=3, cun=1, },
talents_types = {
["spell/arcane"]={true, 0.2},
["spell/water"]={true, 0.3},
["spell/ice"]={true, 0.4},
["spell/air"]={true, 0.2},
["spell/phantasm"]={true, 0.3},
["spell/temporal"]={false, 0.3},
["spell/meta"]={false, 0.3},
["spell/divination"]={true, 0.3},
["spell/conveyance"]={true, 0.3},
["cunning/survival"]={false, -0.1},
},
talents = {
[ActorTalents.T_ARCANE_POWER] = 1,
[ActorTalents.T_ICE_SHARDS] = 1,
[ActorTalents.T_PHASE_DOOR] = 1,
[ActorTalents.T_TELEPORT_ANGOLWEN]=1,
},
copy = {
max_life = 90,
life_rating = 10,
resolvers.equip{ id=true,
{type="weapon", subtype="staff", name="elm staff", autoreq=true},
{type="armor", subtype="cloth", name="linen robe", autoreq=true},
},
resolvers.inventory{ id=true,
{type="potion", subtype="potion", name="potion of lesser mana", ego_chance=-1000},
{type="potion", subtype="potion", name="potion of lesser mana", ego_chance=-1000},
},
},
}
newBirthDescriptor{
type = "subclass",
name = "Shocker",
desc = {
"Bzzzzt!",
"Their most important stats are: Magic and Willpower",
},
stats = { mag=5, wil=3, cun=1, },
talents_types = {
["spell/arcane"]={true, 0.2},
["spell/earth"]={true, 0.3},
["spell/storm"]={true, 0.4},
["spell/air"]={true, 0.2},
["spell/phantasm"]={true, 0.3},
["spell/temporal"]={false, 0.3},
["spell/meta"]={false, 0.3},
["spell/divination"]={true, 0.3},
["spell/conveyance"]={true, 0.3},
["cunning/survival"]={false, -0.1},
},
talents = {
[ActorTalents.T_ARCANE_POWER] = 1,
[ActorTalents.T_LIGHTNING] = 1,
[ActorTalents.T_NOVA] = 1,
[ActorTalents.T_PHASE_DOOR] = 1,
[ActorTalents.T_TELEPORT_ANGOLWEN]=1,
},
copy = {
max_life = 90,
life_rating = 10,
resolvers.equip{ id=true,
{type="weapon", subtype="staff", name="elm staff", autoreq=true},
{type="armor", subtype="cloth", name="linen robe", autoreq=true},
},
resolvers.inventory{ id=true,
{type="potion", subtype="potion", name="potion of lesser mana", ego_chance=-1000},
{type="potion", subtype="potion", name="potion of lesser mana", ego_chance=-1000},
},
},
}
......@@ -17,6 +17,9 @@
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
setAuto("subclass", true)
setAuto("subrace", true)
newBirthDescriptor{
type = "base",
name = "base",
......
......@@ -64,10 +64,10 @@ newBirthDescriptor{
{
"The tutorial will explain the basics of the game to get you started.",
},
on_select = function(what)
setAuto("subclass", false)
setAuto("subrace", false)
end,
-- on_select = function(what)
-- setAuto("subclass", false)
-- setAuto("subrace", false)
-- end,
descriptor_choices =
{
race =
......
......@@ -18,7 +18,8 @@
-- darkgod@te4.org
local change_weapon = function(npc, player)
player:showEquipInven("Select a two handed weapon for your golem.", function(o) return o.type == "weapon" and o.twohanded end, function(o, inven, item)
local inven = player:getInven("INVEN")
player:showInventory("Select a two handed weapon for your golem.", inven, function(o) return o.type == "weapon" and o.twohanded end, function(o, item)
player:removeObject(inven, item, true)
local ro = npc:wearObject(o, true, true)
if ro then
......@@ -35,7 +36,8 @@ local change_weapon = function(npc, player)
end
local change_armour = function(npc, player)
player:showEquipInven("Select a two handed armour for your golem.", function(o) return o.type == "armor" and o.slot == "BODY" end, function(o, inven, item)
local inven = player:getInven("INVEN")
player:showInventory("Select a two handed armour for your golem.", inven, function(o) return o.type == "armor" and o.slot == "BODY" end, function(o, item)
player:removeObject(inven, item, true)
local ro = npc:wearObject(o, true, true)
if ro then
......
......@@ -35,12 +35,12 @@ Good day to you fellow traveller!]],
-- Reward for non-mages: access to Angolwen
{"So you have enough staves now?",
jump="thanks",
cond=function(npc, player) return player:hasQuest("mage-apprentice") and player:hasQuest("mage-apprentice"):isCompleted() and player.descriptor.class ~= "Mage" end,
cond=function(npc, player) return player:hasQuest("mage-apprentice") and player:hasQuest("mage-apprentice"):isCompleted() and player.faction ~= "angolwen" end,
},
-- Reward for mages: upgrade a talent mastery
{"So you have enough items now?",
jump="thanks_mage",
cond=function(npc, player) return player:hasQuest("mage-apprentice") and player:hasQuest("mage-apprentice"):isCompleted() and player.descriptor.class == "Mage" end,
cond=function(npc, player) return player:hasQuest("mage-apprentice") and player:hasQuest("mage-apprentice"):isCompleted() and player.faction == "angolwen" end,
},
-- {"Do you have any items to sell?", jump="store"},
{"Sorry I have to go!"},
......@@ -58,8 +58,8 @@ newChat{ id="quest2",
text = [[Well if you insist...
I am a novice mage, as you might have noticed, and my goal is to be accepted by the elves of Angolwen to be taught the secrets of the arcane.]],
answers = {
{"Who are the elves of Angolwen?", jump="quest3", cond=function(npc, player) return player.descriptor.class ~= "Mage" end,},
{"Ah yes Angolwen, this place I called home for many years...", jump="quest3_mage", cond=function(npc, player) return player.descriptor.class == "Mage" end,},
{"Who are the elves of Angolwen?", jump="quest3", cond=function(npc, player) return player.faction ~= "angolwen" end,},
{"Ah yes Angolwen, this place I called home for many years...", jump="quest3_mage", cond=function(npc, player) return player.faction == "angolwen" end,},
{"Well good luck, bye!"},
}
}
......
......@@ -301,6 +301,24 @@ newDamageType{
end,
}
-- Fireburn damage + repulsion; checks for spell power against physical resistance
newDamageType{
name = "fireknockback", type = "FIREKNOCKBACK",
projector = function(src, x, y, type, dam, tmp)
local target = game.level.map(x, y, Map.ACTOR)
if target and not tmp[target] then
tmp[target] = true
DamageType:get(DamageType.FIREBURN).projector(src, x, y, DamageType.FIREBURN, dam.dam)
if target:checkHit(src:combatSpellpower(), target:combatPhysicalResist(), 0, 95, 15) and target:canBe("knockback") then
target:knockback(src.x, src.y, dam.dist)
game.logSeen(target, "%s is knocked back!", target.name:capitalize())
else
game.logSeen(target, "%s resists the punch!", target.name:capitalize())
end
end
end,
}
-- Physical damage + repulsion; checks for spell power against physical resistance
newDamageType{
name = "spellknockback", type = "SPELLKNOCKBACK",
......
......@@ -26,7 +26,7 @@ newTalent{
cooldown = 15,
range = 20,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
local tg = {type="hit", range=self:getTalentRange(t), talent=t, first_target="friend"}
local tx, ty, target = self:getTarget(tg)
if not tx or not ty or not target or not target.summoner or not target.summoner == self then return nil end
target:setEffect(target.EFF_ALL_STAT, 5, {power=2+math.floor(self:getTalentLevel(t) * 2)})
......@@ -47,7 +47,7 @@ newTalent{
cooldown = 25,
range = 20,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
local tg = {type="hit", range=self:getTalentRange(t), talent=t, first_target="friend"}
local tx, ty, target = self:getTarget(tg)
if not tx or not ty or not target or not target.summoner or not target.summoner == self then return nil end
......
......@@ -349,7 +349,7 @@ newTalent{
cooldown = 10,
range = 20,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), nolock=true, talent=t}
local tg = {type="hit", range=self:getTalentRange(t), nolock=true, talent=t, first_target="friend"}
local tx, ty, target = self:getTarget(tg)
if not tx or not ty or not target then print("1") return nil end
local _ _, tx, ty = self:canProject(tg, tx, ty)
......
......@@ -56,12 +56,16 @@ newTalent{
local dam, damtype, particle = t.computeDamage(self, t, ammo)
local prot = self:getTalentLevelRaw(self.T_ALCHEMIST_PROTECTION) * 0.2
local golem = game.level:hasEntity(self.alchemy_golem) and self.alchemy_golem or nil
local dam_done = 0
local grids = self:project(tg, x, y, function(tx, ty)
-- Protect yourself
local d = dam
-- Protect yourself
if tx == self.x and ty == self.y then d = dam * (1 - prot) end
-- Protect the golem
if golem and tx == golem.x and ty == golem.y then d = dam * (1 - prot) end
DamageType:get(damtype).projector(self, tx, ty, damtype, self:spellCrit(d))
local target = game.level.map(tx, ty, Map.ACTOR)
if not target then return end
......@@ -139,7 +143,7 @@ newTalent{
self.resists[DamageType.ACID] = self.resists[DamageType.ACID] - 3
end,
info = function(self, t)
return ([[Improves your resistance against your own bombs elemental damage by %d%% and against external one byt %d%%.]]):
return ([[Improves your resistance against your own bombs elemental damage by %d%% and against external one by %d%%.]]):
format(self:getTalentLevelRaw(t) * 20, self:getTalentLevelRaw(t) * 3)
end,
}
......@@ -150,6 +154,7 @@ newTalent{
require = spells_req4,
points = 5,
mana = 80,
cooldown = 15,
range = function(self, t)
if self:getTalentLevel(t) < 3 then return 1
else return math.floor(self:getTalentLevel(t)) end
......
......@@ -30,7 +30,7 @@ newTalent{
action = function(self, t)
local target = self
if self:getTalentLevel(t) >= 5 then
local tx, ty = self:getTarget{default_target=self, type="hit", nowarning=true, range=10}
local tx, ty = self:getTarget{default_target=self, type="hit", nowarning=true, range=10, first_target="friend"}
if tx and ty then
target = game.level.map(tx, ty, Map.ACTOR) or self
end
......@@ -77,7 +77,7 @@ newTalent{
local target = self
if self:getTalentLevel(t) >= 5 then
local tx, ty = self:getTarget{default_target=self, nowarning=true, type="hit", range=10}
local tx, ty = self:getTarget{default_target=self, nowarning=true, type="hit", range=10, first_target="friend"}
if tx and ty then
target = game.level.map(tx, ty, Map.ACTOR) or self
end
......
-- 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
newTalent{
name = "Ice Shards",
type = {"spell/ice",1},
require = spells_req1,
points = 5,
mana = 12,
cooldown = 3,
tactical = {
ATTACK = 10,
},
range = 20,
reflectable = true,
action = function(self, t)
game:playSoundNear(self, "talents/ice")
return true
end,
info = function(self, t)
return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 290))
end,
}
newTalent{
name = "Frozen Ground",
type = {"spell/ice",2},
require = spells_req2,
points = 5,
mana = 12,
cooldown = 3,
tactical = {
ATTACK = 10,
},
range = 20,
reflectable = true,
action = function(self, t)
game:playSoundNear(self, "talents/ice")
return true
end,
info = function(self, t)
return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 290))
end,
}
newTalent{
name = "Shatter",
type = {"spell/ice",3},
require = spells_req3,
points = 5,
mana = 12,
cooldown = 3,
tactical = {
ATTACK = 10,
},
range = 20,
reflectable = true,
action = function(self, t)
game:playSoundNear(self, "talents/ice")
return true
end,
info = function(self, t)
return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 290))
end,
}
newTalent{
name = "Uttercold",
type = {"spell/ice",4},
require = spells_req4,
points = 5,
mana = 12,
cooldown = 3,
tactical = {
ATTACK = 10,
},
range = 20,
reflectable = true,
action = function(self, t)
game:playSoundNear(self, "talents/ice")
return true
end,
info = function(self, t)
return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 290))
end,
}
......@@ -66,9 +66,9 @@ newTalent{
newTalent{
name = "Lightning Infusion",
type = {"spell/infusion", 2},
type = {"spell/infusion", 3},
mode = "sustained",
require = spells_req2,
require = spells_req3,
sustain_mana = 30,
points = 5,
cooldown = 30,
......@@ -84,15 +84,15 @@ newTalent{
return true
end,
info = function(self, t)
return ([[When you throw your alchemist bombs you infuse them with explosive acid, increasing damage by %d%%.]]):format(self:getTalentLevel(t) * 5)
return ([[When you throw your alchemist bombs you infuse them with lightning, increasing damage by %d%%.]]):format(self:getTalentLevel(t) * 5)
end,
}
newTalent{
name = "Frost Infusion",
type = {"spell/infusion", 2},
type = {"spell/infusion", 4},
mode = "sustained",
require = spells_req2,
require = spells_req4,
sustain_mana = 30,
points = 5,
cooldown = 30,
......@@ -108,6 +108,6 @@ newTalent{
return true
end,
info = function(self, t)
return ([[When you throw your alchemist bombs you infuse them with explosive acid, increasing damage by %d%%.]]):format(self:getTalentLevel(t) * 5)
return ([[When you throw your alchemist bombs you infuse them with frost, increasing damage by %d%%.]]):format(self:getTalentLevel(t) * 5)
end,
}
-- 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
newTalent{
name = "Nova",
type = {"spell/storm",1},
require = spells_req1,
points = 5,
mana = 12,
cooldown = 3,
tactical = {
ATTACK = 10,
},
range = 20,
reflectable = true,
action = function(self, t)
game:playSoundNear(self, "talents/lightning")
return true
end,
info = function(self, t)
return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 290))
end,
}
newTalent{
name = "???",
type = {"spell/storm",2},
require = spells_req2,
points = 5,
mana = 12,
cooldown = 3,
tactical = {
ATTACK = 10,
},
range = 20,
reflectable = true,
action = function(self, t)
game:playSoundNear(self, "talents/lightning")
return true
end,
info = function(self, t)
return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 290))
end,
}
newTalent{
name = "???",
type = {"spell/storm",3},
require = spells_req3,
points = 5,
mana = 12,
cooldown = 3,
tactical = {
ATTACK = 10,
},
range = 20,
reflectable = true,
action = function(self, t)
game:playSoundNear(self, "talents/lightning")
return true
end,
info = function(self, t)
return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 290))
end,
}
newTalent{
name = "Tempest",
type = {"spell/storm",4},
require = spells_req4,
points = 5,
mana = 12,
cooldown = 3,
tactical = {
ATTACK = 10,
},
range = 20,
reflectable = true,
action = function(self, t)
game:playSoundNear(self, "talents/lightning")
return true
end,
info = function(self, t)
return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 290))
end,
}
......@@ -25,17 +25,20 @@ newTalent{
mana = 12,
cooldown = 3,
tactical = {
ATTACK = 10,
ATTACKAREA = 10,
DEFEND = 4,
},
range = 20,
reflectable = true,
range = function(self, t) return 1 + self:getTalentLevelRaw(t) end,
action = function(self, t)
local tg = {type="ball", range=0, radius=self:getTalentRange(t), friendlyfire=false, talent=t}
local grids = self:project(tg, self.x, self.y, DamageType.FIREKNOCKBACK, {dist=3, dam=self:spellCrit(self:combatTalentSpellDamage(t, 28, 150))})
game.level.map:particleEmitter(self.x, self.y, tg.radius, "ball_fire", {radius=tg.radius, grids=grids, tx=self.x, ty=self.y})
game:playSoundNear(self, "talents/fire")
return true
end,
info = function(self, t)
return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 290))
return ([[A wave of fire emanates from you, knocking back anything caught inside and setting them ablaze and doing %0.2f fire damage over 3 turns.
The damage will increase with the Magic stat]]):format(self:combatTalentSpellDamage(t, 25, 250))
end,
}
......
......@@ -288,9 +288,11 @@ Mouse: #00FF00#Left click#FFFFFF# to learn; #00FF00#right click#FFFFFF# to unlea
helplines = str:splitLines(self.iw / 2 - 10, self.font)
lines = self.actor:getTalentTypeFrom(self.list[self.sel].type).description:splitLines(self.iw / 2 - 10, self.font)
else
local t = self.actor:getTalentFromId(self.list[self.sel].talent)
local str = ""
local what
if self.list[self.sel].generic then
if t.generic then
what = "generic talent"
str = str .. "#00FFFF#Generic Talent\n"
str = str .. "#00FFFF#A generic talent allows you to perform various utility actions and improve your character. It reprents talents anybody can learn (should they find a trainer for it). You gain one point every levels except every 5 levels. You may also find trainers or artifacts that allow you to learn more.\n\n"
......@@ -300,7 +302,6 @@ Mouse: #00FF00#Left click#FFFFFF# to learn; #00FF00#right click#FFFFFF# to unlea
str = str .. "#00FFFF#A class talent allows you to perform new combat moves, cast spells, and improve your character. It represents the core function of your class. You gain one point every level and two every 5 levels. You may also find trainers or artifacts that allow you to learn more.\n\n"
end
helplines = str:splitLines(self.iw / 2 - 10, self.font)
local t = self.actor:getTalentFromId(self.list[self.sel].talent)
if self.actor:getTalentLevelRaw(t.id) > 0 then
lines = self.actor:getTalentFullDescription(t):splitLines(self.iw / 2 - 10, self.font)
......
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