diff --git a/game/modules/tome/data/general/objects/egos/amulets.lua b/game/modules/tome/data/general/objects/egos/amulets.lua index 2565855acc4137c7c4a4baeec9fc41eee0d9b5fd..599cb5466eef4a0c4f1975e10689931cd926a4b5 100644 --- a/game/modules/tome/data/general/objects/egos/amulets.lua +++ b/game/modules/tome/data/general/objects/egos/amulets.lua @@ -100,12 +100,16 @@ newEntity{ rarity = 6, cost = 2, wielder = {}, - resolvers.generic(function(e) + resolvers.genericlast(function(e) local tts = {} local p = game:getPlayer(true) for i, def in ipairs(engine.interface.ActorTalents.talents_types_def) do - if p and def.allow_random and p:knowTalentType(def.type) or p:knowTalentType(def.type) == false then tts[#tts+1] = def.type end - end + if p and def.allow_random and p:knowTalentType(def.type) or p:knowTalentType(def.type) == false then + if not (e.power_source.antimagic and def.is_spell) or (e.power_source.arcane and def.is_antimagic) then + tts[#tts+1] = def.type + end + end + end local tt = tts[rng.range(1, #tts)] e.wielder.talents_types_mastery = {} @@ -533,12 +537,16 @@ newEntity{ greater_ego = 1, cost = 2, wielder = {}, - resolvers.generic(function(e) + resolvers.genericlast(function(e) local tts = {} local p = game:getPlayer(true) for i, def in ipairs(engine.interface.ActorTalents.talents_types_def) do - if p and def.allow_random and p:knowTalentType(def.type) or p:knowTalentType(def.type) == false then tts[#tts+1] = def.type end - end + if p and def.allow_random and p:knowTalentType(def.type) or p:knowTalentType(def.type) == false then + if not (e.power_source.antimagic and def.is_spell) or (e.power_source.arcane and def.is_antimagic) then + tts[#tts+1] = def.type + end + end + end --local tt = tts[rng.range(1, #tts)] local tt = rng.tableRemove(tts) local tt2 = rng.tableRemove(tts) diff --git a/game/modules/tome/data/general/objects/egos/rings.lua b/game/modules/tome/data/general/objects/egos/rings.lua index 868e4660ab4b90b8b793da12331695e72df93f53..baf5e665ec99522d1b8903d95e6a287c5b15e02d 100644 --- a/game/modules/tome/data/general/objects/egos/rings.lua +++ b/game/modules/tome/data/general/objects/egos/rings.lua @@ -87,7 +87,7 @@ newEntity{ newEntity{ power_source = {arcane=true}, - name = " of arcana(#REGEN#)", suffix=true, instant_resolve=true, + name = " of arcana (#REGEN#)", suffix=true, instant_resolve=true, keywords = {arcana=true}, level_range = {1, 50}, rarity = 6, diff --git a/game/modules/tome/data/talents/celestial/circles.lua b/game/modules/tome/data/talents/celestial/circles.lua index d2cf94f5b205a6d6996dc1539be2a496739a0af4..c3cc4f9c555b2f086e11c3f125e0905bfada17ba 100644 --- a/game/modules/tome/data/talents/celestial/circles.lua +++ b/game/modules/tome/data/talents/celestial/circles.lua @@ -52,7 +52,7 @@ newTalent{ local damage = t.getDamage(self, t) local duration = t.getDuration(self, t) local radius = self:getTalentRadius(t) - return ([[Creates a circle of radius %d at your feet; the circle increases your Defense by %d, and deals %0.2f darkness damage per turn to everyone else with in its radius. The circle lasts %d turns. + return ([[Creates a circle of radius %d at your feet; the circle increases your Defense by %d and deals %0.2f darkness damage per turn to everyone else within its radius. The circle lasts %d turns. The damage will increase with your Spellpower.]]): format(radius, damage, (damDesc (self, DamageType.DARKNESS, damage)), duration) end, @@ -167,7 +167,7 @@ newTalent{ info = function(self, t) local duration = t.getDuration(self, t) local radius = self:getTalentRadius(t) - return ([[Creates a circle of radius %d at your feet; the circle protects you from silence effects while you remain in its radius, and silences everyone else who enters. The circle lasts %d turns.]]): + return ([[Creates a circle of radius %d at your feet; the circle protects you from silence effects while you remain within its radius and silences everyone else who enters. The circle lasts %d turns.]]): format(radius, duration) end, } @@ -207,7 +207,7 @@ newTalent{ local damage = t.getDamage(self, t) local duration = t.getDuration(self, t) local radius = self:getTalentRadius(t) - return ([[Creates a circle of radius %d at your feet; the circle slows incoming projectiles by %d%%, and attempts to push all creatures other than yourself out of its radius, inflicting %0.2f light damage and %0.2f darkness damage per turn as it does so. The circle lasts %d turns. + return ([[Creates a circle of radius %d at your feet; the circle slows incoming projectiles by %d%% and attempts to push all creatures other than yourself out of its radius, inflicting %0.2f light damage and %0.2f darkness damage per turn as it does so. The circle lasts %d turns. The effects will increase with your Spellpower.]]): format(radius, damage*5, (damDesc (self, DamageType.LIGHT, damage)), (damDesc (self, DamageType.DARKNESS, damage)), duration) end, diff --git a/game/modules/tome/data/talents/corruptions/curses.lua b/game/modules/tome/data/talents/corruptions/curses.lua index e5c222aa0dbbf61f8f556857d7a194d85ea26b8e..f93960993f663957e8773e63629bb2c400797d0c 100644 --- a/game/modules/tome/data/talents/corruptions/curses.lua +++ b/game/modules/tome/data/talents/corruptions/curses.lua @@ -73,7 +73,7 @@ newTalent{ return true end, info = function(self, t) - return ([[Curses your target, decreasing all damage they do by %d%% for 10 turns. + return ([[Curses your target, decreasing all damage it does by %d%% for 10 turns. The effects will improve with your Spellpower.]]):format(t.imppower(self,t)) end, } diff --git a/game/modules/tome/data/talents/corruptions/hexes.lua b/game/modules/tome/data/talents/corruptions/hexes.lua index 92f7d2be8df770214ad3485b6c4810612913d978..7671ed5b2c8f8bd67ccd2e096838f48435a0dd23 100644 --- a/game/modules/tome/data/talents/corruptions/hexes.lua +++ b/game/modules/tome/data/talents/corruptions/hexes.lua @@ -50,7 +50,7 @@ newTalent{ return true end, info = function(self, t) - return ([[Hexes your target, dazing it and everything in a 2 radius ball around it for 3 turns, and giving %d%% chance to daze affected targets again each turn for 20 turns. + return ([[Hexes your target, dazing it and everything in a 2 radius ball around it for 3 turns and giving a %d%% chance to daze affected targets again each turn for 20 turns. The chance will increase with your Spellpower.]]):format(t.getchance(self,t)) end, } diff --git a/game/modules/tome/data/talents/misc/races.lua b/game/modules/tome/data/talents/misc/races.lua index 472104772270bd99727b9bfccc70e6cd6d888f02..1c7e81649ef5caa6589c5d1d149c3a045e4e7b9a 100644 --- a/game/modules/tome/data/talents/misc/races.lua +++ b/game/modules/tome/data/talents/misc/races.lua @@ -81,7 +81,7 @@ newTalent{ return ([[While Highers are not meant to rule other humans - and show no particular will to do so - they are frequently called to higher duties. Their nature grants them better senses than other humans. Increase blindness immunity by %d%%, maximum sight range by %d, and increases existing infravision, and heightened senses range by %d. - At level 5 each time you hit a target you gain telepathy to all similar creatures in radius 15 for 5 turns.]]): + At talent level 5, each time you hit a target you gain telepathy to all similar creatures in radius 15 for 5 turns.]]): format(t.getImmune(self, t) * 100, t.getSight(self, t), t.getESight(self, t)) end, } @@ -106,8 +106,8 @@ newTalent{ info = function(self, t) local netpower = t.power(self, t) return ([[Highers were originally created during the Age of Allure by the human Conclave. They are imbued with magic at the very core of their being. - Increase spell save by +%d and arcane resistance by %d%%. - Also when you cast a spell dealing damage, you gain a 20%% bonus to the damage type for 5 turns. (This effect has a cooldown.)]]): + Increase spell save by %d and arcane resistance by %d%%. + Also, when you cast a spell dealing damage, you gain a 20%% bonus to the damage type for 5 turns. (This effect has a cooldown.)]]): format(t.getSave(self, t), netpower) end, } @@ -152,8 +152,8 @@ newTalent{ end, info = function(self, t) local duration = t.getDuration(self, t) - return ([[Activate some of your inner magic, using it to power your abilities. For the next %d turns, all active talents will be used without resource cost. - Your resources must still be high enough to initially power the talent, and failure rates (etc.) still apply. + return ([[Activate some of your inner magic, using it to power your abilities. For the next %d turns all active talents will be used without resource cost. + Your resources must still be high enough to initially power the talent and failure rates (etc.) still apply. ]]):format(duration) end, } @@ -177,7 +177,7 @@ newTalent{ return true end, info = function(self, t) - return ([[Call upon the grace of the Eternals to increase your general speed by %d%% for 5 turns. + return ([[Call upon the grace of the Eternals to increase your global speed by %d%% for 5 turns. The speed bonus will increase with your Dexterity or Magic (whichever is higher).]]): format(t.getSpeed(self, t) * 100) end, @@ -196,7 +196,7 @@ newTalent{ self:talentTemporaryValue(p, "combat_critical_power", t.critPower(self, t)) end, info = function(self, t) - return ([[Reality bends slightly in the presence of a Shaloren, due to their inherent magical nature. + return ([[Reality bends slightly in the presence of a Shaloren due to their inherent magical nature. Increases critical chance by %d%% and critical strike power by %d%%.]]): format(t.critChance(self, t), t.critPower(self, t)) end, @@ -229,8 +229,8 @@ newTalent{ return true end, info = function(self, t) - return ([[As the only immortal race of Eyal, Shaloren have learnt, over the long years, to use their innate inner magic to protect themselves. - %d%% chance to become invisible (power %d) for 5 turns, when hit by a blow doing at least 10%% of their total life.]]): + return ([[As the only immortal race of Eyal, Shaloren have learnt over the long years to use their innate inner magic to protect themselves. + %d%% chance to become invisible (power %d) for 5 turns when hit by a blow doing at least 10%% of your total life.]]): format(t.getChance(self, t), t.getInvis(self, t)) end, } @@ -344,7 +344,7 @@ newTalent{ }) end, info = function(self, t) - return ([[Thaloren have an affinity for natural elements allowing them to heal for a portion of damage taken from them. + return ([[Thaloren have an affinity for natural elements, allowing them to heal for a portion of damage taken from them. You gain %d%% Nature and Acid damage affinity.]]): format(t.getAffinity(self, t)) end, @@ -365,7 +365,7 @@ newTalent{ self:talentTemporaryValue(p, "resists",{all=t.getAllResist(self, t)}) end, info = function(self, t) - return ([[You are part of the wood; it shields you from corruption. + return ([[Thaloren are part of the wood; it shields them from corruption. Increase disease immunity by %d%%, blight resistance by %0.1f%%, and all resistances by %0.1f%%.]]): format(t.getDiseaseImmune(self, t)*100, t.getBResist(self, t), t.getAllResist(self, t)) end, @@ -446,9 +446,9 @@ newTalent{ end, info = function(self, t) local base_stats = self:combatScale(self:getWil() * self:getTalentLevel(t), 25, 0, 125, 500, 0.75) - return ([[Nature is with you; you can always feel the call of the woods. + return ([[Nature is with the Thaloren; they can always feel the call of the woods. Summons two elite Treants to your side for 8 turns. - The treants have a global resistance equal to your blight resistance, and can stun, knockback and taunt your foes. + The treants have a global resistance equal to your blight resistance and can stun, knockback, and taunt foes. Your Willpower (%d) will be added to all of their non-Magic primary stats and their talent levels will increase with your Nature's Pride talent level. Your increased damage, damage penetration, and many other stats will be inherited.]]):format(self:getWil()) end, @@ -481,8 +481,8 @@ newTalent{ end, info = function(self, t) local params = t.getParams(self, t) - return ([[Call upon the legendary resilience of the Dwarven race to increase your armour (+%d), armour hardiness (+%d%%), spell (+%d) and physical (+%d) saves for 8 turns. - The bonus will increase with your Constitution.]]): + return ([[Call upon the legendary resilience of the Dwarven race to increase armour (+%d), armour hardiness (+%d%%), spell (+%d) and physical (+%d) saves for 8 turns. + The bonuses will increase with your Constitution.]]): format(params.armor, params.armor_hardiness, params.physical, params.spell) end, } @@ -498,9 +498,9 @@ newTalent{ self:talentTemporaryValue(p, "auto_stoneskin", t.armor(self, t)) end, info = function(self, t) - return ([[Dwarf skin is a complex structure, it can automatically react to physical blows to harden itself. + return ([[Dwarf skin is a complex structure; it can automatically react to physical blows and harden itself. When you are hit in melee, you have a 15%% chance to increase your armour total by %d for 5 turns and fully ignore the attack triggering it. - There is no cooldown to this effect, it can happen while already active.]]): + There is no cooldown to this effect; it can happen while already active.]]): format(t.armor(self, t)) end, } @@ -537,21 +537,28 @@ newTalent{ return math.max(1, math.floor(self:combatScale(0.04*self:getCon() + self:getTalentLevel(t), 2.4, 1.4, 10, 9))) end, action = function(self, t) - local tg = {type="bolt", range=self:getTalentRange(t), nolock=true, simple_dir_request=true, talent=t} + local tg = {type="bolt", range=self:getTalentRange(t), nolock=true, talent=t, simple_dir_request=true} local x, y = self:getTarget(tg) if not x or not y then return nil end local _ _, x, y = self:canProject(tg, x, y) + local ox, oy = self.x, self.y - self:probabilityTravel(x, y, t.getRange(self, t), function(tx, ty) return game.level.map(tx, ty, Map.ACTOR) and true or false end) - if ox == self.x and oy == self.y then return nil end + local l = line.new(self.x, self.y, x, y) + local nextx, nexty = l() + if not nextx or not game.level.map:checkEntity(nextx, nexty, Map.TERRAIN, "block_move", self) then return end + + self:probabilityTravel(x, y, t.getRange(self, t)) + + if ox == self.x and oy == self.y then return end + game:playSoundNear(self, "talents/earth") return true end, info = function(self, t) local range = t.getRange(self, t) - return ([[While the origins of the dwarves remain clouded in mysteries to the other races, it is obvious they share strong ties to the stone. - You can target any wall and immediately enter it and appear on the other side of the obstacle. - Works up to %d grids away (increases with Constitution and talent level).]]): + return ([[While the origins of the dwarves remain clouded in mystery to the other races, it is obvious that they share strong ties to the stone. + You can target any wall and immediately enter it, appearing on the other side. + This can pass through up to %d tiles (increases with Constitution and talent level).]]): format(range) end, } @@ -605,8 +612,8 @@ newTalent{ local threshold = t.getThreshold(self, t) local evasion = t.getEvasionChance(self, t) local duration = t.getDuration(self, t) - return ([[Your incredible luck kicks in at just the right moment to save your skin. - Whenever you take %d%% or more of your life from a single attack, you gain Evasion (%d%%) and %d additional defense (based on your luck and other defensive stats) for the next %d turns.]]): + return ([[Halfling's incredible luck always kicks in at just the right moment to save their skin. + Whenever you take %d%% or more of your life from a single attack, you gain %d%% Evasion and %d additional defense for the next %d turns. The defense increases based on your luck and other defensive stats.]]): format(threshold * 100, evasion, t.getDefense(self), duration) end, } @@ -680,8 +687,8 @@ newTalent{ info = function(self, t) local duration = t.getDuration(self, t) local count = t.getRemoveCount(self, t) - return ([[Halflings have one of the most powerful military forces in the known world and they have been at war with most other races for thousand of years. - Removes %d stun, daze, or pin effects, and makes you immune to stuns, dazes and pins for %d turns.]]):format(duration, count) + return ([[Halflings have one of the most powerful military forces in the known world and have been at war with most other races for thousands of years. + Removes %d stun, daze, or pin effects and grants immunity to stuns, dazes and pins for %d turns.]]):format(duration, count) end, } @@ -724,7 +731,7 @@ newTalent{ return true end, info = function(self, t) - return ([[Summons your lust for blood and destruction, especially when the odds are against you. + return ([[Summons your lust for blood and destruction; especially when the odds are against you. You increase your damage by 10%% + %0.1f%% per enemy you can see in line of sight of you (maximum 5 enemies, %0.1f%% bonus) for 3 turns. The damage bonus will increase with your Constitution.]]): format(t.getPower(self, t), 10 + t.getPower(self, t) * 5) @@ -756,7 +763,7 @@ newTalent{ info = function(self, t) return ([[Orcs have been the prey of the other races for thousands of years, with or without justification. They have learnt to withstand things that would break weaker races. When your life goes below 50%% your sheer determination cleanses you of %d mental debuff(s) based on talent level and Willpower. This can only happen once every 10 turns. - Also increase physical save by +%d.]]): + Also increases physical save by +%d.]]): format(t.getDebuff(self, t), t.getSaves(self, t)) end, } @@ -779,8 +786,8 @@ newTalent{ info = function(self, t) return ([[Orcs have seen countless battles, and won many of them. You revel in the defeat of your foes, gaining %d%% damage resistance for 2 turns each time you kill an enemy. - The resistance will scale with your talent level and Constitution. - Passively increase all damage penetration by %d%%.]]): + The resistance will scale with talent level and your Constitution. + Additionally, passively increase all damage penetration by %d%%.]]): format(t.getResist(self, t), t.getPen(self, t)) end, } @@ -839,7 +846,7 @@ newTalent{ info = function(self, t) return ([[Call upon the will of all of the Orc Prides to survive this battle. You remove up to %d detrimental effect(s) then heal for %d life. - The healing will increase with your talent level and Willpower.]]): + The healing will increase with talent level and your Willpower.]]): format(t.remcount(self,t), t.heal(self, t)) end, } @@ -914,7 +921,7 @@ newTalent{ end, info = function(self, t) return ([[Your mind becomes more attuned to the Way, and is shielded from outside effects. - Increase confusion and silence immunities by %d%%, and your Mental Save by +%d.]]): + Increase confusion and silence immunities by %d%% and Mental Save by %d.]]): format(100*t.getImmune(self, t), t.getSave(self, t)) end, } @@ -1048,7 +1055,7 @@ newTalent{ mode = "passive", on_learn = function(self, t) self.auto_id = 100 end, info = function(self, t) - return ([[You merge your mind with the rest of the Way for a brief moment; the sum of all yeek knowledge gathers in your mind, + return ([[You merge your mind with the rest of the Way for a brief moment; the sum of all yeek knowledge gathers in your mind and allows you to identify any item you could not recognize yourself.]]) end, } @@ -1077,7 +1084,7 @@ newTalent{ end, info = function(self, t) return ([[You enter an ogric wrath for %d turns, increasing your stun and pinning resistances by 20%% and all damage done by 10%%. - In addition, whenever you use an infusion or rune, miss a melee attack or any damage you deal is reduced by a damage shield or similar effect you gain a charge of Ogre Fury(up to 5 charges, each lasts 7 turns). + In addition, whenever you use an infusion or rune, miss a melee attack, or any damage you deal is reduced by a damage shield (or similar effect) you gain a charge of Ogre Fury (up to 5 charges total, each lasting 7 turns). Each charge grants 20%% critical damage power and 5%% critical strike chance. You lose a charge each time you deal a critical strike. The duration will increase with your Strength.]]):format(t.getduration(self)) @@ -1107,7 +1114,7 @@ newTalent{ return ([[An ogre's body is acclimated to spells and inscriptions. Increases spell save by %d and improves the contribution of primary stats on infusions and runes by %d%%. At level 5 your body is so strong you can use a two handed weapon in your main hand while still using an offhand item. - When using a two handed weapon this way you suffer a 20%% accuracy, physical power, spellpower and mindpower penalty, decreasing by 5%% per size category above #{italic}#big#{normal}#; also all damage procs from your weapons are reduced by 50%%.]]): + When using a two handed weapon this way you suffer a 20%% accuracy, physical power, spellpower and mindpower penalty, decreasing by 5%% per size category above #{italic}#big#{normal}#; further, all damage procs from your weapons are reduced by 50%%.]]): format(t.getSave(self, t), t.getMult(self, t) * 100) end, } @@ -1169,7 +1176,7 @@ newTalent{ end, info = function(self, t) return ([[Instantly removes runic and infusion saturations. - For %d turns your inscriptions cooldown twice as fast. + For %d turns your inscriptions cool down twice as fast. At level 5 your command over inscriptions is so good that you can use one more (you still need a category point to unlock it; you need to exit the levelup screen to validate it).]]): format(t.getDuration(self, t)) end, diff --git a/game/modules/tome/data/talents/undeads/ghoul.lua b/game/modules/tome/data/talents/undeads/ghoul.lua index f492d2031c842e64ceb6625c6f4f94fcc9150e90..8b6840fa662287e7b75005aaee3217352c27b829 100644 --- a/game/modules/tome/data/talents/undeads/ghoul.lua +++ b/game/modules/tome/data/talents/undeads/ghoul.lua @@ -32,7 +32,7 @@ newTalent{ end, info = function(self, t) return ([[Improves your ghoulish body, increasing Strength and Constitution by %d. - Your body also becomes incredibly resilient to damage, you can never take a blow that deals more than %d%% of your maximum life.]]) + Your body also becomes incredibly resilient to damage; you can never take a blow that deals more than %d%% of your maximum life.]]) :format(t.statBonus(self, t), t.getMaxDamage(self, t)) end, } @@ -131,10 +131,9 @@ newTalent{ info = function(self, t) local dam = 10 + self:combatTalentStatDamage(t, "con", 10, 60) return ([[Vomit on the ground around you, healing any undead in the area and damaging anyone else. - Lasts %d turns, and deals %d blight damage or heals %d life. - Creatures standing in the retch also have %d%% chance to remove a physical effect each turn. - When you stand in your own retch your racial -20%% global speed is cancelled. - Undeads will be stripped from a detrimental effect while others will be stripped from a beneficial effect.]]):format(t.getduration(self, t), damDesc(self, DamageType.BLIGHT, dam), dam * 1.5, t.getPurgeChance(self, t)) + Lasts %d turns and deals %d blight damage or heals %d life. + Creatures standing in the retch also have %d%% chance to remove a physical effect each turn; undeads will be stripped from a detrimental effect while others will be stripped from a beneficial effect. + When you stand in your own retch your racial -20%% global speed is cancelled.]]):format(t.getduration(self, t), damDesc(self, DamageType.BLIGHT, dam), dam * 1.5, t.getPurgeChance(self, t)) end, } diff --git a/game/modules/tome/data/talents/undeads/skeleton.lua b/game/modules/tome/data/talents/undeads/skeleton.lua index 80d1b9a40bc433bb312b6783adefdd7896726336..deb1acc9dfd323e15f7fc38bf61b2e656e3d1e25 100644 --- a/game/modules/tome/data/talents/undeads/skeleton.lua +++ b/game/modules/tome/data/talents/undeads/skeleton.lua @@ -95,8 +95,8 @@ newTalent{ short_name = "SKELETON_REASSEMBLE", return true end, info = function(self, t) - return ([[Re-position some of your bones, healing yourself for %d. - At level 5, you will gain the ability to completely re-assemble your body should it be destroyed (can only be used once)]]): + return ([[Reposition some of your bones, healing yourself for %d. + At level 5, you will gain the ability to completely re-assemble your body should it be destroyed (can only be used once).]]): format(t.getHeal(self, t)) end, } diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua index 4947d2868033ea966d154e2b6ed78806eecfa5f0..802c114a5fe3d936efe3bf82455e69e13163153e 100644 --- a/game/modules/tome/data/timed_effects/physical.lua +++ b/game/modules/tome/data/timed_effects/physical.lua @@ -2965,6 +2965,7 @@ newEffect { newEffect { name = "SKIRMISHER_STUN_INCREASE", desc = "Stun Lengthen", + long_desc = function(self, eff) return ([[This should not be shown, oops.]]) end, type = "physical", subtype = {stun = true}, status = "detrimental", diff --git a/game/modules/tome/dialogs/LevelupDialog.lua b/game/modules/tome/dialogs/LevelupDialog.lua index 21870cfa9c04bdc327531e723c838bec5e36c7a6..bf314664d4b750469eaedadf6df82282cae5b576 100644 --- a/game/modules/tome/dialogs/LevelupDialog.lua +++ b/game/modules/tome/dialogs/LevelupDialog.lua @@ -941,12 +941,12 @@ function _M:getTalentDesc(item) local unlearnable, could_unlearn = self:isUnlearnable(t, true) if unlearnable then local max = tostring(self.actor:lastLearntTalentsMax(t.generic and "generic" or "class")) - text:add({"color","LIGHT_BLUE"}, "This talent was recently learnt, you can still unlearn it.", true, "The last ", max, t.generic and " generic" or " class", " talents you learnt are always unlearnable.", {"color","LAST"}, true, true) + text:add({"color","LIGHT_BLUE"}, "This talent was recently learnt; you can still unlearn it.", true, "The last ", max, t.generic and " generic" or " class", " talents you learnt are always unlearnable.", {"color","LAST"}, true, true) elseif t.no_unlearn_last then - text:add({"color","YELLOW"}, "This talent can alter the world in a permanent way, as such you can never unlearn it once known.", {"color","LAST"}, true, true) + text:add({"color","YELLOW"}, "This talent can alter the world in a permanent way; as such, you can never unlearn it once known.", {"color","LAST"}, true, true) elseif could_unlearn then local max = tostring(self.actor:lastLearntTalentsMax(t.generic and "generic" or "class")) - text:add({"color","LIGHT_BLUE"}, "This talent was recently learnt, you can still unlearn it if you are in a quiet area like a #{bold}#town#{normal}#.", true, "The last ", max, t.generic and " generic" or " class", " talents you learnt are always unlearnable.", {"color","LAST"}, true, true) + text:add({"color","LIGHT_BLUE"}, "This talent was recently learnt; you can still unlearn it if you are in a quiet area like a #{bold}#town#{normal}#.", true, "The last ", max, t.generic and " generic" or " class", " talents you learnt are always unlearnable.", {"color","LAST"}, true, true) end local traw = self.actor:getTalentLevelRaw(t.id)