Commit e9cc327c70f07b573301f8be316791c2a8f2ce2f

Authored by DarkGod
2 parents c17756b0 3c0a6d2e

Merge branch '1.7.5-misc' into 'master'

1.7.5 Miscellaneous fixes.

 * FIX: Bullseye now affects more than 0 talents at rank 1.
 * FIX: Collapse can no longer trigger instant critical hits.
 * FIX: Self-Judgement applies against damage from effects, such as Greater Weapon Focus.
 * FIX: Taint of Purging is marked as a quest item like all other alchemist rewards.
 * BALANCE: Change Blood Rush’s bleed calculation to work the same as Blood Bath and Scoundrel.  Lowered bleed multiplier.
 * POSSIBLE FIX: Simplify green no_healing shader check.  Since 0 healing is a yes/no thing, there is no need for old_healwarn
 * QOL: Changed Rockwalk's targeting to not auto-accept because it is a movement skill.

See merge request !783
... ... @@ -6548,7 +6548,7 @@ function _M:getTalentFullDescription(t, addlevel, config, fake_mastery)
6548 6548 end
6549 6549
6550 6550 local d = tstring{}
6551   - d:add({"color",0x6f,0xff,0x83}, _t"Effective talent level: ", {"color",0x00,0xFF,0x00}, ("%.1f"):format(self:getTalentLevel(t)), true)
  6551 + d:add({"color",0x6f,0xff,0x83}, _t"Effective talent level: ", {"color",0x00,0xFF,0x00}, ("%.2f"):format(self:getTalentLevel(t)), true)
6552 6552
6553 6553 if not config.ignore_mode then
6554 6554 if t.mode == "passive" then d:add({"color",0x6f,0xff,0x83}, _t"Use mode: ", {"color",0x00,0xFF,0x00}, _t"Passive", true)
... ...
... ... @@ -398,7 +398,6 @@ function _M:act()
398 398 self.shader_old_life = self.life
399 399 self.old_air = self.air
400 400 self.old_psi = self.psi
401   - self.old_healwarn = (self:attr("no_healing") or ((self.healing_factor or 1) <= 0))
402 401
403 402 -- Clean log flasher
404 403 -- game.flash:empty()
... ... @@ -450,7 +449,6 @@ function _M:resetMainShader()
450 449 self.shader_old_life = nil
451 450 self.old_air = nil
452 451 self.old_psi = nil
453   - self.old_healwarn = nil
454 452 self:updateMainShader()
455 453 end
456 454
... ... @@ -475,12 +473,11 @@ function _M:updateMainShader()
475 473 if solipsism_power > 0 then game.fbo_shader:setUniform("solipsism_warning", solipsism_power)
476 474 else game.fbo_shader:setUniform("solipsism_warning", 0) end
477 475 end
478   - if ((self:attr("no_healing") or ((self.healing_factor or 1) <= 0)) ~= self.old_healwarn) and not self:attr("no_healing_no_warning") then
479   - if (self:attr("no_healing") or ((self.healing_factor or 1) <= 0)) then
480   - game.fbo_shader:setUniform("intensify", {0.3,1.3,0.3,1})
481   - else
482   - game.fbo_shader:setUniform("intensify", {0,0,0,0})
483   - end
  476 + -- Can't heal shader warning
  477 + if (self:attr("no_healing") or ((self.healing_factor or 1) <= 0)) and not self:attr("no_healing_no_warning") then
  478 + game.fbo_shader:setUniform("intensify", {0.3,1.3,0.3,1})
  479 + else
  480 + game.fbo_shader:setUniform("intensify", {0,0,0,0})
484 481 end
485 482
486 483 -- Colorize shader
... ... @@ -1723,4 +1720,4 @@ function _M:attackOrMoveDir(dir)
1723 1720 game_or_player.bump_attack_disabled = tmp
1724 1721 end
1725 1722
1726   -return _M
\ No newline at end of file
  1723 +return _M
