Page 1 of 3

Needed Talent Description Updates

Posted: Tue Oct 12, 2010 4:49 pm
by edge2054
Starting this thread so we can list suggested talent updates. I'll get the ball rolling with an example.

Please use tested code when contributing or mark down rather the code has been tested or not.

Tidal Wave (tested)

Code: Select all

    info = function(self, t)
        return ([[A wall of water rushes out from the caster doing %0.2f cold damage and %0.2f physical damage as well as knocking back targets each turn for %d turns.
        The damage and duration will increase with the Magic stat]]):format(damDesc(self, DamageType.COLD, self:combatTalentSpellDamage(t, 5, 90)/2), damDesc(self, DamageType.PHYSICAL, self:combatTalentSpellDamage(t, 5, 90)/2), 5 + self:combatSpellpower(0.01) * self:getTalentLevel(t))
    end, 

Re: Needed Talent Description Updates

Posted: Tue Oct 12, 2010 5:23 pm
by Final Master
These will all be untested and most likely edited by me later.

Shield Pummel:

Code: Select all

info = function(self, t)
		return ([[Hits the target with two shield strikes, stunning it and doing %d%% shield damage.
		The damage multiplier increases with your strength and the duration with talent level.]]):format(100 * self:combatTalentWeaponDamage(t, 1.2, 2.1, self:getTalentLevel(self.T_SHIELD_EXPERTISE)))
	end,
Riposte:

Code: Select all

info = function(self, t)
		return ([[When you block/avoid a melee blow you have a %d%% chance to get a free, automatic melee attack against your foe. Your chances increase with dexterity.]]):format(util.bound(self:getTalentLevel(t) * self:getDex(40), 10, 60))
	end,
Overpower:

Code: Select all

info = function(self, t)
		return ([[Hits the target with your weapon and two shield strikes doing %d%% damage, trying to overpower your target.
		If the last attack hits, the target is knocked back. The chance for knock back increases with talent level.]]):format(100 * self:combatTalentWeaponDamage(t, 0.8, 1.3, self:getTalentLevel(self.T_SHIELD_EXPERTISE)))
	end,
Repulsion:

Code: Select all

info = function(self, t)
		return ([[Let all your foes pile up on your shield, then put all your strength in one mighty thrust and repel them all away %d grids. The distance increases with talent level.]]):format(math.floor(1 + self:getTalentLevel(t)))
	end,
Shield Wall:

Code: Select all

info = function(self, t)
		return ([[Enter a protective battle stance, increasing defense by %d and armor by %d at the cost of 10 attack and 10 damage. The defense and armor increase is based on dexterity.
		At level 5 it also makes you immune to stunning and knockback.]]):format(
		5 + (1 + self:getDex(4)) * self:getTalentLevel(t) + self:getTalentLevel(self.T_SHIELD_EXPERTISE),
		5 + (1 + self:getDex(4)) * self:getTalentLevel(t) + self:getTalentLevel(self.T_SHIELD_EXPERTISE)
		)
	end,
Shield Expertise:

Code: Select all

info = function(self, t)
		return ([[Increases your spell and physical save.]]):format()
	end,
NOTE: I changed shield expertise that way because I see nothing in this code:

Code: Select all

newTalent{
	name = "Shield Expertise",
	type = {"technique/shield-defense", 3},
	require = techs_req3,
	mode = "passive",
	points = 5,
	on_learn = function(self, t)
		self.combat_physresist = self.combat_physresist + 4
		self.combat_spellresist = self.combat_spellresist + 2
	end,
	on_unlearn = function(self, t)
		self.combat_physresist = self.combat_physresist + 4
		self.combat_spellresist = self.combat_spellresist + 2
	end,
	info = function(self, t)
		return ([[Improves your damage with shield attacks and increases your spell and physical save.]]):format()
	end,
}
that effects the amount of damage that shields do. All I see is that shield expertise effects your physical and spell resist. It SHOULD increase damage dealt, but I have no idea how to code that. The description should also include the numbers by which shield expertise increases the resists/damage by, but I don't know how to code that properly. I thought I should bring that up.

Last Stand:

Code: Select all

info = function(self, t)
		return ([[You brace yourself for the final stand, increasing defense by %d and maximum life by %d, but making you unable to move. The increase in defense and life is based on dexterity.]]):
		format(5 + self:getDex(4) * self:getTalentLevel(t), 10 * self:getTalentLevel(t))
	end,
That's all I have for now. Most of the changes are rather small, simply adding what stat they are effected by or adding what duration is effected by.

Re: Needed Talent Description Updates

Posted: Tue Oct 12, 2010 5:29 pm
by edge2054
Shield Expertise increases shield damage by affecting other talents.

Look at the code for Shield Pummel for instance.

Note that shields never deal damage unless a talent is activated.

Also Shield Expertise increases the effectiveness of Shield Wall. This should probably be mentioned in either the Shield Wall or the Shield Expertise descriptions.

Re: Needed Talent Description Updates

Posted: Tue Oct 12, 2010 5:31 pm
by yufra
Final Master wrote: NOTE: I changed shield expertise that way because I see nothing in this code... that effects the amount of damage that shields do. All I see is that shield expertise effects your physical and spell resist. It SHOULD increase damage dealt, but I have no idea how to code that. The description should also include the numbers by which shield expertise increases the resists/damage by, but I don't know how to code that properly. I thought I should bring that up.
It does affect the damage dealt, and that is why you see combatTalentWeaponDamage(bla, bla, bla, self:getTalentLevel(self.T_SHIELD_EXPERTISE)) littered throughout weaponshield.lua. The effect is indirect, but there.

