Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • amagad/t-engine4
  • HirumaKai/t-engine4
  • Hogulus/t-engine4
  • Inkie/t-engine4
  • Liberty/t-engine4
  • Lokean/t-engine4
  • Mawootad/t-engine4
  • Michelle/t-engine4
  • MrFrog/t-engine4
  • Nagyhal/t-engine4
  • Recaiden/t-engine4
  • RootOfAllThings/t-engine4
  • Sebsebeleb/t-engine4
  • Sheila/t-engine4
  • Shibari/t-engine4
  • Stof/t-engine4
  • Umbral/t-engine4
  • tome/t-engine4
  • 0player/t-engine4
  • BreezyIdiot/t-engine4
  • Bunny/t-engine4
  • Effigy/t-engine4
  • Hachem_Muche/t-engine4
  • razakai/t-engine4
  • Zireael/t-engine4
  • cinornu/t-engine4
  • edge2054/t-engine4
  • gordaxx727/t-engine4
  • grayswandir/t-engine4
  • helminthauge/t-engine4
  • housepet/t-engine4
  • minqmay/t-engine4
  • nsrr/t-engine4
  • orange/t-engine4
  • otowakotori/t-engine4
  • purequestion/t-engine4
  • rexorcorum/t-engine4
  • rgeens/t-engine4
  • sageacrin/t-engine4
  • stuntofthelitter/t-engine4
  • tiger_eye/t-engine4
  • xelivous/t-engine4
  • yutio888/t-engine4