... ...
... ... @@ -272,6 +272,7 @@ newEntity{ base = "BASE_TAINT",
272 272 level_range = {5, 50},
273 273 cost = 20,
274 274 material_level = 3,
  275 + quest = 1,
275 276 inscription_kind = "protect",
276 277 inscription_data = {
277 278 cooldown = 20,
... ...
... ... @@ -42,10 +42,10 @@ newTalent{
42 42 local dur = t.getDuration(self, t)
43 43 local rad = 1
44 44 local max_radius = t.getMaxRadius(self, t)
45   - dam = self:spellCrit(dam)
46 45 local oe = game.level.map(px, py, Map.TERRAIN+1)
47 46 if (oe and oe.is_maelstrom) or game.level.map:checkEntity(x, y, Map.TERRAIN, "block_move") then return nil end
48 47
  48 + dam = self:spellCrit(dam)
49 49 local e = Object.new{
50 50 old_feat = oe,
51 51 type = "void", subtype = "black hole",
... ...
... ... @@ -57,7 +57,7 @@ newTalent{
57 57 requires_target = true,
58 58 is_melee = true,
59 59 is_teleport = true,
60   - getBleedDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.7, 2.1) end,
  60 + getBleedDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.5, 1.7) end,
61 61 getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1.0, 1.0) end,
62 62 target = function(self, t) return {type="hit", pass_terrain = true, range=self:getTalentRange(t)} end,
63 63 on_learn = function(self, t) self:learnTalent(self.T_BLOOD_CLOT, true) end,
... ... @@ -85,7 +85,7 @@ newTalent{
85 85 -- Attack
86 86 if target and target.x and core.fov.distance(self.x, self.y, target.x, target.y) == 1 then
87 87 target:setEffect(target.EFF_BLOOD_RUSH_MARK, 6, {src=self})
88   - local hit = self:attackTarget(target, nil, 1, true)
  88 + local hit, damage = self:attackTarget(target, nil, 1, true)
89 89 if hit then
90 90 if target.dead then
91 91 game:onTickEnd(function()
... ... @@ -93,17 +93,8 @@ newTalent{
93 93 end)
94 94 end
95 95 if target:canBe('cut') then
96   - local sw = self:getInven("MAINHAND")
97   - if sw then
98   - sw = sw[1] and sw[1].combat
99   - end
100   - sw = sw or self.combat
101   - local dam = self:combatDamage(sw)
102   - local damrange = self:combatDamageRange(sw)
103   - dam = rng.range(dam, dam * damrange)
104   - dam = dam * t.getBleedDamage(self, t)
105   - target:setEffect(target.EFF_CUT, 5, {power=dam / 5, src=self})
106   - end
  96 + target:setEffect(target.EFF_CUT, 5, {src=self, power=(damage*t.getBleedDamage(self, t) / 5)})
  97 + end
107 98 end
108 99 end
109 100
... ...
... ... @@ -166,16 +166,6 @@ newTalent{
166 166 if not state then return {dam = dam} end
167 167 if self:attr("invulnerable") then return {dam = dam} end
168 168
169   - local psrc = src.__project_source
170   - if psrc then
171   - local kind = util.getval(psrc.getEntityKind)
172   - if kind == "projectile" or kind == "trap" or kind == "object" then
173   - -- continue
174   - else
175   - return
176   - end
177   - end
178   -
179 169 local lt = t.getThreshold(self, t)/100
180 170 local st = t.getSpillThreshold(self, t)/100
181 171 if dam > self.max_life*lt then
... ...
... ... @@ -103,7 +103,7 @@ newTalent{
103 103 range = 20,
104 104 tactical = { HEAL = 2, CLOSEIN = 2 },
105 105 action = function(self, t)
106   - local tg = {type="hit", range=self:getTalentRange(t)}
  106 + local tg = {type="hit", range=self:getTalentRange(t), nowarning=true}
107 107 local x, y, target = self:getTarget(tg)
108 108 if not x or not y or not target then return nil end
109 109 if not target:hasEffect(target.EFF_STONE_VINE) then return nil end
... ...
... ... @@ -663,7 +663,7 @@ newTalent{
663 663 mode = "passive",
664 664 require = techs_dex_req4,
665 665 getSpeed = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 5, 15))/100 end,
666   - getTalentCount = function(self, t) return math.floor(self:combatTalentLimit(t, 4, 1, 3.5)) end,
  666 + getTalentCount = function(self, t) return math.floor(self:combatTalentLimit(t, 4, 1.1, 3.1)) end,
667 667 getCooldown = function(self, t) return math.floor(self:combatTalentLimit(t, 5, 2, 4.5)) end,
668 668 proc = function(self, t)
669 669 if not self:isTalentCoolingDown(t) then
... ...