From 73c3ae51faa4001e519e2c8fec1008ed89070006 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Sun, 30 May 2010 02:15:58 +0000 Subject: [PATCH] fixes Sun paladin uses positive energy: decays; increased by caasting; decreased by combat school Star Mages will both taht and negative energy git-svn-id: http://svn.net-core.org/repos/t-engine4@719 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engine/Zone.lua | 42 ++++++------- game/engine/interface/ActorResource.lua | 4 +- game/modules/tome/class/Actor.lua | 56 ++++++++++++++++-- game/modules/tome/class/PlayerDisplay.lua | 9 ++- .../tome/class/generator/actor/Sandworm.lua | 6 +- game/modules/tome/class/interface/Combat.lua | 13 ++++ .../tome/data/birth/classes/divine.lua | 4 +- game/modules/tome/data/factions.lua | 32 +++++----- game/modules/tome/data/general/npcs/snake.lua | 4 +- .../tome/data/talents/divine/chants.lua | 4 ++ .../tome/data/talents/divine/combat.lua | 18 +++--- .../tome/data/talents/divine/light.lua | 49 ++------------- game/modules/tome/data/talents/divine/sun.lua | 30 ++++++---- game/modules/tome/data/talents/misc/misc.lua | 14 +++++ .../tome/data/talents/spells/divination.lua | 2 +- .../modules/tome/data/talents/spells/fire.lua | 4 +- .../tome/data/zones/sandworm-lair/npcs.lua | 2 +- .../tome/data/zones/sandworm-lair/zone.lua | 1 + .../tome/data/zones/tol-falas/npcs.lua | 1 + game/modules/tome/load.lua | 3 +- ideas/factions.ods | Bin 14604 -> 14104 bytes ideas/zones.ods | Bin 12274 -> 12262 bytes 22 files changed, 177 insertions(+), 121 deletions(-) diff --git a/game/engine/Zone.lua b/game/engine/Zone.lua index e822278678..b08ec230e5 100644 --- a/game/engine/Zone.lua +++ b/game/engine/Zone.lua @@ -487,27 +487,29 @@ function _M:newLevel(level_data, lev, old_lev, game) map.room_map = nil -- Check for connectivity from entrance to exit - local a = Astar.new(map, game:getPlayer()) - print("[LEVEL GENERATION] checking entrance to exit A*", ux, uy, "to", dx, dy) - if ux and uy and dx and dy and (ux ~= dx or uy ~= dy) and not spots.no_level_connectivity and not a:calc(ux, uy, dx, dy) then - print("Level unconnected, no way from entrance to exit", ux, uy, "to", dx, dy) - level:removed() - return self:newLevel(level_data, lev, old_lev, game) - end - for i = 1, #spots do - local spot = spots[i] - if spot.check_connectivity then - local cx, cy - if type(spot.check_connectivity) == "string" and spot.check_connectivity == "entrance" then cx, cy = ux, uy - elseif type(spot.check_connectivity) == "string" and spot.check_connectivity == "exit" then cx, cy = dx, dy - else cx, cy = spot.check_connectivity.x, spot.check_connectivity.y - end + if not level_data.no_level_connectivity then + local a = Astar.new(map, game:getPlayer()) + print("[LEVEL GENERATION] checking entrance to exit A*", ux, uy, "to", dx, dy) + if ux and uy and dx and dy and (ux ~= dx or uy ~= dy) and not a:calc(ux, uy, dx, dy) then + print("Level unconnected, no way from entrance to exit", ux, uy, "to", dx, dy) + level:removed() + return self:newLevel(level_data, lev, old_lev, game) + end + for i = 1, #spots do + local spot = spots[i] + if spot.check_connectivity then + local cx, cy + if type(spot.check_connectivity) == "string" and spot.check_connectivity == "entrance" then cx, cy = ux, uy + elseif type(spot.check_connectivity) == "string" and spot.check_connectivity == "exit" then cx, cy = dx, dy + else cx, cy = spot.check_connectivity.x, spot.check_connectivity.y + end - print("[LEVEL GENERATION] checking A*", spot.x, spot.y, "to", cx, cy) - if spot.x and spot.y and cx and cy and (spot.x ~= cx or spot.y ~= cy) and not a:calc(spot.x, spot.y, cx, cy) then - print("Level unconnected, no way from", spot.x, spot.y, "to", cx, cy) - level:removed() - return self:newLevel(level_data, lev, old_lev, game) + print("[LEVEL GENERATION] checking A*", spot.x, spot.y, "to", cx, cy) + if spot.x and spot.y and cx and cy and (spot.x ~= cx or spot.y ~= cy) and not a:calc(spot.x, spot.y, cx, cy) then + print("Level unconnected, no way from", spot.x, spot.y, "to", cx, cy) + level:removed() + return self:newLevel(level_data, lev, old_lev, game) + end end end end diff --git a/game/engine/interface/ActorResource.lua b/game/engine/interface/ActorResource.lua index ed8871e57a..2d66992cb8 100644 --- a/game/engine/interface/ActorResource.lua +++ b/game/engine/interface/ActorResource.lua @@ -89,7 +89,9 @@ end --- Regen resources, shout be called in your actor's act() method function _M:regenResources() - for i, r in ipairs(_M.resources_def) do + local r + for i = 1, #_M.resources_def do + r = _M.resources_def[i] if r.regen_prop then self[r.short_name] = util.bound(self[r.short_name] + self[r.regen_prop], 0, self[r.maxname]) end diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index 5546bf5b9a..bb94069a30 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -83,6 +83,7 @@ function _M:init(t, no_default) t.life_rating = t.life_rating or 10 t.mana_rating = t.mana_rating or 10 t.stamina_rating = t.stamina_rating or 4 + t.positive_negative_rating = t.positive_negative_rating or 4 t.esp = t.esp or {range=10} @@ -103,7 +104,14 @@ function _M:init(t, no_default) t.mana_regen = t.mana_regen or 0.5 t.stamina_regen = t.stamina_regen or 0.3 -- Stamina regens slower than mana t.life_regen = t.life_regen or 0.25 -- Life regen real slow - t.equilibrium_regen = t.equilibrium_regen or -0.01 -- Equilibrium resets real slow + t.equilibrium_regen = t.equilibrium_regen or 0 -- Equilibrium does not regen + t.positive_regen = t.positive_regen or -0.1 -- Positive energy slowly decays + t.negative_regen = t.negative_regen or -0.1 -- Positive energy slowly decays + + t.max_positive = t.max_positive or 50 + t.max_negative = t.max_negative or 50 + t.positive = t.positive or 0 + t.negative = t.negative or 0 -- Equilibrium has a default very high max, as bad effects happen even before reaching it t.max_equilibrium = t.max_equilibrium or 100000 @@ -468,7 +476,7 @@ function _M:onTakeHit(value, src) end -- Achievements - if src and src:resolveSource().player and value >= 600 then + if src and src.resolveSource and src:resolveSource().player and value >= 600 then world:gainAchievement("SIZE_MATTERS", src:resolveSource()) end @@ -487,7 +495,7 @@ function _M:die(src) engine.interface.ActorLife.die(self, src) -- Gives the killer some exp for the kill - if src and src:resolveSource().gainExp then + if src and src.resolveSource and src:resolveSource().gainExp then src:resolveSource():gainExp(self:worthExp(src:resolveSource())) end -- Do we get a blooooooody death ? @@ -508,7 +516,7 @@ function _M:die(src) src:incStamina(src:getTalentLevel(src.T_UNENDING_FRENZY) * 2) end - if src and src:resolveSource().player then + if src and src.resolveSource and src:resolveSource().player then -- Achievements local p = src:resolveSource() if p.life == 1 then world:gainAchievement("THAT_WAS_CLOSE", p) end @@ -547,6 +555,8 @@ function _M:levelup() self:incMaxMana(self.mana_rating) self:incMaxStamina(self.stamina_rating) + self:incMaxPositive(self.positive_negative_rating) + self:incMaxNegative(self.positive_negative_rating) -- Healp up on new level self.life = self.max_life self.mana = self.max_mana @@ -647,6 +657,8 @@ function _M:learnTalent(t_id, force, nb) if t.type[1]:find("^wild%-gift/") and not self:knowTalent(self.T_EQUILIBRIUM_POOL) then self:learnTalent(self.T_EQUILIBRIUM_POOL, true) end if t.type[1]:find("^technique/") and not self:knowTalent(self.T_STAMINA_POOL) then self:learnTalent(self.T_STAMINA_POOL, true) end if t.type[1]:find("^corruption/") and not self:knowTalent(self.T_VIM_POOL) then self:learnTalent(self.T_VIM_POOL, true) end + if t.type[1]:find("^divine/") and (t.positive or t.sustain_positive) and not self:knowTalent(self.T_POSITIVE_POOL) then self:learnTalent(self.T_POSITIVE_POOL, true) end + if t.type[1]:find("^divine/") and (t.negative or t.sustain_negative) and not self:knowTalent(self.T_NEGATIVE_POOL) then self:learnTalent(self.T_NEGATIVE_POOL, true) end -- If we learn an archery talent, also learn to shoot if t.type[1]:find("^technique/archery") and not self:knowTalent(self.T_SHOOT) then self:learnTalent(self.T_SHOOT, true) end @@ -683,6 +695,14 @@ function _M:preUseTalent(ab, silent) game.logPlayer(self, "You do not have enough stamina to activate %s.", ab.name) return false end + if ab.sustain_positive and self.max_positive < ab.sustain_positive and not self:isTalentActive(ab.id) then + game.logPlayer(self, "You do not have enough positive energy to activate %s.", ab.name) + return false + end + if ab.sustain_negative and self.max_negative < ab.sustain_negative and not self:isTalentActive(ab.id) then + game.logPlayer(self, "You do not have enough negative energy to activate %s.", ab.name) + return false + end else if ab.mana and self:getMana() < ab.mana * (100 + self.fatigue) / 100 then game.logPlayer(self, "You do not have enough mana to cast %s.", ab.name) @@ -692,6 +712,14 @@ function _M:preUseTalent(ab, silent) game.logPlayer(self, "You do not have enough stamina to use %s.", ab.name) return false end + if ab.positive and self:getPositive() < ab.positive * (100 + self.fatigue) / 100 then + game.logPlayer(self, "You do not have enough positive energy to use %s.", ab.name) + return false + end + if ab.negative and self:getNegative() < ab.negative * (100 + self.fatigue) / 100 then + game.logPlayer(self, "You do not have enough negative energy to use %s.", ab.name) + return false + end end -- Equilibrium is special, it has no max, but the higher it is the higher the chance of failure (and loss of the turn) @@ -766,6 +794,12 @@ function _M:postUseTalent(ab, ret) if ab.sustain_equilibrium then self:incEquilibrium(ab.sustain_equilibrium) end + if ab.sustain_positive then + self.max_positive = self.max_positive - ab.sustain_positive + end + if ab.sustain_negative then + self.max_negative = self.max_negative - ab.sustain_negative + end else if ab.sustain_mana then self.max_mana = self.max_mana + ab.sustain_mana @@ -776,6 +810,12 @@ function _M:postUseTalent(ab, ret) if ab.sustain_equilibrium then self:incEquilibrium(-ab.sustain_equilibrium) end + if ab.sustain_positive then + self.max_positive = self.max_positive + ab.sustain_positive + end + if ab.sustain_negative then + self.max_negative = self.max_negative + ab.sustain_negative + end end else if ab.mana then @@ -784,6 +824,12 @@ function _M:postUseTalent(ab, ret) if ab.stamina then self:incStamina(-ab.stamina * (100 + self.fatigue) / 100) end + if ab.positive then + self:incPositive(-ab.positive * (100 + self.fatigue) / 100) + end + if ab.negative then + self:incNegative(-ab.negative * (100 + self.fatigue) / 100) + end -- Equilibrium is not affected by fatigue if ab.equilibrium then self:incEquilibrium(ab.equilibrium) @@ -830,6 +876,8 @@ function _M:getTalentFullDescription(t) if t.stamina or t.sustain_stamina then d[#d+1] = "#6fff83#Stamina cost: #ffcc80#"..(t.stamina or t.sustain_stamina) end if t.equilibrium or t.sustain_equilibrium then d[#d+1] = "#6fff83#Equilibrium cost: #00ff74#"..(t.equilibrium or t.sustain_equilibrium) end if t.vim or t.sustain_vim then d[#d+1] = "#6fff83#Vim cost: #888888#"..(t.vim or t.sustain_vim) end + if t.positive or t.sustain_positive then d[#d+1] = "#6fff83#Positive energy cost: #GOLD#"..(t.positive or t.sustain_positive) end + if t.negative or t.sustain_negative then d[#d+1] = "#6fff83#Negative energy cost: #GREY#"..(t.negative or t.sustain_negative) end if self:getTalentRange(t) > 1 then d[#d+1] = "#6fff83#Range: #FFFFFF#"..self:getTalentRange(t) else d[#d+1] = "#6fff83#Range: #FFFFFF#melee/personal" end diff --git a/game/modules/tome/class/PlayerDisplay.lua b/game/modules/tome/class/PlayerDisplay.lua index b86e18b5f7..48a630cbfd 100644 --- a/game/modules/tome/class/PlayerDisplay.lua +++ b/game/modules/tome/class/PlayerDisplay.lua @@ -69,12 +69,15 @@ function _M:display() if game.player:knowTalent(game.player.T_MANA_POOL) then self.surface:drawColorString(self.font, ("#7fffd4#Mana: #00ff00#%d/%d"):format(game.player:getMana(), game.player.max_mana), 0, h, 255, 255, 255) h = h + self.font_h end - if game.player:knowTalent(game.player.T_SOUL_POOL) then - self.surface:drawColorString(self.font, ("#777777#Soul: #00ff00#%d/%d"):format(game.player:getSoul(), game.player.max_soul), 0, h, 255, 255, 255) h = h + self.font_h - end if game.player:knowTalent(game.player.T_EQUILIBRIUM_POOL) then self.surface:drawColorString(self.font, ("#00ff74#Equi: #00ff00#%d"):format(game.player:getEquilibrium()), 0, h, 255, 255, 255) h = h + self.font_h end + if game.player:knowTalent(game.player.T_POSITIVE_POOL) then + self.surface:drawColorString(self.font, ("#7fffd4#Positive:#GOLD#%d/%d"):format(game.player:getPositive(), game.player.max_positive), 0, h, 255, 255, 255) h = h + self.font_h + end + if game.player:knowTalent(game.player.T_NEGATIVE_POOL) then + self.surface:drawColorString(self.font, ("#7fffd4#Negative:#GREY#%d/%d"):format(game.player:getNegative(), game.player.max_negative), 0, h, 255, 255, 255) h = h + self.font_h + end h = h + self.font_h self.surface:drawColorString(self.font, ("STR: #00ff00#%3d"):format(game.player:getStr()), 0, h, 255, 255, 255) h = h + self.font_h diff --git a/game/modules/tome/class/generator/actor/Sandworm.lua b/game/modules/tome/class/generator/actor/Sandworm.lua index 7f2841c6a3..1d94ce3894 100644 --- a/game/modules/tome/class/generator/actor/Sandworm.lua +++ b/game/modules/tome/class/generator/actor/Sandworm.lua @@ -26,12 +26,10 @@ local Random = require "engine.generator.actor.Random" module(..., package.seeall, class.inherit(engine.Generator)) function _M:init(zone, map, level, spots) - engine.Generator.init(self, zone, map) - self.level = level + engine.Generator.init(self, zone, map, level, spots) self.data = level.data.generator.actor - self.spots = spots - self.random = Random.new(zone, map, level) + self.random = Random.new(zone, map, level, spots) end function _M:generate() diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua index c2d397cdac..10de968e1e 100644 --- a/game/modules/tome/class/interface/Combat.lua +++ b/game/modules/tome/class/interface/Combat.lua @@ -297,6 +297,19 @@ function _M:attackTargetWith(target, weapon, damtype, mult) end end end + -- Weapon of light cast + if hitted and self:knowTalent(self.T_WEAPON_OF_LIGHT) and self:isTalentActive(self.T_WEAPON_OF_LIGHT) then + local dam = 7 + self:getTalentLevel(self.T_WEAPON_OF_LIGHT) * self:combatSpellpower(0.092) + DamageType:get(DamageType.LIGHT).projector(self, target.x, target.y, DamageType.LIGHT, dam) + self:incPositive(-3) + if self:getPositive() <= 0 then + local old = self.energy.value + self.energy.value = 100000 + self:useTalent(self.T_WEAPON_OF_LIGHT) + self.energy.value = old + end + end + -- Shadow cast if hitted and self:knowTalent(self.T_SHADOW_COMBAT) and self:isTalentActive(self.T_SHADOW_COMBAT) and self:getMana() > 0 then local dam = 3 + self:getTalentLevel(self.T_SHADOW_COMBAT) * 2 diff --git a/game/modules/tome/data/birth/classes/divine.lua b/game/modules/tome/data/birth/classes/divine.lua index a7179e62fd..0414ee8324 100644 --- a/game/modules/tome/data/birth/classes/divine.lua +++ b/game/modules/tome/data/birth/classes/divine.lua @@ -57,17 +57,17 @@ newBirthDescriptor{ ["divine/light"]={false, 0}, }, talents = { + [ActorTalents.T_SEARING_LIGHT] = 1, [ActorTalents.T_CHANT_OF_FORTITUDE] = 1, [ActorTalents.T_WEAPON_COMBAT] = 1, [ActorTalents.T_HEAVY_ARMOUR_TRAINING] = 1, - [ActorTalents.T_MASSIVE_ARMOUR_TRAINING] = 1, }, copy = { max_life = 110, life_rating = 12, resolvers.equip{ id=true, {type="weapon", subtype="mace", name="iron mace", autoreq=true}, - {type="armor", subtype="massive", name="iron plate armour", autoreq=true} + {type="armor", subtype="heavy", name="iron heavy armour", autoreq=true} }, }, } diff --git a/game/modules/tome/data/factions.lua b/game/modules/tome/data/factions.lua index 791027261b..38fe7f8b1d 100644 --- a/game/modules/tome/data/factions.lua +++ b/game/modules/tome/data/factions.lua @@ -19,21 +19,23 @@ -- CSV export local src = [[ -,Enemies,,Reunited Kingdom,Shire,Lonely Mountain,Eryn Lasgalen,Angolwen,Tol Falas,,Water lair|H,Assassin lair|H,,Sunwall,Orc Pride -Enemies,,,,,,,,,,,,,, -,,,,,,,,,,,,,, -Reunited Kingdom,-1,,,,,,,,,,,,, -Shire,-1,,1,,,,,,,,,,, -Lonely Mountain,-1,,0.5,1,,,,,,,,,, -Eryn Lasgalen,-1,,0.5,1,0.3,,,,,,,,, -Angolwen,-1,,,,,,,,,,,,, -Tol Falas,,,-1,-1,-1,-1,-1,,,,,,, -,,,,,,,,,,,,,, -Water lair|H,-1,,,,,,,,,,,,, -Assassin lair|H,,,,,,,,,,,,,, -,,,,,,,,,,,,,, -Sunwall,-1,,,,,,0,-1,,,-1,,, -Orc Pride,,,-1,-1,-1,-1,-1,-1,,,,,-1, +,Enemies,,Reunited Kingdom,Shire,Lonely Mountain,Eryn Lasgalen,Angolwen,Tol Falas,,Water lair|H,Assassin lair|H,,Sunwall,Orc Pride,,Sandworm Burrowers +Enemies,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,, +Reunited Kingdom,-1,,,,,,,,,,,,,,, +Shire,-1,,1,,,,,,,,,,,,, +Lonely Mountain,-1,,0.5,1,,,,,,,,,,,, +Eryn Lasgalen,-1,,0.5,1,0.3,,,,,,,,,,, +Angolwen,-1,,,,,,,,,,,,,,, +Tol Falas,,,-1,-1,-1,-1,-1,,,,,,,,, +,,,,,,,,,,,,,,,, +Water lair|H,-1,,,,,,,,,,,,,,, +Assassin lair|H,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,, +Sunwall,-1,,,,,,0,-1,,,-1,,,,, +Orc Pride,,,-1,-1,-1,-1,-1,-1,,,,,-1,,, +,,,,,,,,,,,,,,,, +Sandworm Burrowers,,,,,,,,,,,,,,,, ]] local facts = {} diff --git a/game/modules/tome/data/general/npcs/snake.lua b/game/modules/tome/data/general/npcs/snake.lua index fc842373f9..fd69b80ffe 100644 --- a/game/modules/tome/data/general/npcs/snake.lua +++ b/game/modules/tome/data/general/npcs/snake.lua @@ -107,8 +107,8 @@ newEntity{ base = "BASE_NPC_SNAKE", newEntity{ base = "BASE_NPC_SNAKE", name = "anaconda", color=colors.YELLOW_GREEN, desc = [[You recoil in fear as you notice this huge, 10 meter long snake. It seeks to crush the life out of you.]], - level_range = {1, 50}, exp_worth = 1, - rarity = 1, + level_range = {20, 50}, exp_worth = 1, + rarity = 9, rank = 9, max_life = resolvers.rngavg(100,120), combat_armor = 14, combat_def = 5, diff --git a/game/modules/tome/data/talents/divine/chants.lua b/game/modules/tome/data/talents/divine/chants.lua index 901781a623..743ae57b7b 100644 --- a/game/modules/tome/data/talents/divine/chants.lua +++ b/game/modules/tome/data/talents/divine/chants.lua @@ -36,6 +36,7 @@ newTalent{ require = divi_req1, points = 5, cooldown = 30, + sustain_positive = 20, tactical = { BUFF = 10, }, @@ -75,6 +76,7 @@ newTalent{ require = divi_req2, points = 5, cooldown = 30, + sustain_positive = 20, tactical = { BUFF = 10, }, @@ -112,6 +114,7 @@ newTalent{ require = divi_req3, points = 5, cooldown = 30, + sustain_positive = 20, tactical = { BUFF = 10, }, @@ -154,6 +157,7 @@ newTalent{ require = divi_req4, points = 5, cooldown = 30, + sustain_positive = 20, tactical = { BUFF = 10, }, diff --git a/game/modules/tome/data/talents/divine/combat.lua b/game/modules/tome/data/talents/divine/combat.lua index fd27cc27eb..ea34bf2d13 100644 --- a/game/modules/tome/data/talents/divine/combat.lua +++ b/game/modules/tome/data/talents/divine/combat.lua @@ -23,26 +23,25 @@ newTalent{ mode = "sustained", require = divi_req1, points = 5, - cooldown = 30, + cooldown = 10, + sustain_positive = 10, tactical = { BUFF = 10, }, range = 20, activate = function(self, t) - local dam = 7 + self:getTalentLevel(t) * self:combatSpellpower(0.092) game:playSoundNear(self, "talents/spell_generic2") local ret = { - onhit = self:addTemporaryValue("melee_project", {[DamageType.LIGHT]=dam}), } return ret end, deactivate = function(self, t, p) - self:removeTemporaryValue("melee_project", p.onhit) return true end, info = function(self, t) return ([[Infuse your weapon of the power of the Sun, doing %0.2f light damage with each hit. - The damage will increase with the Magic stat]]):format(8 + self:combatSpellpower(0.092) * self:getTalentLevel(t)) + Each hit will drain 3 positive energy, the spell ends when energy reaches 0. + The damage will increase with the Magic stat]]):format(7 + self:combatSpellpower(0.092) * self:getTalentLevel(t)) end, } @@ -52,6 +51,7 @@ newTalent{ require = divi_req2, points = 5, cooldown = 22, + positive = 25, tactical = { ATTACK = 10, }, @@ -64,7 +64,7 @@ newTalent{ local _ _, x, y = self:canProject(tg, x, y) game:playSoundNear(self, "talents/spell_generic") local target = game.level.map(x, y, Map.ACTOR) - if target and target:checkHit(src:combatSpellpower(), target:combatMentalResist(), 0, 95, 15)then + if target and target:checkHit(self:combatSpellpower(), target:combatMentalResist(), 0, 95, 15)then target:setEffect(self.EFF_MARTYRDOM, 10, {power=8 * self:getTalentLevelRaw(t)}) else return @@ -85,7 +85,8 @@ newTalent{ type = {"divine/combat",3}, require = divi_req3, points = 5, - cooldown = 10, + cooldown = 6, + positive = 10, tactical = { ATTACK = 10, }, @@ -115,7 +116,8 @@ newTalent{ type = {"divine/combat", 4}, require = divi_req4, points = 5, - cooldown = 20, + cooldown = 10, + positive = 10, tactical = { ATTACKAREA = 10, }, diff --git a/game/modules/tome/data/talents/divine/light.lua b/game/modules/tome/data/talents/divine/light.lua index 557900c579..2ee4fc62c1 100644 --- a/game/modules/tome/data/talents/divine/light.lua +++ b/game/modules/tome/data/talents/divine/light.lua @@ -23,6 +23,7 @@ newTalent{ require = spells_req1, points = 5, cooldown = 40, + positive = -10, tactical = { HEAL = 10, }, @@ -42,8 +43,8 @@ newTalent{ type = {"divine/light", 2}, require = spells_req2, points = 5, --- mana = 60, cooldown = 10, + positive = -20, tactical = { HEAL = 10, }, @@ -76,6 +77,7 @@ newTalent{ require = spells_req3, points = 5, -- mana = 30, + positive = -20, cooldown = 60, action = function(self, t) self:setEffect(self.EFF_DAMAGE_SHIELD, 10, {power=(10 + self:getMag(30)) * self:getTalentLevel(t)}) @@ -92,56 +94,15 @@ newTalent{ type = {"divine/light", 4}, require = spells_req4, points = 5, --- mana = 60, cooldown = 100, + positive = -30, tactical = { ATTACK = 10, }, action = function(self, t) - -- Find space - local x, y = util.findFreeGrid(self.x, self.y, 5, true, {[Map.ACTOR]=true}) - if not x then - game.logPlayer(self, "Not enough space to invoke the guardian!") - return - end - print("Invoking guardian on", x, y) - - local NPC = require "mod.class.NPC" - local bear = NPC.new{ - type = "animal", subtype = "bear", - display = "q", color=colors.LIGHT_GREEN, - name = "guardian bear", faction = self.faction, - desc = [[A bear summoned by the powers of nature to help you.]], - autolevel = "warrior", - ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=3, }, - energy = { mod=1 }, - stats = { str=18, dex=13, mag=5, con=15 }, - resolvers.tmasteries{ ["technique/other"]=0.25 }, - - resolvers.talents{ [Talents.T_STUN]=2 }, - max_stamina = 100, - - resists = { [DamageType.COLD] = 20, [DamageType.NATURE] = 20 }, - level_range = {self.level, self.level}, exp_worth = 0, - - max_life = resolvers.rngavg(100,150), - life_rating = 10, - - combat_armor = 7, combat_def = 3, - combat = { dam=resolvers.rngavg(12,25), atk=10, apr=10, physspeed=2 }, - - summoner = self, - summon_time = util.bound(self:getTalentLevel(t) * self:combatSpellpower(0.10), 5, 90), - } - - bear:resolve() - game.zone:addEntity(game.level, bear, "actor", x, y) - - game:playSoundNear(self, "talents/spell_generic") return true end, info = function(self, t) - return ([[Call upon the forces of nature to summon a bear ally for %d turns. - The power of the ally will increase with the Magic stat]]):format(util.bound(self:getTalentLevel(t) * self:combatSpellpower(0.10), 5, 90)) + return ([[NOT FINISHED]]) end, } diff --git a/game/modules/tome/data/talents/divine/sun.lua b/game/modules/tome/data/talents/divine/sun.lua index 1669457b19..8404057919 100644 --- a/game/modules/tome/data/talents/divine/sun.lua +++ b/game/modules/tome/data/talents/divine/sun.lua @@ -22,7 +22,8 @@ newTalent{ type = {"divine/sun", 1}, require = divi_req1, points = 5, - cooldown = 9, + cooldown = 6, + positive = -15, tactical = { ATTACK = 10, }, @@ -38,7 +39,7 @@ newTalent{ -- Add a lasting map effect game.level.map:addEffect(self, x, y, 4, - DamageType.LIGHT, 6 + self:combatSpellpower(0.2) * self:getTalentLevel(t), + DamageType.LIGHT, 6 + self:combatSpellpower(0.3) * self:getTalentLevel(t), 0, 5, nil, {type="light_zone"}, @@ -50,7 +51,7 @@ newTalent{ end, info = function(self, t) return ([[Calls the power of the Sun into a searing light doing %0.2f damage and leaving a spot on the ground for 4 turns doing %0.2f damage. - The damage will increase with the Magic stat]]):format(6 + self:combatSpellpower(0.3) * self:getTalentLevel(t), 6 + self:combatSpellpower(0.2) * self:getTalentLevel(t)) + The damage will increase with the Magic stat]]):format(6 + self:combatSpellpower(0.3) * self:getTalentLevel(t), 6 + self:combatSpellpower(0.3) * self:getTalentLevel(t)) end, } @@ -60,6 +61,7 @@ newTalent{ require = divi_req2, points = 5, cooldown = 22, + positive = -15, tactical = { ATTACK = 10, }, @@ -70,7 +72,7 @@ newTalent{ local grids = self:project(tg, self.x, self.y, DamageType.BLIND, 3 + self:getTalentLevel(t)) self:project(tg, self.x, self.y, DamageType.LITE, 1) if self:getTalentLevel(t) then - self:project(tg, self.x, self.y, DamageType.LIGHT, 4 + self:combatSpellpower(0.1) * self:getTalentLevel(t)) + self:project(tg, self.x, self.y, DamageType.LIGHT, 4 + self:combatSpellpower(0.15) * self:getTalentLevel(t)) end game.level.map:particleEmitter(self.x, self.y, tg.radius, "sunburst", {radius=tg.radius, grids=grids, tx=self.x, ty=self.y, max_alpha=80}) game:playSoundNear(self, "talents/flame") @@ -81,7 +83,7 @@ newTalent{ At level 3 it will start dealing %0.2f light damage. The damage will increase with the Magic stat]]): format( - 4 + self:combatSpellpower(0.1) * self:getTalentLevel(t) + 4 + self:combatSpellpower(0.15) * self:getTalentLevel(t) ) end, } @@ -91,7 +93,8 @@ newTalent{ type = {"divine/sun",3}, require = divi_req3, points = 5, - cooldown = 10, + cooldown = 7, + positive = -20, tactical = { ATTACK = 10, }, @@ -100,7 +103,7 @@ newTalent{ local tg = {type="beam", range=self:getTalentRange(t), talent=t} local x, y = self:getTarget(tg) if not x or not y then return nil end - self:project(tg, x, y, DamageType.FIRE, self:spellCrit(10 + self:combatSpellpower(0.2) * self:getTalentLevel(t))) + self:project(tg, x, y, DamageType.FIRE, self:spellCrit(10 + self:combatSpellpower(0.4) * self:getTalentLevel(t))) local _ _, x, y = self:canProject(tg, x, y) game.level.map:particleEmitter(self.x, self.y, math.max(math.abs(x-self.x), math.abs(y-self.y)), "light_beam", {tx=x-self.x, ty=y-self.y}) @@ -108,9 +111,9 @@ newTalent{ return true end, info = function(self, t) - return ([[Fire a beam of sun flames at your foes, burning all those in line for %0.2f light damage. + return ([[Fire a beam of sun flames at your foes, burning all those in line for %0.2f fire damage. The damage will increase with the Magic stat]]): - format(10 + self:combatSpellpower(0.2) * self:getTalentLevel(t)) + format(10 + self:combatSpellpower(0.4) * self:getTalentLevel(t)) end, } @@ -119,14 +122,15 @@ newTalent{ type = {"divine/sun", 4}, require = divi_req4, points = 5, - cooldown = 35, + cooldown = 15, + positive = -20, tactical = { ATTACKAREA = 10, }, range = 3, action = function(self, t) local tg = {type="ball", range=0, radius=3, friendlyfire=false, talent=t} - local grids = self:project(tg, self.x, self.y, DamageType.LIGHT, self:spellCrit(10 + self:combatSpellpower(0.17) * self:getTalentLevel(t))) + local grids = self:project(tg, self.x, self.y, DamageType.LIGHT, self:spellCrit(10 + self:combatSpellpower(0.27) * self:getTalentLevel(t))) game.level.map:particleEmitter(self.x, self.y, tg.radius, "sunburst", {radius=tg.radius, grids=grids, tx=self.x, ty=self.y}) @@ -134,7 +138,7 @@ newTalent{ return true end, info = function(self, t) - return ([[Conjures a furious burst of sunlight, dealing %0.2f light damage to all those around you in a radius of 3. - The damage will increase with the Magic stat]]):format(self:getTalentLevel(t), 10 + self:combatSpellpower(0.17) * self:getTalentLevel(t)) + return ([[Conjures a furious burst of sunlight, dealing %0.2f light damage to all those around you in a radius of 4. + The damage will increase with the Magic stat]]):format(self:getTalentLevel(t), 10 + self:combatSpellpower(0.27) * self:getTalentLevel(t)) end, } diff --git a/game/modules/tome/data/talents/misc/misc.lua b/game/modules/tome/data/talents/misc/misc.lua index 6151fc4226..2244cc4d06 100644 --- a/game/modules/tome/data/talents/misc/misc.lua +++ b/game/modules/tome/data/talents/misc/misc.lua @@ -52,6 +52,20 @@ newTalent{ mode = "passive", hide = true, } +newTalent{ + name = "Positive Pool", + type = {"base/class", 1}, + info = "Allows you to have a positive energy pool.", + mode = "passive", + hide = true, +} +newTalent{ + name = "Negative Pool", + type = {"base/class", 1}, + info = "Allows you to have a negative energy pool.", + mode = "passive", + hide = true, +} newTalent{ name = "Improved Health I", diff --git a/game/modules/tome/data/talents/spells/divination.lua b/game/modules/tome/data/talents/spells/divination.lua index 69414b24f4..574273f3f9 100644 --- a/game/modules/tome/data/talents/spells/divination.lua +++ b/game/modules/tome/data/talents/spells/divination.lua @@ -58,7 +58,7 @@ newTalent{ if self:getTalentLevel(t) < 3 then self:showEquipInven("Identify object", function(o) return not o:isIdentified() end, function(o) o:identify(true) - game.logPlayer(self, "You identify: "..o:getName{do_color=true}) + game.logPlayer(self, "You identify: %s", o:getName{do_color=true}) return true end) return true diff --git a/game/modules/tome/data/talents/spells/fire.lua b/game/modules/tome/data/talents/spells/fire.lua index d93a083bd2..143cab10f1 100644 --- a/game/modules/tome/data/talents/spells/fire.lua +++ b/game/modules/tome/data/talents/spells/fire.lua @@ -33,13 +33,13 @@ newTalent{ local tg = {type="bolt", range=self:getTalentRange(t), talent=t} local x, y = self:getTarget(tg) if not x or not y then return nil end - self:project(tg, x, y, DamageType.FIREBURN, self:spellCrit(25 + self:combatSpellpower(1.2) * self:getTalentLevel(t)), {type="flame"}) + self:project(tg, x, y, DamageType.FIREBURN, self:spellCrit(25 + self:combatSpellpower(0.8) * self:getTalentLevel(t)), {type="flame"}) game:playSoundNear(self, "talents/fire") return true end, info = function(self, t) return ([[Conjures up a bolt of fire, setting the target ablaze and doing %0.2f fire damage over 3 turns. - The damage will increase with the Magic stat]]):format(25 + self:combatSpellpower(1.2) * self:getTalentLevel(t)) + The damage will increase with the Magic stat]]):format(25 + self:combatSpellpower(0.8) * self:getTalentLevel(t)) end, } diff --git a/game/modules/tome/data/zones/sandworm-lair/npcs.lua b/game/modules/tome/data/zones/sandworm-lair/npcs.lua index f1b2560b2c..a48ecca781 100644 --- a/game/modules/tome/data/zones/sandworm-lair/npcs.lua +++ b/game/modules/tome/data/zones/sandworm-lair/npcs.lua @@ -35,7 +35,7 @@ newEntity{ define_as = "SANDWORM_TUNNELER", Maybe following it is the only way to move around here...]], level_range = {12, 50}, exp_worth = 0, max_life = 10000, - faction = "sandworm burrowers", + faction = "sandworm-burrowers", energy = {mod=1}, move_body = 1, diff --git a/game/modules/tome/data/zones/sandworm-lair/zone.lua b/game/modules/tome/data/zones/sandworm-lair/zone.lua index 9b79d42321..74e584273f 100644 --- a/game/modules/tome/data/zones/sandworm-lair/zone.lua +++ b/game/modules/tome/data/zones/sandworm-lair/zone.lua @@ -25,6 +25,7 @@ return { decay = {300, 800}, actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end, width = 50, height = 50, + no_level_connectivity = true, -- all_remembered = true, -- all_lited = true, persistant = "zone", diff --git a/game/modules/tome/data/zones/tol-falas/npcs.lua b/game/modules/tome/data/zones/tol-falas/npcs.lua index f12ae19920..e73ad86d73 100644 --- a/game/modules/tome/data/zones/tol-falas/npcs.lua +++ b/game/modules/tome/data/zones/tol-falas/npcs.lua @@ -57,6 +57,7 @@ newEntity{ define_as = "THE_MASTER", see_invisible = 20, undead = 1, self_resurrect = 1, + open_door = 1, resolvers.talents{ [Talents.T_SUMMON]=1, diff --git a/game/modules/tome/load.lua b/game/modules/tome/load.lua index 798a233574..56e18084d6 100644 --- a/game/modules/tome/load.lua +++ b/game/modules/tome/load.lua @@ -74,7 +74,8 @@ ActorResource:defineResource("Stamina", "stamina", ActorTalents.T_STAMINA_POOL, ActorResource:defineResource("Mana", "mana", ActorTalents.T_MANA_POOL, "mana_regen", "Mana represents your reserve of magical energies. Each spell cast consumes mana and each sustained spell reduces your maximum mana.") ActorResource:defineResource("Equilibrium", "equilibrium", ActorTalents.T_EQUILIBRIUM_POOL, "equilibrium_regen", "Equilibrium represents your stand in the grand balance of nature. The closer it is to 0 the more in-balance you are. Being out of equilibrium will impact negatively on your ability to use Wild Gifts.") ActorResource:defineResource("Vim", "vim", ActorTalents.T_VIM_POOL, "vim_regen", "Vim represents the amount of life energies/souls you have stolen. Each corruption talents requires some.") ---ActorResource:defineResource("Destiny", "destiny", nil, "destiny_regen", "") +ActorResource:defineResource("Positive", "positive", ActorTalents.T_POSITIVE_POOL, "positive_regen", "Positive energy represents your reserve of powitive power. It slowly decreases.") +ActorResource:defineResource("Negative", "negative", ActorTalents.T_NEGATIVE_POOL, "negative_regen", "Negative energy represents your reserve of negative power. It slowly decreases.") -- Actor stats ActorStats:defineStat("Strength", "str", 10, 1, 100, "Strength defines your character's ability to apply physical force. It increases your melee damage, damage done with heavy weapons, your chance to resist physical effects, and carrying capacity.") diff --git a/ideas/factions.ods b/ideas/factions.ods index 55563a1dfed20f88bcdba97dca2e6a87a2f477e0..2ea66ef2410da5a518e1f00d8993fc44ebbcb94c 100644 GIT binary patch delta 11543 zcmZvCV{m3$*KKUu9oz2Mw$-tn&J*K_ZQJPB>e#lObZlGqob!I?-uJ7z`^O%0jhcH_ z?e$~MT5F7`pK11pO0wV(7$6`pARu*Zo$-ju;D3V=$3Kv+_77aM{f8t;G~h&l|F85! zeNe9dWRN7bfuj8zUi~LbgaG6Dn@SW0BLdnvtaGA#b{UYg_H>PUI&BQ-Cln0oAZP_3 z%0A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 MHx(2H+u!W}0bYe2O#lD@ delta 12017 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 diff --git a/ideas/zones.ods b/ideas/zones.ods index 510e4ea89fb5675987b6e3038d46030378ca35e2..c1fc3e2049d4dd4d681ce6ad21f1cdc7c07a7cf4 100644 GIT binary patch delta 9650 zcmZ8{1xy`XyY<0}ySuv`9EwYEcXx;4E<LzA#ogVVgL`p@Qe29=75`tk-_3XbNhWLM z*(;MwGI^f8*6bUj-$uyFa!}A%000~S(16yHh^zwjH<)n!0~zZ7z!k^8Me<}R2&}(p zvLOV|zboX)9S|7*p_l*CWN66G|ENSEX+SEL9`hOFoxf6foJXepZE0=JHr$@)1Er-0 z2%xnA&DGzgdM;_t^q$RNq-6`u4MYg?i&wqtDbRQixAmO^piYLXzySezLok+i7A4Ng zbpQ#$-)5h^be;~L4er}-PVQJ)wR__Q-F7)x5ztaJ;#Dey0tpm`Wp3^)sCVx|L_vYW z@SzYGwDbHX<b}y9v_Cg#*=mcwjIptika$kVr5-6}qAdF#jtu1T{cd;lXr9>_bF06o zO3x(Tv?>k0gsynV*!4jZi^MH&r%d1Mszxe7QnGECvvvd85(9<GxjHu-n7@6dUd?(y zq*UBB?9md3wlObU=Cxj=@rR-+pa=PPI;K()zz7b->OfI<(Jm!W7Ic;$+YWO=eJAE9 zGirk}JMSc}Hg4hxS=XM~oxZJ{znRh~Ij|c2q>Q39_So)GK{5hjVYT!bhEmh-yd<g; zh!fwlq3Leg!#7h?y$={#HFL?j_W`H+&D@dHoD1!0Q{*0B)SO?4?kez22Z1c))!qoW zmWrYrTE>-Pr8&f^@n);3<I8eFdok{WSy^kl$Pu=yIX2fjqAC&+rg;Zj&@`u;)%NJj z^%e0KcszS#b*JcYdQr=))s>vl#LG_t*=m_WGFxvlNp9>bZSWE!b(JFJuZzHF&egDD zh16QeA(<sfG>A&<MVJRNQXor6l_r<Zk)I<|BiEV>>I#)wPzBZR6QzcZqlbLuvqWzU z7OopzM%bvZ^O1b#$@|O&>}F7wlq#Vluy<tVhTss{Rw#$&)k?h(m$VN^7+UVjXBx1Q zDDeV}(8IS8R2xDP@{GrZX5^k}P?wW=aWG&|3$Br$k>3ew%9t0*ut1r$I|(*Wol?_x z{o)NPnl`FyD3ldwGG`iQylU9dAJcOu4I@}OvKC#6$|@le5H<3WmV{LW?2tp$l8|>l zWt1Y{O4r24N9h6x?x9WB{6qYSAx>aNH!NWnydd#?meE(3qT5GA!3LMVDQh)I4m-nh zJV<u`Ff_Pu>*mY1n1g=Ek{pka4+Ix1t`bV+ln(Ud?n{#$cu}K}Ral10krW7o)S-E^ z4aDo^%)=QKpuoU6645!g$x?QGO}x^)Ef>%@)>co^e5q&BNObCORwRH*Q6w`&-T`RP zs??%VQs7#qWT+(ldeRPoj#Kkdwe~@-WN)+W^Mi@Jsyy4E<pTZia$^Xte1v~r{9GB( zJi*iqyf~$zAK?l`E05sJzEi+78#odvlGk&`@YVHInfR824rCGXiXmI!0P|#UDH7En zfFk6zw8-~;7RcTkHOYKt3!~#Z)X&-I?}KvLqcDhrH>U!cBA!2U0*6Pf3}5S#@V_V< zS&mZG2+Va1TY`Rw)r{Wzyy2;l;q?o7X~us{;V@+yA!3c#MSTCM&FtYUCbljhdk-Fs z$fIO0)G+ylqo&2d%AvrO0#Sp2<J{e`FzT6H#_%NK)CpfqB1+L%y*?@VMS#c&4+R%4 zYiCJ6-}#~}6KV`Ly>z#l)>$B4z{Tm?Qsxlf;f8|E7cbCSQ0T);?#lU^N@FB9(@OKp z@1BmLL@1})jxPoyQQ8;E&R=C+VeuSy2bydwZt@Xe!rbo7x-+C_4ZeAk2ubJKpmw)> ze$=m%h|+T-AJikT+8ZHS=Uq!e{k0hr?>TKpSX;%!r~B)@0SrZO2aG#d%9r%FQimfh z9Q?LryWIxrsNDLQzv+}?(1E>#;`D8_&}Y!yGHr{dEs+JcHT-6w>AQk=gj<f2AbZi& zpwEg<0>|yzoQB$-iA}_U#e#zuRa(Z6A|9(Wnb}R?O1fUH8WFCZh@Nh6TKm3Tr{W;V z%QTUNfHvJh2JZ0*idsRb!A(TV>mn1j9SOyRu=F#iAgvHw=&Q$HvPRy30PhZC-ocn; z`P5<XTidr-8)HT3h(P9T_&}bxOjYjCRDL~mKIuim(LG*k0L0kfx@a_xyl0zsEIWyG zdjB?7R$g8`KNNGARX3L7n8!Q$6toyBq?VVV8MIl{(b^cm;XiBk?xm?i<O1!_CLx{M zBb^Sy_)x&-Bwq<%a+DrB;i*mw`_WXbJA5xK<2rUdxi{4>&xn_X6fY;OmPmz=S-!7N zx;UTA6|%w^;AxI;*ap{CJWqGdP${!5@;)(sEg6HUx4FqgKxj2r&chw;F)YDL$lPCf zs)`GzewCV7hS)@7ai1Vj&M-<oucBsiBr*t^)hZZR0MUov7N&kv`OpclkErTKS#e>B zL{qKIXf8*x-OVVA#jkLrK=7AV>RU0{AB-SOIB(D!N;KLKdA}B{s57_Sh^SgKAX5x{ zz&pW&zjh+w$^5Op>4{^P?=ZjHirGbcTN_R&W8b=BV#s%P1WbL+miYdx!#z}*IPM1` zpKUUZB&IaCf+*T%ps?5h|BgXp3!x<RF#f$-8xE&G@S$s5K`z!}dM(9}0)>l~^@oOE zTNsnH%S`_%>xOp%&I=ZvNh#H8aqzkGTF)h#?hk>9F3E*w2pj3sHdj|mft(%X0oHNJ zIDp!#ZeC<H_?wNjuunPcXl0ou{cmJYA`Gm_XS3?U;t{_e>ORI0=W|fOBarQTvD;^` zm{6?-`Fez6pE;9Mprk($-1{Br_ivEJrq0F0nNE&ASS>CGWD&mv@Ut1eVDXss)nsGo zp^I^(f+lKT_ZF+%T)RR%1M>B%ICOga&M-e6ye6lmOvfa#Lw9@+D~fR!)Rs#FnI268 z-8PJ^r-04t#@3dLAicF+L)CNqu!mZ`N6DBe&8PSMg|rnB;U69ATmeiDXrf6frvW93 z_toOvUj+IdBC&0zEs5)4>8HUBtqK(|Drm;Awx2#Qj}5%Gotdb2AJCDs<9U^l4gh}J zu3mcqv@yP+^D7wLJB`g_#+LdZi}B`JNr`DM&7=;tRL_qwfVH%-AxXw+f5O4WG)Dk| ziV<l7pDUseg7#)N5!99cq>5>GhY0TCGw<$OJ`ORRa64ju7ui#9#W%ClyGOLij()oV zEW8leugv^2L4KH=b?122%?J0c{S|z=GB|MlFeufNg(ivg4mewhzSlaSjBfvp4Q7r; zCRnRv*7|8@nsD^VtUbQe!K9>c`|F9GGo|dNt`uY%*b4C@N`EXjN!Y+(Y2P?5{=dGB z3VDJ+J6b}Vv~+eG&ElkF{$#V?APKmi@n+8gPZ%R9j3Ker!Agn;?#@VFxwT&Jw!}Yt zYh#0gC+Oftwu78s<W`M94sh^8)*+64x4d)p!iXhrvsRqTi;gT0<vk1^0wEXMy;jAz z$fkcB6MV)-%9Ra<ind^u4K*v+ntJULyjJ&1YQ=Ef(XRBRS1*5Q9j=}lx)u{VNTmFP z22woC`H4`?HtazmK@NqF>*z|M^KZh>2$k#4_UH>4eS<no*owgeH7R}QprKQ7C2t<x zSe;(6;t|7P7y4akw3xj#+%HvWS=f_gGe$?tsW!tdBtveIbu_TrZAPCOk`XgP@A<Dw zuZe`{Y%W7u_nl2|R=?+~0UA`kMq<{(lrxuq81P_PU!s6L9sHd?RKs@82z?&NB5=E& z4OPo?FC;G%RB1nh#=4WcbUsgw)<1*iPaAlNFW^V^z*d@1?OkYF0rk$CO><L_g6omY zyZdTG#jDwdu87z+dAk$CFpc3;P2LIjH5&l_b;7;Zp<)Y0I{UawATEaAhZ&sA$4g$a z`>BY+EQ9}qBUDEA(|9_W#M>V=Bf*WAw}8RIN#0SY*<c~i(ZQyOJ9Vy5X%7JHXbW2v zMVy_vL=aags1A*X3>FRttllJ!L|2^`=?=*h@cxCX23d5@7ym(n3xm#sT;5_jiv38& zuS!HnQ->bM*e5z<2nq(iosQLaw$t9f{IVI$k8y!$HrYDapA(SXEw#<OKJf@wEu)QS z=m_d8>x~8ZK0jkSU$CBles99JM;%G$(bh|cP0}S07%n@qpq|K;*?H)Fd_@~)YY*Ub zEZI}d)?{52-bnIvk?XN3#ls|ix33-qN3Fzw86=P?KN}wyyu3+EQ{j;YuP^{H<kIeW zj$GsPdij{{k9(ZwVh_F=pmPtdSA#op*1S7&I$=NrQCr?jMumiI+^4>-l+H!a(V8A% zt5UBcKahcynG{O8N~Lnk$p@lVb{6{=tr!GT-3^7W?oFDe8M<0QtO+8dYEEH)R(qCS z3$@}uUIss}KSCowY;puuuQ&@Mv>DWg%tkFAGXVXG+zV9k?`bdXzRLrFMwIOcqe7!3 ze+EGHPEJxjs=9wX$0ebkpiT*=Q@NbW7+M~xP$n9xm%|#~B28-<)v&U_@%?<@syQ#b z5B)`J`_S%IJI;0X)`f}{&)|+ww%@$yU`xuk(#sc4!9SeU8qYS`k5YWdza~4+bHi*( z8tS!P;f#J~?}^xK8UFU$A9-WWE>7Q|uXh6}TKtJybB!Ap_lTs&+9q&i3NIlSTzEk! z>UuQLB45v!=|G8KB6)B)g`=-4`N;zIbiFY5p-Q0Fw{GvBt+t9!CfXUxuHE;)JR7<1 z8^lRvY20{-cfB!bzQ=-@?e}fGds+NyCE1#s5EPC}s$CcEn!ADZMMH%57iUM|A(bAe zz5@~Ztt$<B(t+*;$uAOQRdcy(_@=ijp6km$X-zBv)Ho%(igd;?o@l}2H|w6kyoG_F zLfNdo7I>p3*V^7n5;`h^?32Ttd5DW6(e3SC9&~>g={E=+8%zL@-#fOSNh%EU7{DQZ z3ljaq(Vpb=m<Bh^K*q8I@D-srLe>DiI5e1yA{kF*nwmfjR|A``O5Y&4Z*wY2e=6y8 zhZVfDE&X^KPfRf~WFM-zQ~B^IOPNxNbqSVa>P>9M(vGXmx)wS!D5xRIv`)0XMK%yO z$*b5AWpav#fxBDsQL-bFg5}tm@jt1;BYQIXwAFHxPD+g@`Zn15>_07Z6e|is5JUaR z`}{(>1v-qN@CTp0TyA|pOP9rVh{S{;{aJ<mZX=t780tNO_<jA)La{UnwK;Ty=QI>e z%g^}dvLd#l0{!5Z7}WId5hRnb3}lG@RTvBoU0Q)Sl`W=1ie5xA?4QIX#ITG?P&Co* z_VE!MZ}jew9+eIs0(H(whhk|!50dF+J5ch0jn(82{wd;BCeX3&Sq}(@2%jQAUZ|!F z>O7>-i3w{8A~WJ*RJpD$;_p4UiiNkx8c4(JUn23}vTndc!1K<O1$m?vkILj<Se@}- zeD2S;e|Y7^tbA%(uKsu&_o}0;m3JNs8G?pbSK1=LAj|;N;UB8#dsxzHtNl?yw)$Gx z{@Y?f$s^^%;?t-UxZzP9Z_n>olbK5u{X{D?id@WPdG)WI+ryNVAr=_}Hg~1wkDI#> zWjR>5tUZCCQd9uIpcw%8Hz|OFgZn!vNG8D`25mU};>POPQiB^;ZtgQ5_n04XI5QSk zIWxtNdf(u{pmr^h2rNEpPxH+cT*@^M|4w%*th-Qar<PwccA0&9%^$v>=;H352DDNN zDHhmhzs<P(Ooi+vz2LRi<NGoXcB^X>*1x7JgwP2W7{g3rP^zS)oQK#`uZ{i@n-%Rg z1!^dE$=MAVYe85Rpse81U754Pti)rRF3lu#+R#np=UUP>BW(TS;bRU}s}~MQT1sHY zWUb2+|3`g~|3_DZFN6|%wRQ9`anW&jELe>}kJ62o$TIvOCK_)_s|uUF3414hz@o$W z6ZWSFU}3NfXWmreFpb1c#Vcp4BK=gd9*BZQE*Sg5oC{L|5<0c&)Frd1Q=zEm;d=jM zZ4`<fmY<1cB?E#-&H`VNHN`@^O`(1bdH)e(qp$es^mm(@L8Q4YQ|wo1Y`9DXL(9P0 zU#`=Pm23H{XJHouk25OQ`r@RLJFueI=v-bv1XLg*!?5=}Ey4D0I5d)<r%7$r1t46( zqbErCB<BJKin+T%ltmqNl>s;{69B!{NN^dlLUku>u_yLCja980NoGs1&yK@+1(7pv zA|(+TD-}fYuPRd>jX}lhYHx@2Jec80_xxFAvVt=&g1W2|d{!EIbgYmxSOyEIL=|ii zn+vwp0T1UnuOp-KBw4g<-pk0oX%J!dI0;3()5yUsi9H*e;x!$%49UPX%o9}a%xK3F z@B_ZA&1)2MUA!#Q%i4`oUFN{cc|$LiJkn`;oTkr*g+4=W9udy0HZ(7+OI{=t@k@bw zeJy0Bak?>@y2JXgOf(WA5n}dvr{*?#(Cs8*g*xw2cepS(|M-Wt(VYQ*6R2y1JK|5~ z4(GHpl35}U3Svf$+L)Qu2>ewX^?_0GmxU>CIX*ODar!&T`4E`LpzV3uWWP3Ne%y*{ z>t0tO&?sj-m*{I<6k$hKI$<Q^{+|s`J+d-CS?iNI^+dcgF@nL?kcCm`lWUzPI2ZE# zc!7t|%$LJDKX8<wmD9=z4M;vRyIl|^?gz6~>J+_>E?jgAJQPf;u;!31%ctd)n!f9l zUq7|41UL*D$qg}!J02>M+Qm!k7?PZ=%ccv*!byp%?kXDe>Z0sPdQD&uAuzHvsB^=b zj{uM92m9B_QVl*m6;ZHO_>A{=1jF}z_LHoath1~oqJk;Yw3eEr=AiS*0h89Zmzmx$ z*B4;Fknhts&*yJ(yWF9Cs_UT^JmRcTzxs%Ks^{vj?I=dS=9~=F3L$$<wNnn8T=d-_ z0yNU+`kpzq1&|{HJhe^Pk~j!ZL{K;v>tuPg`~WJch48lTmzqQ<AtU@=hymuIEzx%* z7KqL`dBuuq+HVBwe4vSun;XXdXO5{unMvt*ORA8ep$b}W7PmI+IsQ|k%^0|4(*Y8B z(H=MsnTz9Hk(=a&Si%7Et^;IlM~#%(cr@R4PPGf=0|BOtlEPc1q{ULRsNx`8BYFW| zRnE7RE$T?!ZqKLkXnu&jK0EG%3<penp&Na!Ww&H%*EZNiYEX$$s|keRfOx&xfLdEw z_L;GJ8A}}-jx)-!9ko2^1ehKE-M*pI>(hBhMju5OpCpCg0udH<51-FO$~^1s`=pUU zF0O$Pfu+X$6M_6rN^zQHGRDcisTd0GmJZ7OIx}v;yF6U*#BCX;`{d7y?5E$OBJ4ys zd4&*r!dZIaL?FLe9$$hrs5hpo`#jlV0?6mEbT`@3rftWf()ZrR4Wm8lD`-Yq3?@e0 zn?+!T=($aGNyTMUZg5?GZ#R1{U~C+85SIYi-QCmEBX-{JLS+{@%K*rc^9@ylM?PtA zg~wS_pEEjc`Hq_DF*o`3klXNUwRnH0ZG@04gu7dp5@>DZV00SY0+-n0D-YVKodV`_ znkj!gVs>HF68Z3LavWN$bS!yOyzX2<2Su<yj+-O)7)Lj6m+>Fhty|VEYI~FqNM`?H zDOntX_O~AmA%WeXo(I<DiQ6bQqbJTM|CUS_WnybX<JKw-V(l3Jf;I6sF!B9Il=BPf z-?QO6aYaPRH4FeyNc5lK@INuKK=@X!bdv%eB_tvTP#wtm8OZgSgEQHeKm>w4xr=}m zj+0xO>#vN5v+0&V7~-F-n2U%3q-mp`gh<e;-t17~uDemr%aW3j(T<(jYP{BN9u*{F zL!^dDgDoT7Va9VFSFtx$;zBOIz+SH+jD5Y(;qE#}EzyVFjIOTV9%y}{G5Rb1$<u23 zHP7hMH<$GCw(HazbayLyvF^}pASY*ch&>a%!hJ5qT*IvUoS>k@U-=vaN?qpOOo_f& zxx}81-IVuQXve;h0ki`#{iL;Igk*LQ9N2&<fgscJCVs<XoVziO_4}^TAzju%1=&ZH z>gi_l9k*!Vny6vZQm=JLStFxN1R^lx^ZX?(?Otb2VenMx;i7}XU1k3rUcPeS=V3;6 zOug`#j`S=48bkcBp2u)dS66(nc53jVR3#$!Nc+X9yI7fG!`KnaP|^x(L6c|nXI$#_ zzTd;<0Vh}%j5|7w(}!^5v=i0B0PC-YyQltjVv*hg88pKk4Tz8O`}28+!hXL(Scy<0 zxVMd791fktf7&=ZU#@TAV$#^x)s}@JSKKTJ@Qxw;aTIR{eTw4-oos}Cg#6}h`u?lC z?Z%)}3^?@yPEUYO!X{|S7VNfeM^D-Js+WG&ccTC_34LjjF-Ky~&$xBMmfE{nDLE+m z_B~R)KIH{sjZAFav*O{~IGHaLU?B$aAgv)--XPlit%)*GAV7+9_%JQ6SR;@i#Kn&X zKkg>wOLCIWRPfOO2zy^AsKiYo_K2r*@EOg!OC(l*uHfeT{$;3OLFTTEhQ9$lSPce2 z*Lb7?gI<otqA_^hFn6Ml$<$?$i*Sc(*<$_qXneI8l^xT{)u%#R(xA9;PYkFZ!0h?d za`<_i?VS3_CXOB(n61zSi+ZPOOB%I^@7G6NjNE*>M0qa>(%#osh|8yi`{K;a>eL&X zkPEyP(j&028u(6rJviEdH9w$C=|gu@F=EIifr$u~W7t-El_u!Cl&<Z3mMNJv;^nXm znHoS25~L}z#u7p92@Cp47yZNH#Jfg}aKVQPC)yy^Gd}|c8;6TPC9IJiHeZ>J9<fa8 ztm@)L)sh<z)Y07D-kz#46A3-c%dyE>jQ~M8Sd|)W7&Q`X$$+r$VEE%uls|uICWU;a zQBydzP78)Sq<x8{QPKcQ^CjRQf3ozA_q&#NPB~%PMKdQBxpv6{=R+?)B}Dul*ac>f z{Ne7x=^>cUuFY6@w_Sh(Ug-*@mY%tl{&&5aQU(JD=*0TERb>{)5$)jQT>rDvK@@#> zGnCP6RBj!)?bO$vUgzMM#8?*9{Ih>9>f~@4aJgq*$C^nKQyKB+Lm6FA&NqD(7g?fB z@F8#&FNB&9Snlw1+D^vLO!#FZKB={ZtE*-xO&fp9Yzggavj}P1Qzfx*o(_Aj8b*Ze z^_b!<$lM>j;p$d#^B{>pLsi?FI_tbp!b%XmA~^NS!>#n7rpTN(let<Xc*(@yASdY( z^^)t=#4c*<$?>KqP?&D5gW~6(8&8mP&+<#+w+m6~U5r!95OQp8VwjgGLtEY#q2m=? zm+QQjm)HV7hjYGj0HIHK>Jz|HhShQ2`niJ`<n%rpZR8Oygp?I-j*+Xtc+2Z04f{Cd z`?00@2~4FKy9@z?(h&DH*`gCo1j}<fp0|gg8TXc${So{DL)5lDVGLBZ%FN2byqX!O z!jR!`RAop>D!hHQu?yL^j;n?r-I<Vt$&$m{KJ8-rLIZW6q-O6f=jnz)MQK~S6q%j^ zYM543b$E39#wB-vgkd}C+Q<twpHI+|bBGUSqx&gaV>%E+6j31-kAQvMR`0LctM^<- z7DG9+-(g9#&-q%zMSZO(Z+d@BQt#QT+CH9-AYG(hC>*6jU1NeN{u>cLLM|BDwwGra z0!=RLW`Be;&;3oo81Jyg8iF#m2b-AyG!he1!s8K@LQa=ns)^zQpW+KO;EO)C@`8XK zFxTfAd==`+Q)<IEJInVAUPezzLW8<I{awB>YJh1_o|&^HL#EhlU60(kQD9|L8fO)q zN|0uz=t{G3bzY#+X{l7xS+h;yt$c)rLMXcPP&nl&t}5zlk_V66J%JFAeC2Bm2qzq8 zyQ84$r>U=6KrD(UC!&NiDbG~E&>=GpY~X^=cItxsITFKS^wQEOV_)BImbTD1FJo}{ z9&LR!IJrSZfQdQev$%nst!=;-UEM^^k5%@RXf0y$epE?&%E6R3U<nM(Anf2q%9ck` zW9Pox7HWw{08L>SBduwLfbwcCi2L)IMeyoet*NQ5gh!4aq%tyw{rD;)N@*mPVYT%; z4Z(;iJzv@u^(tz!)}qYf>sh)rW<U-t0gM$EbRLS<(yz^a8U~y$TX)LQ%P!2HQETki zsJ!?>TSls)VPnMsKIs~+>8*y3GV`qVaMFlPMY4UaT>c2+wp9>i-<hTKL5)!iTRC}t zW;Ww92S=BUa=9*9BkE8ro(yBpAqNp@XUi06-Aqse1F$eUq$aP-9#@B=Z4b%Yy^$Y} z4Q;f?R5yh5y|3y{9S%Z5W#7Dyn&N2#ItB)Gau~`6))q7}aM7xFu#laR->+c2gTdZx zD==zzEgtH&kztXT<*>&f&_q1tql?tQN#tj8lqeLX^G)q~0)U{Esw?0Xj5(_Y8IzTG z->>>9E#ol#%HvM1#!|%T73rWV!51)k%rJpRumx-PodnE;>tUO@@Phj|#8*1)A<jo? zCS6++JaXYagkH9a_!Vzg^YFPO&O+p5aU%@zn#q%^t_$Bvxkt_uwBJu!7AfYAhVC12 z42@xJ#*cq6;aF`T7<KmR489KChDeHGcqG7V*nX_wB1ZM%y93@Y1AB>Ma*G&2fTw*A z1V2=RRUDx?!_X&K7mxV}Tyd~CA4Qpt1_m3t@T^XXLSVmTW!-e2j;TnlJ4-CiVGAhv zadTv)u2nF+)$vG>!!MiFc>V30@hy0v)8)q@#jicd@!r2|FDzW3<pOHhU%$wq5&pB& z`Hu}orDg`P2m%A+oCix3=8au#ypzw7%M+>Nsm#XegxS+_hlWE4TuT?&Py?8ce=W(r zocq+Aq9W#HPX!`QT8me8Ewpgtv)lr6xSMzK4W6Z5W?xS;1%*s;Pe@$FNz0kw6I9*N zt!#O*@7-O+5&3F3sOrnr_Jhmi+NL4%f0^8;b)SM5O-}g{gO1h2vt;lWCl2VMHoqKR z;^n0>w&>P$*=~5a<NFUSh<~Z^?Zq0#dm*PIsn@imuC6@AJ-Bc2XjQohwW-u~wF^JL z%UU6XIL*UI-5zb_`?VgYVP`FC?jJ|~Y{K<*rG3RrQrkE@pdSKRJO3-;0lRW+x@=8_ zQ5p#J>4|z<&+B`cD2bWUw1;S(7E5JI(GEDEtSP5bi-pw|b}!8j>pSq?7{X8$M*^&6 z!zFpn+9M!g7U5$kra<1Y2C2*8Q2m-z%4RJ#1EGrJEjPC!j&xBlkBrgCIWoj=Oq)rL z8zT%1EO7~`16LbPwHDST_MYp{*pC^ETyubmFwptQv^UvMlO}*>uMssU`lgTSNATxu zpT-w7j7~t1euF7qD2#51b2d@l><(EqJ$wr*ILoqosg%yQCD+Wh(K0_?i2`Y3o}faL zPUGT4r6NLP7F*)An$`dc<fU`nM_TmT{0<j~58WZ3jnM_Es!2sk@nf9<8M(cztIZ(e zg&+k)?zgF*Zb%)aWo2fIRYA&#V$5(YWQ!kJ$_trVTtVW*#u|ds^h#YUm_!O#ELI`B z5oI`GEUZz;4W8m%Fb*@?SculnB1))4yFq4<TP87pLfu<*bcmnB@&QdL?-U9F`#b1= z9_4cpItQH_$<m-)Vr<z5ydX2{S5rU?OI5eF_v~i1SGER9#wjcqviGxPIMJN}0^4Qi zrZa$I(`?NA$DuT34EcV;XB5hTF!O-PFA)kVK;zV1327ELlH8V07m*4%FXk9bXtv#I z$p^Cc{*s?$2QFETNZ=jA<H8TMi!1Xmy>ge1a<vBu5t+`Y-L0}!UXk!4=*&Qx_1>cm z;9!9FAG_-N*n}dlK+u7|COXf1eY<n?@dEHFA><Br@|J=Mo4f)}2IMB~BbS6OYe}&i zCZY1>{R;KOSz~I?(4bi0M=KxNLF9tMOwkY>4@$BH1}uDgr?pAcA5}ZW(v9AUXLCM$ zR%imFd6P%AZRO~8wY|32J4R5^`xW0&`@1wRF@_>TP074op5Hk&I1YJldi%qm4av;1 zYKu_G|K~Sky`0wfDQ+B^w?LJqBidazoWMO_{}tMT6?|re-qJOx6Of+Np6(x@?UaEn zb8l><!}FtSn|Q=aHLH9tyQ{xaY>Q<?TyD2wC~vb7n4{?Ep@{q<W*Y=nGnh0m`q^gJ z5H6~u)tHwvUH%zgswM3_SE)zolaG0l=2mA%-l!cU&+_Eyx?k&PTH@mp0dG#``@s(i z%w7ZMPJgpin}r`oLI9B066xI%6JczOA{w+gA6B0*MdXcB&|MMZ*Ae0~Z;>hd-LVws zD}e{H3Fg8Dv^Ra)4KL8DnPeHe4&H>)tsbM<HJ)>fHT$}Q@`Pi&V?UN!%0}_z10aO( z<eV5}kMmJ#(8lP<F1$^)yPfD8SxqYhRTie)`VFpvQM|cGI!|sGe#)d-DD*KjGbB=N zpZrw5bt*#`AiRoO8HZ+yR_JoWo8)I27g>(D5ADq-o?DV+DJdi~-*l5MuH?6#UEjRK zBBzA+5Fzak$Nb^e*_iEd(fq{vcMH98q<EqI%Pe*<{C_R9$&n%YUk~`k_|HM3WDce; z|9C=QCe?p%mPz~{#9{uoZpbY4KXt<7L1w!D<?t;3a!wXm<i8?Hf&UFJlcQOf;Qy|C z|J$)9_pxB}VPXIPu5RA;7OpH_U+tCUARw^-|9cGTAOAWE1pxeg|JC;Y>k>#tVZ|l= z`&s`z6Y%~^0RYe^OR&<C{jK@$mqz+OntQ6`XjX!MM55|1;xZ5bfHf=tfc<|&nheR` R7;ux<S<yc2GXA~t{{Y>xMSTDO delta 9690 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 afIJb%fb*ZxG2nt4CAKn9L0;4R&G{db-+&(g -- GitLab