diff --git a/game/engines/default/engine/Module.lua b/game/engines/default/engine/Module.lua index c3e116b94c6512ab165973628ffe9d8a2bb8877c..d7f25006460e7af1bc5546deeea95b3b1e976eb7 100644 --- a/game/engines/default/engine/Module.lua +++ b/game/engines/default/engine/Module.lua @@ -406,7 +406,7 @@ function _M:selectFunFact(ffdata) if ffdata.nb_players then l[#l+1] = ("There is currently %d people playing online"):format(ffdata.nb_players) end if ffdata.total_deaths then l[#l+1] = ("The character's vault has registered a total of #RED#%d#WHITE# character's deaths"):format(ffdata.total_deaths) end if ffdata.wins_this_version then l[#l+1] = ("The character's vault has registered a total of #LIGHT_BLUE#%d#WHITE# winners for the current version"):format(ffdata.wins_this_version) end - if ffdata.latest_donator then l[#l+1] = ("The latest donator is #LIGHT_GREEN#%s#WHITE#. Many thanks to all donators, you are keepign this game alive!"):format(ffdata.latest_donator) end + if ffdata.latest_donator then l[#l+1] = ("The latest donator is #LIGHT_GREEN#%s#WHITE#. Many thanks to all donators, you are keeping this game alive!"):format(ffdata.latest_donator) end end)) table.print(l) diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index 291c1238102be0f44bf231b7153e232ffc078ee3..077418dbfdd09d1ccd1a45f50eba90338a4b5775 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -610,7 +610,7 @@ function _M:act() end end if self:attr("stoned") then self.energy.value = 0 end - if self:attr("dazed") then self.energy.value = 0 end +-- if self:attr("dazed") then self.energy.value = 0 end if self:attr("sleep") and not self:attr("lucid_dreamer") then self.energy.value = 0 end if self:attr("time_stun") then self.energy.value = 0 end if self:attr("time_prison") then self.energy.value = 0 end @@ -1550,10 +1550,6 @@ function _M:onTakeHit(value, src) if self:hasEffect(self.EFF_DAZED) then self:removeEffect(self.EFF_DAZED) end - -- Un-meditate - if self:hasEffect(self.EFF_MEDITATION) then - self:removeEffect(self.EFF_MEDITATION) - end if self:hasEffect(self.EFF_SPACETIME_TUNING) then self:removeEffect(self.EFF_SPACETIME_TUNING) end diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua index 3e8208cba46ef06ed155786203aba61fa8f9f357..e20f11a772eaeb77666c8ddf00cf1d7c7e677ccb 100644 --- a/game/modules/tome/class/interface/Combat.lua +++ b/game/modules/tome/class/interface/Combat.lua @@ -933,6 +933,7 @@ function _M:combatDefense(fake, add) local base_defense = self:combatDefenseBase(true) if not fake then base_defense = self:combatDefenseBase() end local d = math.max(0, base_defense + (add or 0)) + if self:attr("dazed") then d = d / 2 end return self:rescaleCombatStats(d) end @@ -941,6 +942,7 @@ function _M:combatDefenseRanged(fake, add) local base_defense = self:combatDefenseBase(true) if not fake then base_defense = self:combatDefenseBase() end local d = math.max(0, base_defense + (self.combat_def_ranged or 0) + (add or 0)) + if self:attr("dazed") then d = d / 2 end return self:rescaleCombatStats(d) end @@ -1135,7 +1137,8 @@ function _M:combatPhysicalpower(mod, weapon, add) add = add + 10 * self:combatCheckTraining(weapon) - return self:rescaleCombatStats((self.combat_dam > 0 and self.combat_dam or 0) + add + self:getStr()) * mod + local d = (self.combat_dam > 0 and self.combat_dam or 0) + add + self:getStr() + return self:rescaleCombatStats(d) * mod end --- Gets damage based on talent @@ -1163,7 +1166,8 @@ function _M:combatSpellpower(mod, add) local am = 1 if self:attr("spellpower_reduction") then am = 1 / (1 + self:attr("spellpower_reduction")) end - return self:rescaleCombatStats((self.combat_spellpower > 0 and self.combat_spellpower or 0) + add + self:getMag()) * mod * am + local d = (self.combat_spellpower > 0 and self.combat_spellpower or 0) + add + self:getMag() + return self:rescaleCombatStats(d) * mod * am end --- Gets damage based on talent @@ -1423,7 +1427,8 @@ function _M:combatMindpower(mod, add) add = add + self:attr("psychometry_power") end - return self:rescaleCombatStats((self.combat_mindpower > 0 and self.combat_mindpower or 0) + add + self:getWil() * 0.7 + self:getCun() * 0.4) * mod + local d = (self.combat_mindpower > 0 and self.combat_mindpower or 0) + add + self:getWil() * 0.7 + self:getCun() * 0.4 + return self:rescaleCombatStats(d) * mod end --- Gets damage based on talent @@ -1473,7 +1478,9 @@ function _M:combatPhysicalResist(fake) end -- To return later - local total = self:rescaleCombatStats(self.combat_physresist + (self:getCon() + self:getStr() + (self:getLck() - 50) * 0.5) * 0.35 + add) + local d = self.combat_physresist + (self:getCon() + self:getStr() + (self:getLck() - 50) * 0.5) * 0.35 + add + if self:attr("dazed") then d = d / 2 end + local total = self:rescaleCombatStats(d) -- Psionic Balance if self:knowTalent(self.T_BALANCE) then @@ -1496,7 +1503,9 @@ function _M:combatSpellResist(fake) end -- To return later - local total = self:rescaleCombatStats(self.combat_spellresist + (self:getMag() + self:getWil() + (self:getLck() - 50) * 0.5) * 0.35 + add) + local d = self.combat_spellresist + (self:getMag() + self:getWil() + (self:getLck() - 50) * 0.5) * 0.35 + add + if self:attr("dazed") then d = d / 2 end + local total = self:rescaleCombatStats(d) -- Psionic Balance if self:knowTalent(self.T_BALANCE) then @@ -1521,7 +1530,10 @@ function _M:combatMentalResist(fake) if self:knowTalent(self.T_POWER_IS_MONEY) then add = add + util.bound(self.money / (90 - self:getTalentLevelRaw(self.T_POWER_IS_MONEY) * 5), 0, self:getTalentLevelRaw(self.T_POWER_IS_MONEY) * 7) end - return self:rescaleCombatStats(self.combat_mentalresist + (self:getCun() + self:getWil() + (self:getLck() - 50) * 0.5) * 0.35 + add) + + local d = self.combat_mentalresist + (self:getCun() + self:getWil() + (self:getLck() - 50) * 0.5) * 0.35 + add + if self:attr("dazed") then d = d / 2 end + return self:rescaleCombatStats(d) end -- Called when a Save or Defense is checked diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua index c74b43b6a0608c47ff0230d855fcc767fe74e094..9e592c1ed38f7776a755b5c7d54ca1ae03633124 100644 --- a/game/modules/tome/data/damage_types.lua +++ b/game/modules/tome/data/damage_types.lua @@ -57,6 +57,11 @@ setDefaultProjector(function(src, x, y, type, dam, tmp, no_martyr) end print("[PROJECTOR] after difficulty dam", dam) + -- Daze + if target:attr("dazed") then + dam = dam * 0.5 + end + -- Preemptive shielding if target.isTalentActive and target:isTalentActive(target.T_PREMONITION) then local t = target:getTalentFromId(target.T_PREMONITION) diff --git a/game/modules/tome/data/timed_effects/mental.lua b/game/modules/tome/data/timed_effects/mental.lua index 98ace90874ed1bb0daf37596fb68a36f41667302..af5b60487391ffd99608e3159095042a3c8bc570 100644 --- a/game/modules/tome/data/timed_effects/mental.lua +++ b/game/modules/tome/data/timed_effects/mental.lua @@ -43,28 +43,6 @@ newEffect{ end, } -newEffect{ - name = "MEDITATION", image = "talents/meditation.png", - desc = "Meditation", - long_desc = function(self, eff) return "The target is meditating. Any damage will stop it." end, - type = "mental", - subtype = { focus=true }, - status = "detrimental", - parameters = {}, - on_timeout = function(self, eff) - self:incEquilibrium(-eff.per_turn) - end, - activate = function(self, eff) - eff.tmpid = self:addTemporaryValue("dazed", 1) - end, - deactivate = function(self, eff) - self:removeTemporaryValue("dazed", eff.tmpid) - if eff.dur <= 0 then - self:incEquilibrium(-eff.final) - end - end, -} - newEffect{ name = "SUMMON_CONTROL", image = "talents/summon_control.png", desc = "Summon Control", diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua index e6009f8db2f4f3437b644d4c5a3a1a6e3b0f273b..4321566de92814dc7d3dbc3bd18653ef356b31b6 100644 --- a/game/modules/tome/data/timed_effects/physical.lua +++ b/game/modules/tome/data/timed_effects/physical.lua @@ -386,7 +386,7 @@ newEffect{ newEffect{ name = "DAZED", image = "effects/dazed.png", desc = "Dazed", - long_desc = function(self, eff) return "The target is dazed, rendering it unable to act. Any damage will remove the daze." end, + long_desc = function(self, eff) return "The target is dazed, rendering it unable to move, halving all damage done, defense and saves. Any damage will remove the daze." end, type = "physical", subtype = { stun=true }, status = "detrimental", @@ -394,10 +394,10 @@ newEffect{ on_gain = function(self, err) return "#Target# is dazed!", "+Dazed" end, on_lose = function(self, err) return "#Target# is not dazed anymore.", "-Dazed" end, activate = function(self, eff) - eff.tmpid = self:addTemporaryValue("dazed", 1) + self:effectTemporaryValue(eff, "dazed", 1) + self:effectTemporaryValue(eff, "never_move", 1) end, deactivate = function(self, eff) - self:removeTemporaryValue("dazed", eff.tmpid) end, } diff --git a/game/modules/tome/data/zones/high-peak/grids.lua b/game/modules/tome/data/zones/high-peak/grids.lua index 6015b64e6bfb6acec47e90e8cd1a65aa6117fc09..0693d04a049729c00c3302524b47d2e81f6a7808 100644 --- a/game/modules/tome/data/zones/high-peak/grids.lua +++ b/game/modules/tome/data/zones/high-peak/grids.lua @@ -21,6 +21,7 @@ load("/data/general/grids/basic.lua") load("/data/general/grids/water.lua") load("/data/general/grids/forest.lua") load("/data/general/grids/lava.lua") +load("/data/general/grids/cave.lua") newEntity{ define_as = "FAR_EAST_PORTAL", @@ -211,3 +212,12 @@ newEntity{ always_remember = true, change_level = 1, } + +newEntity{ + define_as = "CAVE_HIGH_PEAK_UP", image = "terrain/cave/cave_floor_1_01.png", add_displays = {class.new{image="terrain/cave/cave_stairs_up_2_01.png"}}, + name = "next level", + display = '>', color_r=255, color_g=255, color_b=0, + notice = true, + always_remember = true, + change_level = 1, +} diff --git a/game/modules/tome/data/zones/high-peak/zone.lua b/game/modules/tome/data/zones/high-peak/zone.lua index 853431289176d9c623b154018fc6df13eaf96acf..062147f7fee2232521b9f7b1588b4e36d3732fdf 100644 --- a/game/modules/tome/data/zones/high-peak/zone.lua +++ b/game/modules/tome/data/zones/high-peak/zone.lua @@ -90,6 +90,56 @@ return { end, levels = { + [1] = { + generator = { + map = { + class = "engine.generator.map.Cavern", + zoom = 16, + min_floor = 1200, + floor = "CAVEFLOOR", + wall = "CAVEWALL", + up = "CAVEFLOOR", + down = "CAVE_HIGH_PEAK_UP", + door = "CAVEFLOOR", + }, + }, + }, + [2] = { + generator = { + map = { + ['+'] = "CAVEFLOOR", + ['.'] = "CAVEFLOOR", + ['#'] = "CAVEWALL", + up = "CAVEFLOOR", + down = "CAVE_HIGH_PEAK_UP", + door = "CAVEFLOOR", + }, + }, + }, + [3] = { + generator = { + map = { + ['+'] = "CAVEFLOOR", + ['.'] = "CAVEFLOOR", + ['#'] = "CAVEWALL", + up = "CAVEFLOOR", + down = "CAVE_HIGH_PEAK_UP", + door = "CAVEFLOOR", + }, + }, + }, + [4] = { + generator = { + map = { + ['+'] = "CAVEFLOOR", + ['.'] = "CAVEFLOOR", + ['#'] = "CAVEWALL", + up = "CAVEFLOOR", + down = "CAVE_HIGH_PEAK_UP", + door = "CAVEFLOOR", + }, + }, + }, [10] = { generator = { map = {