Skip to content
Snippets Groups Projects
Commit 9a21c598 authored by dg's avatar dg
Browse files

Talents ids are now strings instead of numbers, this should make savefiles more compatible proof

Conveyance's space destabilization effect is now based on your spellpower


git-svn-id: http://svn.net-core.org/repos/t-engine4@1200 51575b47-30f0-44d4-a5cc-537603b46e54
parent e84df1f1
No related branches found
No related tags found
No related merge requests found
......@@ -77,11 +77,11 @@ function _M:newTalent(t)
local info = t.info
t.info = function(self, t) return info(self, t):gsub("\n\t+", "\n") end
table.insert(self.talents_def, t)
t.id = #self.talents_def
assert(not self["T_"..t.short_name], "talent already exists with id T_"..t.short_name)
self["T_"..t.short_name] = #self.talents_def
print("[TALENT]", t.name, t.short_name, #self.talents_def)
t.id = "T_"..t.short_name
self.talents_def[t.id] = t
assert(not self[t.id], "talent already exists with id T_"..t.short_name)
self[t.id] = t.id
print("[TALENT]", t.name, t.short_name, t.id)
-- Register in the type
table.insert(self.talents_types_def[t.type[1]].talents, t)
......
......@@ -130,7 +130,11 @@ local function generate_rewards()
local answers = {}
if reward.stats then
for i = 1, #npc.stats_def do if reward.stats[i] then
local doit = function(npc, player) player.inc_stats[i] = (player.inc_stats[i] or 0) + reward.stats[i]; player.changed = true end
local doit = function(npc, player)
player.inc_stats[i] = (player.inc_stats[i] or 0) + reward.stats[i]
player.changed = true
player:hasQuest(npc.quest_id).reward_message = ("improved %s by +%d"):format(npc.stats_def[i].name, reward.stats[i])
end
answers[#answers+1] = {("[Improve %s by +%d]"):format(npc.stats_def[i].name, reward.stats[i]), jump="done", action=doit}
end end
end
......@@ -142,6 +146,7 @@ local function generate_rewards()
local doit = function(npc, player)
player:learnTalent(tid, true, level)
if t.hide then player.__show_special_talents[tid] = true end
player:hasQuest(npc.quest_id).reward_message = ("%s talent %s (+%d level(s))"):format(game.player:knowTalent(tid) and "improved" or "learnt", t.name, level)
end
answers[#answers+1] = {("[%s talent %s (+%d level(s))]"):format(game.player:knowTalent(tid) and "Improve" or "Learn", t.name, level), jump="done", action=doit}
end
......@@ -153,6 +158,7 @@ local function generate_rewards()
local doit = function(npc, player)
player:learnTalentType(tt, false)
player:setTalentTypeMastery(tt, mastery)
player:hasQuest(npc.quest_id).reward_message = ("gained talent category %s (at mastery %0.2f)"):format(cat:capitalize().." / "..tt_def.name:capitalize(), mastery)
end
local cat = tt_def.type:gsub("/.*", "")
answers[#answers+1] = {("[Allow training of talent category %s (at mastery %0.2f)]"):format(cat:capitalize().." / "..tt_def.name:capitalize(), mastery), jump="done", action=doit}
......
......@@ -73,10 +73,10 @@ newEntity{
cost = 35,
wielder = {
ranged_project={
[DamageType.FIRE] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.1 * 0.7 end),
[DamageType.ICE] = resolvers.mbonus_material(15, 4, function(e, v) return v * 0.1 * 0.7 end),
[DamageType.ACID] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.1 * 0.7 end),
[DamageType.LIGHTNING] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.1 * 0.7 end),
[DamageType.FIRE] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.1 * 0.7 * 0.3 end),
[DamageType.ICE] = resolvers.mbonus_material(15, 4, function(e, v) return v * 0.1 * 0.7 * 0.3 end),
[DamageType.ACID] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.1 * 0.7 * 0.3 end),
[DamageType.LIGHTNING] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.1 * 0.7 * 0.3 end),
},
},
}
......@@ -241,7 +241,16 @@ kind = {}
name = ""
desc = function(self, who)
local desc = {}
desc[#desc+1] = "Escort the "..self.kind.name.." to the recall portal on level "..self.level_name.."."
if self:isStatus(engine.Quest.DONE) then
desc[#desc+1] = "You successfully escorted the "..self.kind.name.." to the recall portal on level "..self.level_name.."."
if self.reward_message then
desc[#desc+1] = ("As a reward you %s."):format(self.reward_message)
end
elseif self:isStatus(engine.Quest.FAILED) then
desc[#desc+1] = "You failed to protect the "..self.kind.name.." from death by "..self.killing_npc.."."
else
desc[#desc+1] = "Escort the "..self.kind.name.." to the recall portal on level "..self.level_name.."."
end
return table.concat(desc, "\n")
end
......@@ -295,6 +304,7 @@ on_grant = function(self, who)
self.kind.actor.on_die = function(self, who)
game.logPlayer(game.player, "#LIGHT_RED#%s is dead, quest failed!", self.name:capitalize())
game.player:setQuestStatus(self.quest_id, engine.Quest.FAILED)
game.player:hasQuest(self.quest_id).killing_npc = who and who.name or "something"
end
-- Spawn actor
......
......@@ -69,7 +69,7 @@ newTalent{
end
if target ~= self then
target:setEffect(target.EFF_CONTINUUM_DESTABILIZATION, 100 , {power=20 - self:getTalentLevel(t)})
target:setEffect(target.EFF_CONTINUUM_DESTABILIZATION, 100, {power=self:combatSpellpower(0.3)})
end
game:playSoundNear(self, "talents/teleport")
......@@ -137,7 +137,7 @@ newTalent{
end
if target ~= self then
target:setEffect(target.EFF_CONTINUUM_DESTABILIZATION, 100 , {power=20 - self:getTalentLevel(t)})
target:setEffect(target.EFF_CONTINUUM_DESTABILIZATION, 100, {power=self:combatSpellpower(0.3)})
end
game:playSoundNear(self, "talents/teleport")
......
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