diff --git a/game/modules/tome/data/birth/worlds.lua b/game/modules/tome/data/birth/worlds.lua index b71c5b07494438941c3bc7e1ea6a28bbeb00352d..9200e72cb2763627170505a20cae307c665e275d 100644 --- a/game/modules/tome/data/birth/worlds.lua +++ b/game/modules/tome/data/birth/worlds.lua @@ -95,6 +95,8 @@ newBirthDescriptor{ if actor.achievement_data[id] and actor.achievement_data[id].nb > 0 then return true end -- Lumberjack massacre if (actor:hasQuest("lumberjack-cursed") and (actor:hasQuest("lumberjack-cursed").lumberjacks_died or 0) >= 20) then return true end + -- Slave arena + if (actor:hasQuest("ring-of-blood") and actor:hasQuest("ring-of-blood"):isStatus(engine.Quest.DONE)) and actor:hasQuest("ring-of-blood"):isCompleted("won-fight") then return true end return false end, stores_restock_by_level = 1, diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua index 86918cf0e3de95b4810ea3451efc81b5979da090..ea6746697a465b7c5928e42d7bdef4726afcf66a 100644 --- a/game/modules/tome/data/damage_types.lua +++ b/game/modules/tome/data/damage_types.lua @@ -4464,7 +4464,9 @@ newDamageType{ if target == src then target:incPositive(2) elseif target:reactionToward(src) < 0 then - target:setEffect(target.EFF_BLINDING_LIGHT, 1, {src=src, power=dam.dam, apply_power=dam.pow, no_ct_effect=true}) + if target:canBe("blind") then + target:setEffect(target.EFF_BLINDING_LIGHT, 1, {src=src, power=dam.dam, apply_power=dam.pow, no_ct_effect=true}) + end DamageType:get(DamageType.LIGHT).projector(src, x, y, DamageType.LIGHT, dam.dam, state) end end diff --git a/game/modules/tome/data/talents/celestial/black-sun.lua b/game/modules/tome/data/talents/celestial/black-sun.lua index 68737d260a3be2b5fbfef1af44dac49efd147f27..c8dfc730998f667546094412c80db54ab43ccc5e 100644 --- a/game/modules/tome/data/talents/celestial/black-sun.lua +++ b/game/modules/tome/data/talents/celestial/black-sun.lua @@ -22,7 +22,7 @@ local Object = require "mod.class.Object" newTalent{ name = "Breach", short_name = "FALLEN_BREACH", type = {"celestial/black-sun", 1}, - require = str_req_high1, + require = divi_str_req_high1, points = 5, cooldown = 12, positive = -15, @@ -136,7 +136,7 @@ The damage will increase with your Spellpower.]]): newTalent{ name = "Devourer Stance", type = {"celestial/black-sun", 2}, - require = str_req_high2, + require = divi_str_req_high2, points = 5, cooldown = 15, positive = 10, @@ -155,7 +155,7 @@ The damage will increase with your Spellpower.]]):tformat(t.getDuration(self,t), newTalent{ name = "Singularity Armor", type = {"celestial/black-sun", 3}, - require = str_req_high3, + require = divi_str_req_high3, points = 5, mode = "sustained", sustain_positive = 20, @@ -191,7 +191,7 @@ newTalent{ newTalent{ name = "Doom Spiral", type = {"celestial/black-sun", 4}, - require = str_req_high4, + require = divi_str_req_high4, points = 5, random_ego = "attack", cooldown = 9, diff --git a/game/modules/tome/data/talents/celestial/celestial.lua b/game/modules/tome/data/talents/celestial/celestial.lua index 4f6e19d8bdf68866690587bacc2d9f91d205463b..4e1975932d35cbde685ee7d997835d11ea24c93e 100644 --- a/game/modules/tome/data/talents/celestial/celestial.lua +++ b/game/modules/tome/data/talents/celestial/celestial.lua @@ -87,6 +87,28 @@ divi_req_high5 = { level = function(level) return 26 + (level-1) end, } +-- Used by Fallen Black Sun tree +divi_str_req_high1 = { + stat = { str=function(level) return 22 + (level-1) * 2 end }, + level = function(level) return 10 + (level-1) end, +} +divi_str_req_high2 = { + stat = { str=function(level) return 30 + (level-1) * 2 end }, + level = function(level) return 14 + (level-1) end, +} +divi_str_req_high3 = { + stat = { str=function(level) return 38 + (level-1) * 2 end }, + level = function(level) return 18 + (level-1) end, +} +divi_str_req_high4 = { + stat = { str=function(level) return 46 + (level-1) * 2 end }, + level = function(level) return 22 + (level-1) end, +} +divi_str_req_high5 = { + stat = { str=function(level) return 54 + (level-1) * 2 end }, + level = function(level) return 26 + (level-1) end, +} + load("/data/talents/celestial/chants.lua") load("/data/talents/celestial/sunlight.lua") load("/data/talents/celestial/sun.lua") diff --git a/game/modules/tome/data/talents/celestial/darkside.lua b/game/modules/tome/data/talents/celestial/darkside.lua index 84a5f2c43a90a037f2a73b669d69dbf2fd118f62..1034a1492920c3fc95354603dfd1ecb2be194289 100644 --- a/game/modules/tome/data/talents/celestial/darkside.lua +++ b/game/modules/tome/data/talents/celestial/darkside.lua @@ -123,7 +123,7 @@ newTalent{ info = function(self, t) local range = t.range(self, t) - return ([[Fade into the darkness and reappear elsewhere within range %d. When you emerge from the shadows, you are accompanied by a flash of light, dealing %0.2f damage to enemies in radius 1. + return ([[Fade into the darkness and reappear elsewhere within range %d. When you emerge from the shadows, you are accompanied by a bright flash, dealing %0.2f light damage to enemies in radius 1. The damage will increase with your Spellpower.]]):tformat(range, damDesc(self, DamageType.LIGHT, t.getDamage(self, t))) end, } @@ -171,7 +171,7 @@ newTalent{ local damage = t.getDamage(self, t)*100 local mult = t.getMult(self, t) return ([[Put all of your physical and magical might into one devastating attack. -Strike all adjacent enemies for %d%% damage and daze them (using your highest power) for 3 turns. +Strike all adjacent enemies for %d%% weapon damage and daze them (using your highest power) for 3 turns. Using this talent consumes all of your Positive Energy and prevents you from generating positive energy for 5 turns. Every point of positive energy increases the damage by %.2f%%. diff --git a/game/modules/tome/data/talents/cursed/bloodstained.lua b/game/modules/tome/data/talents/cursed/bloodstained.lua index 5010957985b595c15464516c2da8880caf8e4806..c7ef439a00a3337e6e1c01028502dca0ff85b93b 100644 --- a/game/modules/tome/data/talents/cursed/bloodstained.lua +++ b/game/modules/tome/data/talents/cursed/bloodstained.lua @@ -102,7 +102,7 @@ newTalent{ local damrange = self:combatDamageRange(sw) dam = rng.range(dam, dam * damrange) dam = dam * t.getBleedDamage(self, t) - target:setEffect(target.EFF_CUT, 5, {power=dam / 5, src=self, apply_power=self:combatPhysicalpower()}) + target:setEffect(target.EFF_CUT, 5, {power=dam / 5, src=self}) end end end @@ -188,12 +188,11 @@ newTalent{ if not target then return end if not hitted then return end if target:canBe('cut') then - target:setEffect(target.EFF_CUT, 5, {power=dam * t.getBleed(self, t) / 5, src=self, apply_power=self:combatPhysicalpower()}) + target:setEffect(target.EFF_CUT, 5, {power=dam * t.getBleed(self, t) / 5, src=self}) end end, info = function(self, t) return ([[Your melee attacks also cause the target to bleed for %d%% of the damage dealt over five turns. -The bleed chance increases with your Physical Power. Each point in Bloodstained talents reduces the amount of damage you take from bleed effects by 2%%]]): tformat(t.getBleed(self, t)*100) diff --git a/game/modules/tome/data/talents/cursed/cursed.lua b/game/modules/tome/data/talents/cursed/cursed.lua index 021f5b04a2cfe48b88268ae09b62ea9ff8782f1c..7433e69b6afafb57bbe0cce5f0d1529e3efe8023 100644 --- a/game/modules/tome/data/talents/cursed/cursed.lua +++ b/game/modules/tome/data/talents/cursed/cursed.lua @@ -42,9 +42,9 @@ newTalentType{ allow_random=false, is_mind=true, type="cursed/curses", name = _t newTalentType{ allow_random=true, is_mind=true, type="cursed/fears", name = _t"fears", description = _t"Use the fear that lies at the heart of your curse to attack the minds of your enemies." } -- Fallen Class Evolution -newTalentType{ allow_random=true, type="cursed/bloodstained", name = "Bloodstained", description = "You, like your weapons, are tainted forever." } -newTalentType{ allow_random=true, type="cursed/crimson-templar", name = "Crimson Templar", description = "Blood is power. Let the rivers run red." } -newTalentType{ allow_random=true, generic=true, type="cursed/self-hatred", name = "Self-Hatred", description = "Of all the things in this dark world, you are the worst. Torment yourself and find the power therein." } +newTalentType{ allow_random=true, is_mind=true, type="cursed/bloodstained", name = "Bloodstained", description = "You, like your weapons, are tainted forever." } +newTalentType{ allow_random=true, is_mind=true, type="cursed/crimson-templar", name = "Crimson Templar", description = "Blood is power. Let the rivers run red." } +newTalentType{ allow_random=true, is_mind=true, generic=true, type="cursed/self-hatred", name = "Self-Hatred", description = "Of all the things in this dark world, you are the worst. Torment yourself and find the power therein." } newTalentType{ allow_random=false, type="cursed/other", name = "Cursed", description = "Hate-powered abilities that don't belong anywhere else." } cursed_wil_req1 = { diff --git a/game/modules/tome/data/talents/cursed/self-hatred.lua b/game/modules/tome/data/talents/cursed/self-hatred.lua index fd737a2d21138113dcca890df3f3a01499dae120..46bbe0f9867076b33e03cf3c55d2f9fee7d9ecac 100644 --- a/game/modules/tome/data/talents/cursed/self-hatred.lua +++ b/game/modules/tome/data/talents/cursed/self-hatred.lua @@ -39,7 +39,7 @@ newTalent{ end, action = function(self, t) local damage = t.getDamage(self, t) - self:setEffect(self.EFF_CUT, 5, {src=self, power=damage/5, no_ct_effect=true, unresistable=true}) + self:setEffect(self.EFF_SELF_JUDGEMENT, 5, {src=self, power=damage/5, no_ct_effect=true, unresistable=true}, true) game:playSoundNear(self, "talents/fallen_chop") return true end, @@ -58,7 +58,7 @@ newTalent{ local regen = t.getHate(self, t) return ([[At the start of each turn, if you're bleeding, you gain %d hate. -You can activate this talent to quickly draw a blade across your skin, bleeding yourself for a small portion of your maximum life (%0.2f damage) over the next 5 turns. This bleed cannot be resisted. +You can activate this talent to quickly draw a blade across your skin, bleeding yourself for a small portion of your maximum life (%0.2f damage) over the next 5 turns. This bleed cannot be resisted or removed, but can be reduced by Bloodstained. #{italic}#Pain is just about the only thing you can still feel.#{normal}#]]):tformat(regen, damage) end, @@ -137,6 +137,7 @@ newTalent{ callbackOnActBase = function(self, t) -- Pay life local price = t.getPrice(self, t) + game:delayedLogDamage(self, self, 0, ("#CRIMSON#%d#LAST#"):tformat(self.max_life * price / 100), false) self:takeHit(self.max_life * price / 100, self, {special_death_msg="tore themself apart"}) t.surge(self, t) end, @@ -147,7 +148,7 @@ newTalent{ Immediately upon activation and every turn while this talent is active, your detrimental effects expire and your talents cool down as if an extra turn had passed. This bonus cooldown occurs even if your talents would not normally cool down. This talent deactivates automatically upon rest. -This strength comes at a cost: you lose %d%% of your maximum life every turn. +This strength comes at a cost: you lose %d%% of your maximum life every turn. This can kill you. #{italic}#If you're lucky, this will take everything you've got.#{normal}#]]):tformat(price) end, diff --git a/game/modules/tome/data/talents/uber/wil.lua b/game/modules/tome/data/talents/uber/wil.lua index 63913cb579ff3e183afc054dd5643e81129c0c6c..50b7305608bcf9429a2fc7c8f3ad16c4da15440a 100644 --- a/game/modules/tome/data/talents/uber/wil.lua +++ b/game/modules/tome/data/talents/uber/wil.lua @@ -333,10 +333,10 @@ uberTalent{ t.learnAndMaster(self, "cursed/bloodstained", true, 1.3) t.learnAndMaster(self, "celestial/darkside", true, 1.3) - t.learnAndMaster(self, "cursed/gloom", self:knowTalentType("celestial/radiance"), 1.3) + t.learnAndMaster(self, "cursed/gloom", self:knowTalentType("celestial/radiance"), 1.3 + (self.__increased_talent_types["celestial/radiance"] and 0.2 or 0)) - t.learnAndMaster(self, "cursed/crimson-templar", self:knowTalentType("celestial/guardian"), 1.3) - t.learnAndMaster(self, "celestial/black-sun", self:knowTalentType("celestial/crusader"), 1.3) + t.learnAndMaster(self, "cursed/crimson-templar", self:knowTalentType("celestial/guardian"), 1.3 + (self.__increased_talent_types["celestial/guardian"] and 0.2 or 0)) + t.learnAndMaster(self, "celestial/black-sun", self:knowTalentType("celestial/crusader"), 1.3 + (self.__increased_talent_types["celestial/crusader"] and 0.2 or 0)) t.learnAndMaster(self, "cursed/self-hatred", true, 1.3) t.learnAndMaster(self, "celestial/dirge", true, 1.3) @@ -348,6 +348,12 @@ uberTalent{ ["technique/2hweapon-assault"] = true, ["technique/shield-offense"] = true, } + if self.__increased_talent_types["technique/2hweapon-assault"] then + self.unused_talents_types = self.unused_talents_types + 1 + end + if self.__increased_talent_types["technique/shield-offense"] then + self.unused_talents_types = self.unused_talents_types + 1 + end t.unlearnTalents(self, t, removes) self:attr("swap_combat_techniques_hate", 1) diff --git a/game/modules/tome/data/timed_effects/magical.lua b/game/modules/tome/data/timed_effects/magical.lua index bfcfd5d9a097501857f0f96e968177231c7cdef8..ca65a7db2d388b52547dde3cc905da10357136d0 100644 --- a/game/modules/tome/data/timed_effects/magical.lua +++ b/game/modules/tome/data/timed_effects/magical.lua @@ -3159,7 +3159,7 @@ newEffect{ on_gain = function(self, err) return _t"#Target# is filled with the Sun's fury!", _t"+Sun's Vengeance" end, on_lose = function(self, err) return _t"#Target#'s solar fury subsides.", _t"-Sun's Vengeance" end, callbackOnKill = function(self, eff, src, msg) - if src.getHate and src:getHate() > 0 then + if src.knowTalent and src:knowTalent(src.T_HATE_POOL) then game:setAllowedBuild("paladin_fallen", true) end end,