43 results
Show changes
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
newTalent{ newTalent{
name = "Hymn of Shadows", name = "Hymn of Shadows",
type = {"celestial/other", 1}, type = {"celestial/hymns-hymns", 1},
mode = "sustained", mode = "sustained",
hide = true, hide = true,
require = divi_req1, require = divi_req1,
...@@ -89,7 +89,7 @@ newTalent{ ...@@ -89,7 +89,7 @@ newTalent{
newTalent{ newTalent{
name = "Hymn of Detection", name = "Hymn of Detection",
type = {"celestial/other", 1}, type = {"celestial/hymns-hymns", 1},
mode = "sustained", mode = "sustained",
hide = true, hide = true,
require = divi_req1, require = divi_req1,
...@@ -162,7 +162,7 @@ newTalent{ ...@@ -162,7 +162,7 @@ newTalent{
newTalent{ newTalent{
name = "Hymn of Perseverance", name = "Hymn of Perseverance",
type = {"celestial/other",1}, type = {"celestial/hymns-hymns",1},
mode = "sustained", mode = "sustained",
hide = true, hide = true,
require = divi_req1, require = divi_req1,
...@@ -230,7 +230,7 @@ newTalent{ ...@@ -230,7 +230,7 @@ newTalent{
-- Depreciated, but retained for compatability. -- Depreciated, but retained for compatability.
newTalent{ newTalent{
name = "Hymn of Moonlight", name = "Hymn of Moonlight",
type = {"celestial/other",1}, type = {"celestial/hymns-hymns",1},
mode = "sustained", mode = "sustained",
require = divi_req4, require = divi_req4,
points = 5, points = 5,
...@@ -301,6 +301,9 @@ newTalent{ ...@@ -301,6 +301,9 @@ newTalent{
require = divi_req1, require = divi_req1,
points = 5, points = 5,
mode = "passive", mode = "passive",
passives = function(self, t)
self:setTalentTypeMastery("celestial/hymns-hymns", self:getTalentMastery(t))
end,
on_learn = function(self, t) on_learn = function(self, t)
self:learnTalent(self.T_HYMN_OF_SHADOWS, true, nil, {no_unlearn=true}) self:learnTalent(self.T_HYMN_OF_SHADOWS, true, nil, {no_unlearn=true})
self:learnTalent(self.T_HYMN_OF_DETECTION, true, nil, {no_unlearn=true}) self:learnTalent(self.T_HYMN_OF_DETECTION, true, nil, {no_unlearn=true})
...@@ -339,7 +342,7 @@ newTalent{ ...@@ -339,7 +342,7 @@ newTalent{
newTalent{ newTalent{
name = "Hymn Incantor", name = "Hymn Incantor",
type = {"celestial/hymns", 5}, type = {"celestial/hymns", 2},
require = divi_req2, require = divi_req2,
points = 5, points = 5,
mode = "passive", mode = "passive",
...@@ -354,7 +357,7 @@ newTalent{ ...@@ -354,7 +357,7 @@ newTalent{
-- Remember that Hymns can be swapped instantly. -- Remember that Hymns can be swapped instantly.
newTalent{ newTalent{
name = "Hymn Adept", name = "Hymn Adept",
type = {"celestial/hymns", 6}, type = {"celestial/hymns", 3},
require = divi_req3, require = divi_req3,
points = 5, points = 5,
mode = "passive", mode = "passive",
...@@ -376,7 +379,7 @@ newTalent{ ...@@ -376,7 +379,7 @@ newTalent{
newTalent{ newTalent{
name = "Hymn Nocturnalist", name = "Hymn Nocturnalist",
type = {"celestial/hymns", 7}, type = {"celestial/hymns", 4},
require = divi_req4, require = divi_req4,
points = 5, points = 5,
mode = "sustained", mode = "sustained",
......
...@@ -23,9 +23,9 @@ newTalent{ ...@@ -23,9 +23,9 @@ newTalent{
mode = "passive", mode = "passive",
points = 5, points = 5,
require = cuns_req1, require = cuns_req1,
critpower = function(self, t) return self:combatTalentScale(t, 7.5, 20, 0.75) end, critpower = function(self, t) return self:combatTalentScale(t, 7.5, 20, 0.1) end,
-- called by _M:combatCrit in mod.class.interface.Combat.lua -- called by _M:combatCrit in mod.class.interface.Combat.lua
getCriticalChance = function(self, t) return self:combatTalentScale(t, 2.3, 7.5, 0.75) end, getCriticalChance = function(self, t) return self:combatTalentScale(t, 2.3, 7.5, 0.1) end,
passives = function(self, t, p) passives = function(self, t, p)
self:talentTemporaryValue(p, "combat_critical_power", t.critpower(self, t)) self:talentTemporaryValue(p, "combat_critical_power", t.critpower(self, t))
end, end,
...@@ -100,7 +100,7 @@ newTalent{ ...@@ -100,7 +100,7 @@ newTalent{
cooldown = 30, cooldown = 30,
sustain_stamina = 50, sustain_stamina = 50,
tactical = { BUFF = 2 }, tactical = { BUFF = 2 },
drain_stamina = 6, drain_stamina = 4,
no_break_stealth = true, no_break_stealth = true,
no_energy = true, no_energy = true,
getSpeed = function(self, t) return self:combatTalentScale(t, 0.10, 0.30, 0.75) end, getSpeed = function(self, t) return self:combatTalentScale(t, 0.10, 0.30, 0.75) end,
......
...@@ -154,7 +154,7 @@ newTalent{ ...@@ -154,7 +154,7 @@ newTalent{
require = cuns_req2, require = cuns_req2,
mode = "passive", mode = "passive",
points = 5, points = 5,
getMultiplier = function(self, t) return self:combatTalentScale(t, 0.15, 0.40) end, getMultiplier = function(self, t) return self:combatTalentScale(t, 0.15, 0.40, 0.1) end,
getDuration = function(self,t) if self:getTalentLevel(t) >= 3 then return 4 else return 3 end end, getDuration = function(self,t) if self:getTalentLevel(t) >= 3 then return 4 else return 3 end end,
passives = function(self, t, p) -- attribute that increases crit multiplier vs targets that cannot see us passives = function(self, t, p) -- attribute that increases crit multiplier vs targets that cannot see us
self:talentTemporaryValue(p, "unseen_critical_power", t.getMultiplier(self, t)) self:talentTemporaryValue(p, "unseen_critical_power", t.getMultiplier(self, t))
......
...@@ -148,6 +148,19 @@ newTalent{ ...@@ -148,6 +148,19 @@ newTalent{
local x, y, target = self:getTarget(tg) local x, y, target = self:getTarget(tg)
if not target or not self:canProject(tg, x, y) then return nil end if not target or not self:canProject(tg, x, y) then return nil end
-- Leap
local tg = {type="hit", range=t.getDist(self,t)}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
local _ _, x, y = self:canProject(tg, x, y)
if game.level.map(x, y, Map.ACTOR) then
x, y = util.findFreeGrid(x, y, 1, true, {[Map.ACTOR]=true})
if not x then return end
end
if game.level.map:checkAllEntities(x, y, "block_move") then return end
-- Modify shield combat to use dex. -- Modify shield combat to use dex.
local combat = table.clone(shield_combat, true) local combat = table.clone(shield_combat, true)
if combat.dammod.str and combat.dammod.str > 0 then if combat.dammod.str and combat.dammod.str > 0 then
...@@ -167,19 +180,6 @@ newTalent{ ...@@ -167,19 +180,6 @@ newTalent{
end end
end end
-- Leap
local tg = {type="hit", range=t.getDist(self,t)}
local x, y, target = self:getTarget(tg)
if not x or not y then return nil end
local _ _, x, y = self:canProject(tg, x, y)
if game.level.map(x, y, Map.ACTOR) then
x, y = util.findFreeGrid(x, y, 1, true, {[Map.ACTOR]=true})
if not x then return end
end
if game.level.map:checkAllEntities(x, y, "block_move") then return end
local ox, oy = self.x, self.y local ox, oy = self.x, self.y
self:move(x, y, true) self:move(x, y, true)
if config.settings.tome.smooth_move > 0 then if config.settings.tome.smooth_move > 0 then
......
...@@ -601,7 +601,7 @@ newTalent{ ...@@ -601,7 +601,7 @@ newTalent{
for i = 1, #targets do for i = 1, #targets do
local target = targets[i] local target = targets[i]
game.target.forced = {target.x, target.y, target} game.target.forced = {target.x, target.y, target}
local targets = self:archeryAcquireTargets({type = "hit", speed = 200}, {one_shot=true, infinite=true, no_energy = fired}) local targets = self:archeryAcquireTargets({type = "hit", speed = 200}, {one_shot=true, infinite=true, no_energy = true})
if targets then if targets then
local params = table.clone(shot_params_base) local params = table.clone(shot_params_base)
local target = targets.dual and targets.main[1] or targets[1] local target = targets.dual and targets.main[1] or targets[1]
...@@ -699,8 +699,8 @@ newTalent{ ...@@ -699,8 +699,8 @@ newTalent{
self:archeryShoot(targets, t, nil, {mult=dam}) self:archeryShoot(targets, t, nil, {mult=dam})
if target:hasEffect(target.EFF_MARKED) or self:isTalentActive(self.T_CONCEALMENT) then if target:hasEffect(target.EFF_MARKED) or self:isTalentActive(self.T_CONCEALMENT) then
local targets2 = self:archeryAcquireTargets(tg, {multishots=2, x=target.x, y=target.y}) local targets2 = self:archeryAcquireTargets(tg, {multishots=2, x=target.x, y=target.y, no_energy = true})
self:archeryShoot(targets2, t, nil, {mult=dam*0.25}) if targets2 then self:archeryShoot(targets2, t, nil, {mult=dam*0.25}) end
end end
return true return true
......
...@@ -141,7 +141,7 @@ newTalent{ ...@@ -141,7 +141,7 @@ newTalent{
end, end,
info = function(self, t) info = function(self, t)
local defense = t.getDefense(self,t) local defense = t.getDefense(self,t)
return ([[You learn to maintain your agility and manage your combat posture while wearing light armour. When wearing armour no heavier than leather, you gain %d Defense, %d%% Armour hardiness, and %d%% reduced Fatigue. return ([[You learn to maintain your agility and manage your combat posture while wearing light armour. When wearing armour no heavier than leather in your main body slot, you gain %d Defense, %d%% Armour hardiness, and %d%% reduced Fatigue.
In addition, when you step adjacent to a (visible) enemy, you use the juxtaposition to increase your total Defense by %d for 2 turns. In addition, when you step adjacent to a (visible) enemy, you use the juxtaposition to increase your total Defense by %d for 2 turns.
The Defense bonus scales with your Dexterity.]]): The Defense bonus scales with your Dexterity.]]):
format(defense, t.getArmorHardiness(self,t), t.getFatigue(self, t, true), defense/2) format(defense, t.getArmorHardiness(self,t), t.getFatigue(self, t, true), defense/2)
......
...@@ -26,8 +26,10 @@ newEntity{ base="FLOATING_ROCKS", define_as = "WORMHOLE", nice_tiler = false, ...@@ -26,8 +26,10 @@ newEntity{ base="FLOATING_ROCKS", define_as = "WORMHOLE", nice_tiler = false,
name = "unstable wormhole", name = "unstable wormhole",
display = '*', color = colors.GREY, display = '*', color = colors.GREY,
force_clone = true, force_clone = true,
damage_project = function(self, src, x, y, type, dam) damage_project = function(self, src, x, y, type, dam, source_talent)
if type ~= engine.DamageType.PHYSICAL and game.party:hasMember(src) and not self.change_level then local st = nil
if source_talent then st = game.player:getTalentFromId(source_talent) end
if st and st.is_spell and game.party:hasMember(src) and not self.change_level then
self.change_level = 1 self.change_level = 1
self.name = "stable wormhole" self.name = "stable wormhole"
game.logSeen(src, "#VIOLET#The wormhole absorbs energies and stabilizes. You can now use it to travel.") game.logSeen(src, "#VIOLET#The wormhole absorbs energies and stabilizes. You can now use it to travel.")
......
...@@ -590,9 +590,8 @@ function _M:drawDialog(kind, actor_to_compare) ...@@ -590,9 +590,8 @@ function _M:drawDialog(kind, actor_to_compare)
if player.die_at ~= 0 or (actor_to_compare and actor_to_compare.die_at ~=0) then if player.die_at ~= 0 or (actor_to_compare and actor_to_compare.die_at ~=0) then
text = text .. " #a08080#[" .. compare_fields(player, actor_to_compare, "die_at", "die:%+d","%+.0f", 1, true) .. "]" text = text .. " #a08080#[" .. compare_fields(player, actor_to_compare, "die_at", "die:%+d","%+.0f", 1, true) .. "]"
end end
if player.life < 0 then self:mouseTooltip(self.TOOLTIP_LIFE, s:drawColorStringBlended(self.font, ("#c00000#Life : #00ff00#???/%s"):format(text), w, h, 255, 255, 255, true)) h = h + self.font_h self:mouseTooltip(self.TOOLTIP_LIFE, s:drawColorStringBlended(self.font, ("#c00000#Life : #00ff00#%d/%s"):format(player.life, text), w, h, 255, 255, 255, true)) h = h + self.font_h
else self:mouseTooltip(self.TOOLTIP_LIFE, s:drawColorStringBlended(self.font, ("#c00000#Life : #00ff00#%d/%s"):format(player.life, text), w, h, 255, 255, 255, true)) h = h + self.font_h
end
-- general resources -- general resources
for res, res_def in ipairs(player.resources_def) do for res, res_def in ipairs(player.resources_def) do
local rname = res_def.short_name local rname = res_def.short_name
......
...@@ -22,8 +22,8 @@ long_name = "Tales of Maj'Eyal: Age of Ascendancy" ...@@ -22,8 +22,8 @@ long_name = "Tales of Maj'Eyal: Age of Ascendancy"
short_name = "tome" short_name = "tome"
author = { "DarkGod", "darkgod@te4.org" } author = { "DarkGod", "darkgod@te4.org" }
homepage = "http://te4.org/" homepage = "http://te4.org/"
version = {1,5,0} version = {1,5,1}
engine = {1,5,0,"te4"} engine = {1,5,1,"te4"}
description = [[ description = [[
Welcome to Maj'Eyal. Welcome to Maj'Eyal.
......
...@@ -162,6 +162,8 @@ function _M:login() ...@@ -162,6 +162,8 @@ function _M:login()
if self.steam_token_email then if self.steam_token_email then
self:command("STM_ EMAIL", self.steam_token_email) self:command("STM_ EMAIL", self.steam_token_email)
self:read("200") self:read("200")
self:command("STM_ NEWS", self.steam_token_news and 'yes' or 'no')
self:read("200")
end end
self:command("STM_ AUTH", self.steam_token) self:command("STM_ AUTH", self.steam_token)
if not self:read("200") then if not self:read("200") then
...@@ -303,7 +305,10 @@ end ...@@ -303,7 +305,10 @@ end
function _M:orderSteamLogin(o) function _M:orderSteamLogin(o)
self.steam_token = o.token self.steam_token = o.token
self.steam_token_name = o.name self.steam_token_name = o.name
if o.email and #o.email > 1 then self.steam_token_email = o.email end if o.email and #o.email > 1 then
self.steam_token_email = o.email
self.steam_token_news = o.news
end
if not self.sock then cprofile.pushEvent("e='Disconnected'") return end if not self.sock then cprofile.pushEvent("e='Disconnected'") return end
......