diff --git a/game/engines/default/engine/interface/ActorTalents.lua b/game/engines/default/engine/interface/ActorTalents.lua index d2e427dea3a7cae4b310df84379ff63de10419a7..4602116607593edf0ed21edbdb89ad990e51eb0d 100644 --- a/game/engines/default/engine/interface/ActorTalents.lua +++ b/game/engines/default/engine/interface/ActorTalents.lua @@ -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) diff --git a/game/modules/tome/data/chats/escort-quest.lua b/game/modules/tome/data/chats/escort-quest.lua index 658860dd1f36f7e5d1c2674dd65f63905d08036e..f8c924fd82866e6c94c385f50d965ef085938e95 100644 --- a/game/modules/tome/data/chats/escort-quest.lua +++ b/game/modules/tome/data/chats/escort-quest.lua @@ -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} diff --git a/game/modules/tome/data/general/objects/egos/ammo.lua b/game/modules/tome/data/general/objects/egos/ammo.lua index 438fed4c24e6d485ce8c2cc845355c3f661d8532..56f6338c48ad14b2b624789e1d30a0d55020e457 100644 --- a/game/modules/tome/data/general/objects/egos/ammo.lua +++ b/game/modules/tome/data/general/objects/egos/ammo.lua @@ -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), }, }, } diff --git a/game/modules/tome/data/quests/escort-duty.lua b/game/modules/tome/data/quests/escort-duty.lua index 4ee0b2eb7999255bcda08c279d013861702123b8..5d26371accbf3a11c1b339f7afd16241a7165d94 100644 --- a/game/modules/tome/data/quests/escort-duty.lua +++ b/game/modules/tome/data/quests/escort-duty.lua @@ -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 diff --git a/game/modules/tome/data/talents/spells/conveyance.lua b/game/modules/tome/data/talents/spells/conveyance.lua index 06cca04e45e1d4a8b91fb4521c5c117d1057e631..4425f9948aa4025f56871c5c881b8d783ee0e3e9 100644 --- a/game/modules/tome/data/talents/spells/conveyance.lua +++ b/game/modules/tome/data/talents/spells/conveyance.lua @@ -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")