You may also want to mention the maximum values for example Riposte?

EDIT: Ninja-ed by edge.

Re: Needed Talent Description Updates

Posted: Tue Oct 12, 2010 7:44 pm
by Massimiliano Marangio
Final Master wrote:The description should also include the numbers by which shield expertise increases the resists/damage by, but I don't know how to code that properly. I thought I should bring that up.
Perhaps "... and increases your physical save by 4 and you spell save by 2 per talent point"?

Code: Select all

newTalent{
	name = "Shield Expertise",
[snip]
	on_unlearn = function(self, t)
		self.combat_physresist = self.combat_physresist + 4
		self.combat_spellresist = self.combat_spellresist + 2
}
Uh, +4 and +2 also when unlearning the skill?

Re: Needed Talent Description Updates

Posted: Tue Oct 12, 2010 8:06 pm
by edge2054
Talents adjust your stats as soon as you put points into them, not on hitting escape.

In other words without that on unlearn you could do left right left right left right to learn and unlearn and end up with infinite save bonuses.

Re: Needed Talent Description Updates

Posted: Tue Oct 12, 2010 8:19 pm
by Final Master
I think he was pointing out that it's supposed to be -4 and -2 instead of +.

Re: Needed Talent Description Updates

Posted: Tue Oct 12, 2010 8:27 pm
by edge2054
Ahh.. right. I'll file a bug report on it then.

Re: Needed Talent Description Updates

Posted: Tue Oct 12, 2010 8:54 pm
by Repton
Final Master wrote: Overpower:

Code: Select all

info = function(self, t)
		return ([[Hits the target with your weapon and two shield strikes doing %d%% damage, trying to overpower your target.
		If the last attack hits, the target is knocked back. The chance for knock back increases with talent level.]]):format(100 * self:combatTalentWeaponDamage(t, 0.8, 1.3, self:getTalentLevel(self.T_SHIELD_EXPERTISE)))
	end,
Does the damage percent apply to the weapon attack, or the shield strikes, or both?

Re: Needed Talent Description Updates

Posted: Tue Oct 12, 2010 8:55 pm
by Final Master
It apparently reads it for both, however the amount of damage it will deal is based on your shield's special combat modifier for the bash, and then your weapon damage range for the weapon strikes.

Re: Needed Talent Description Updates

Posted: Sat Oct 16, 2010 9:50 pm
by Mithril
There are a large number of talents that cause stun or freeze. However, from the description of these it appears that additional talent points will only add a few more points of secondary damage. Stun/freeze chance or duration are not mentioned as being affected. As such it seems pointless to buy more than 1 level in these talents. Is this correct? If it is not then maybe someone who can understand the source code could kindly provide an updated description?

Re: Needed Talent Description Updates

Posted: Sat Oct 16, 2010 9:56 pm
by Burb Lulls
Shield pummel, at least, has an improved stun chance with greater talent level. I'm no coder, but I can see the getTalentLevel in there.

Code: Select all

-- Try to stun !
		if hit then
			if target:checkHit(self:combatAttack(shield.special_combat), target:combatPhysicalResist(), 0, 95, 5 - self:getTalentLevel(t) / 2) and target:canBe("stun") then
				target:setEffect(target.EFF_STUNNED, 2 + self:getTalentLevel(t) / 2, {})
			else
				game.logSeen(target, "%s resists the shield bash!", target.name:capitalize())
			end

Re: Needed Talent Description Updates

Posted: Sat Oct 16, 2010 10:21 pm
by Grey
I'm almost certain from experience that Stunning Blow has increased stun lengths with talent level too. Possibly Dual Strikes as well.

In addition it doesn't say anywhere in the game how long Stone Skin lasts for.

Re: Needed Talent Description Updates

Posted: Sat Oct 16, 2010 10:28 pm
by Mithril
Burb Lulls wrote:Shield pummel, at least, has an improved stun chance with greater talent level. I'm no coder, but I can see the getTalentLevel in there.
I think a revised version of Shield Pummel is mentioned above which includes that more levels increases duration. But there are other stun/freeze talents where it is unclear if increasing talent levels affects the important stun/freeze effect. If it does not then one only needs one level in these talents. This is unclear for at least these talents:

Stunning Blow for Berserkers where nothing is stated.

Dual Strike and Dirty Fighting for Rouges. Dirty fighting mentions that duration increases but nothing is stated for Dual Strike.

Some of the Cold based spells for mages.

Re: Needed Talent Description Updates

Posted: Mon Oct 25, 2010 4:44 pm
by yufra
Hide in Plain Sight is actually X% per visible creature, so the percentage drops geometrically with multiple NPCs (as it should). The description could read:

Code: Select all

	info = function(self, t)
		return ([[You have learned how to be stealthly even when in plain sight of your foes, with a %d%% chance of success per visible creature (%d%% for two creatures, etc.). This also resets the cooldown of your stealth talent.]]):
		format(40 + self:getTalentLevel(t) * 7), math.pow(40 + self:getTalentLevel(t) * 7, 2)/100)
	end,