diff --git a/.gitignore b/.gitignore index 3931aabd627a7eb51aacf978f65341fdfe482e53..c8d928f684e2816ea99ef0147ee92c4e55825012 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ recompile.sh *.dll te4_log.txt debug.log +/.idea/ diff --git a/game/modules/tome/class/NicerTiles.lua b/game/modules/tome/class/NicerTiles.lua index c12cb01afde891855bd4ebf30c8cc528f9bf9a92..e699dee4e72244dc8c6d8a455de0b5e1bb49f304 100644 --- a/game/modules/tome/class/NicerTiles.lua +++ b/game/modules/tome/class/NicerTiles.lua @@ -1002,6 +1002,22 @@ molten_lava = { method="borders", type="molten_lava", forbid={grass=true, jungle default7i={add_mos_shader="lava", add_mos={{image="terrain/lava/molten_lava_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=2}, default9i={add_mos_shader="lava", add_mos={{image="terrain/lava/molten_lava_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=2}, }, +dunes = { method="borders", type="dunes", forbid={}, use_type=true, + default8={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes8.png", display_y=-1}}, min=1, max=1}, + default2={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes2.png", display_y=1}}, min=1, max=1}, + default4={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes4.png", display_x=-1}}, min=1, max=1}, + default6={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes6.png", display_x=1}}, min=1, max=1}, + + default1={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes9i.png", display_x=-1, display_y=1}}, min=1, max=1}, + default3={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes7i.png", display_x=1, display_y=1}}, min=1, max=1}, + default7={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes3i.png", display_x=-1, display_y=-1}}, min=1, max=1}, + default9={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes1i.png", display_x=1, display_y=-1}}, min=1, max=1}, + + default1i={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes1.png", display_x=-1, display_y=1}}, min=1, max=1}, + default3i={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes3.png", display_x=1, display_y=1}}, min=1, max=1}, + default7i={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes7.png", display_x=-1, display_y=-1}}, min=1, max=1}, + default9i={z=3, copy_base=true, add_mos={{image="terrain/dunes/dunes9.png", display_x=1, display_y=-1}}, min=1, max=1}, +}, mountain = { method="borders", type="mountain", forbid={}, use_type=true, default8={z=3, copy_base=true, add_displays={{image="terrain/mountain8.png", display_y=-1, z=16}}, min=1, max=1}, default2={z=3, copy_base=true, add_mos={{image="terrain/mountain2.png", display_y=1}}, min=1, max=1}, diff --git a/game/modules/tome/data/general/encounters/maj-eyal.lua b/game/modules/tome/data/general/encounters/maj-eyal.lua index 14b788ab78b6d2653c69a670df60ce295394a8a6..7934f0b47767ca62e7be4d4191aa16d7c6eb35eb 100644 --- a/game/modules/tome/data/general/encounters/maj-eyal.lua +++ b/game/modules/tome/data/general/encounters/maj-eyal.lua @@ -44,9 +44,9 @@ newEntity{ newEntity{ name = "Lost merchant", type = "hostile", subtype = "special", unique = true, - level_range = {10, 20}, + level_range = {14, 28}, rarity = 7, - min_level = 10, + min_level = 18, on_world_encounter = "merchant-quest", on_encounter = function(self, who) who.energy.value = game.energy_to_act diff --git a/game/modules/tome/data/general/grids/sanddunes.lua b/game/modules/tome/data/general/grids/sanddunes.lua index 985edb127b72ff7861ada71b4563a4bb25cb3bcc..a142c0acb7e6b1248c993fae45ab130becd9502d 100644 --- a/game/modules/tome/data/general/grids/sanddunes.lua +++ b/game/modules/tome/data/general/grids/sanddunes.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -local sanddunes_editer = {method="borders_def", def="mountain"} +local sanddunes_editer = {method="borders_def", def="dunes"} newEntity{ define_as = "SAND_FLOOR", @@ -30,7 +30,7 @@ newEntity{ newEntity{ define_as = "SAND_DUNE", type = "dune", subtype = "sand", - name = "sand dune", image = "terrain/rocky_mountain.png", + name = "sand dune", image = "terrain/dunes/dunes5.png", display = '^', color=colors.SANDY_BROWN, back_color=colors.LIGHT_UMBER, always_remember = true, can_pass = {pass_wall=1}, @@ -38,14 +38,14 @@ newEntity{ block_sight = true, dig = "SAND_FLOOR", nice_editer = sanddunes_editer, - nice_tiler = { method="replace", base={"SAND_DUNE", 70, 1, 6} }, + nice_tiler = { method="replace", base={"SAND_DUNE", 100, 1, 7} }, } -for i = 1, 6 do newEntity{ base="SAND_DUNE", define_as = "SAND_DUNE"..i, image = "terrain/mountain5_"..i..".png"} end +for i = 1, 7 do newEntity{ base="SAND_DUNE", define_as = "SAND_DUNE"..i, image = "terrain/dunes/dunes5_"..i..".png"} end newEntity{ define_as = "HARDSAND_DUNE", type = "dune", subtype = "sand", - name = "solidified sand dune", image = "terrain/rocky_mountain.png", + name = "solidified sand dune", image = "terrain/dunes/dunes5.png", display = '#', color=colors.SANDY_BROWN, back_color=colors.LIGHT_UMBER, always_remember = true, does_block_move = true, @@ -53,9 +53,9 @@ newEntity{ block_sense = true, block_esp = true, nice_editer = sanddunes_editer, - nice_tiler = { method="replace", base={"HARDSAND_DUNE", 70, 1, 6} }, + nice_tiler = { method="replace", base={"HARDSAND_DUNE", 100, 1, 7} }, } -for i = 1, 6 do newEntity{ base="HARDSAND_DUNE", define_as = "HARDSAND_DUNE"..i, image = "terrain/mountain5_"..i..".png"} end +for i = 1, 7 do newEntity{ base="HARDSAND_DUNE", define_as = "HARDSAND_DUNE"..i, image = "terrain/dunes/dunes5_"..i..".png"} end newEntity{ define_as = "PALMTREE", diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua index 9b080bdcf172c2617e55ff7909e429ddeb776eb1..e09ba56ed14d5194b918933b313dba13f7f456cc 100644 --- a/game/modules/tome/data/general/objects/boss-artifacts.lua +++ b/game/modules/tome/data/general/objects/boss-artifacts.lua @@ -31,6 +31,7 @@ newEntity{ define_as = "RUNGOF_FANG", level_range = {20, 35}, rarity = false, display = "*", color=colors.DARK_RED, + cost = 100, encumber = 1, not_in_stores = true, desc = _t[[A fang from the great warg, Rungof, still covered in blood.]], diff --git a/game/modules/tome/data/general/objects/egos/cloak.lua b/game/modules/tome/data/general/objects/egos/cloak.lua index 4a2a42a9735b451d93c31594bd729c30138add0a..cef179298f0dd7f9d86687032b87ed41dcdd4ae0 100644 --- a/game/modules/tome/data/general/objects/egos/cloak.lua +++ b/game/modules/tome/data/general/objects/egos/cloak.lua @@ -238,9 +238,8 @@ newEntity{ [Stats.STAT_DEX] = resolvers.mbonus_material(5, 1), [Stats.STAT_CON] = resolvers.mbonus_material(5, 1), }, - combat_spellresist = resolvers.mbonus_material(20, 10, function(e, v) return 0, -v end), + combat_spellresist = resolvers.mbonus_material(12, 3, function(e, v) return 0, v end), stamina_regen = resolvers.mbonus_material(12, 3, function(e, v) v=v/10 return 0, v end), - mana_regen = resolvers.mbonus_material(50, 10, function(e, v) v=v/100 return 0, -v end), talents_types_mastery = { ["technique/combat-training"] = resolvers.mbonus_material(2, 2, function(e, v) v=v/10 return 0, v end), }, diff --git a/game/modules/tome/data/general/objects/egos/helm.lua b/game/modules/tome/data/general/objects/egos/helm.lua index b5b3aa62eb8cbf1f9317b188e7b36740b2be4f54..1010bd1a6f7394593f54007a26d4f36948222145 100644 --- a/game/modules/tome/data/general/objects/egos/helm.lua +++ b/game/modules/tome/data/general/objects/egos/helm.lua @@ -325,9 +325,6 @@ newEntity{ rarity = 30, cost = 80, wielder = { - resists={ - [DamageType.LIGHT] = resolvers.mbonus_material(25, 15, function(e, v) return 0, -v end), - }, inc_stats = { [Stats.STAT_STR] = resolvers.mbonus_material(8, 1), [Stats.STAT_DEX] = resolvers.mbonus_material(8, 1), diff --git a/game/modules/tome/data/general/objects/egos/wizard-hat.lua b/game/modules/tome/data/general/objects/egos/wizard-hat.lua index e5833e263dd96b1fbf34067241e58c6ea05911e4..fe6d7924fbd565474a70a59252fc6ef231fd300b 100644 --- a/game/modules/tome/data/general/objects/egos/wizard-hat.lua +++ b/game/modules/tome/data/general/objects/egos/wizard-hat.lua @@ -202,8 +202,6 @@ newEntity{ }, combat_mindcrit = resolvers.mbonus_material(4, 4), combat_mentalresist = resolvers.mbonus_material(20, 10), - confusion_immune = -0.2, - fear_immune = -0.2, }, } diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua index 31ea05c3c796375091546a08267a296a4935352d..56bdc66ab39841d3e4c60f8861cb686b3ce1b566 100644 --- a/game/modules/tome/data/general/objects/world-artifacts.lua +++ b/game/modules/tome/data/general/objects/world-artifacts.lua @@ -135,7 +135,7 @@ newEntity{ base = "BASE_STAFF", color=colors.VIOLET, rarity = 170, desc = _t[[This unique-looking staff is carved with runes of destruction.]], - cost = math.random(225,350), + cost = resolvers.rngrange(225,350), material_level = 3, require = { stat = { mag=24 }, }, @@ -179,22 +179,25 @@ newEntity{ base = "BASE_RING", name = function(self, who) local dam = self.use_power.damage(self, who) return ("summon a radius %d tidal wave that expands slowly over %d turns, dealing %0.2f cold and %0.2f physical damage (based on Willpower) each turn, knocking opponents back, and lowering their stun resistance"): - tformat(self.use_power:radius(who), self.use_power.duration(self, who), who:damDesc(engine.DamageType.COLD, dam/2), who:damDesc(engine.DamageType.PHYSICAL, dam/2)) + tformat(self.use_power.radius(self, who), self.use_power.duration, who:damDesc(engine.DamageType.COLD, dam/2), who:damDesc(engine.DamageType.PHYSICAL, dam/2)) end, power = 60, - radius = function(self, who) return 1 end, - duration = function(self, who) return 7 end, + range = 0, + radius = function(self, who) return 1 + 0.4 * self.use_power.duration end, + duration = 7, damage = function(self, who) return who:combatStatScale("wil", 15, 40) end, tactical = {ESCAPE = 1.5, ATTACKAREA = {COLD = 1.5, PHYSICAL = 1.5}}, + requires_target = true, + target = function(self, who) return {type="ball", range=0, radius=self.use_power.radius(self, who), selffire=false} end, use = function(self, who) - local duration = 7 - local radius = self.use_power.radius(self, who) + local duration = self.use_power.duration + local initial_radius = 1 local dam = self.use_power.damage(self, who) -- Add a lasting map effect local wave = game.level.map:addEffect(who, who.x, who.y, duration, engine.DamageType.WAVE, {dam=dam, x=who.x, y=who.y, apply_wet=1}, - radius, + initial_radius, 5, nil, engine.MapEffect.new{color_br=30, color_bg=60, color_bb=200, effect_shader="shader_images/water_effect1.png"}, function(e, update_shape_only) @@ -437,7 +440,7 @@ newEntity{ base = "BASE_LITE", sentient = true, desc = _t[[This dark red heart still beats despite being separated from its owner. It also snuffs out any light source that comes near it.]], special_desc = function(self) return _t"The heart seems to absorb light when you deal darkness damage. Standing on unlit tiles, you feel stronger." end, - cost = math.random(400,650), + cost = resolvers.rngrange(400,650), wielder = { lite = -1000, @@ -550,7 +553,7 @@ newEntity{ base = "BASE_SHIELD", level_range = {27, 35}, rarity = 300, require = { stat = { str=28 }, }, - cost = math.random(400,650), + cost = resolvers.rngrange(400,650), material_level = 4, special_combat = { dam = 58, @@ -748,6 +751,7 @@ newEntity{ name = "Mummified Egg-sac of Ungolë", image = "object/artifact/mummified_eggsack.png", level_range = {20, 35}, rarity = 190, + cost = 200, display = "*", color=colors.DARK_GREY, encumber = 2, not_in_stores = true, @@ -798,7 +802,7 @@ newEntity{ base = "BASE_HELM", desc = _t[[A Dwarven helm embedded with a single diamond that can banish all underground shadows.]], level_range = {16, 28}, rarity = 240, - cost = math.random(125,200), + cost = resolvers.rngrange(125,200), material_level = 2, wielder = { lite = 6, @@ -835,7 +839,7 @@ newEntity{ base = "BASE_KNIFE", level_range = {23, 28}, rarity = 200, require = { stat = { cun=25 }, }, - cost = math.random(125,200), + cost = resolvers.rngrange(125,200), material_level = 2, combat = { dam = 25, @@ -1126,7 +1130,7 @@ newEntity{ base = "BASE_HELM", require = { stat = { cun=25 } }, level_range = {20, 35}, rarity = 280, - cost = math.random(225,350), + cost = resolvers.rngrange(225,350), material_level = 3, wielder = { inc_stats = { [Stats.STAT_CON] = 3, [Stats.STAT_WIL] = 10, }, @@ -1188,7 +1192,7 @@ newEntity{ base = "BASE_GAUNTLETS", desc = _t[[Fashioned by Grand Smith Dakhtun in the Age of Allure, these dwarven-steel gauntlets have been etched with golden arcane runes and are said to grant the wearer unparalleled physical and magical might.]], level_range = {40, 50}, rarity = 300, - cost = math.random(700,1200), + cost = resolvers.rngrange(700,1200), material_level = 5, wielder = { inc_stats = { [Stats.STAT_STR] = 6, [Stats.STAT_MAG] = 6 }, @@ -1317,7 +1321,7 @@ newEntity{ base = "BASE_CLOAK", desc = _t[[Cunning and malice seem to emanate from this cloak.]], level_range = {20, 29}, rarity = 240, - cost = math.random(225,350), + cost = resolvers.rngrange(225,350), material_level = 3, wielder = { combat_def = 20, @@ -1340,7 +1344,7 @@ newEntity{ base = "BASE_CLOTH_ARMOR", define_as = "CONCLAVE_ROBE", It was made by Humans for Humans; only they can harness the true power of the robes.]], level_range = {12, 22}, rarity = 220, - cost = math.random(125,200), + cost = resolvers.rngrange(125,200), material_level = 2, wielder = { inc_damage = {[DamageType.ARCANE]=15}, @@ -1370,7 +1374,7 @@ newEntity{ base = "BASE_CLOTH_ARMOR", special_desc = function(self) return _t"Damage all enemies in range 4 for 40 fire damage and yourself for 5 fire damage every turn." end, level_range = {20, 30}, rarity = 300, - cost = math.random(225,350), + cost = resolvers.rngrange(225,350), material_level = 3, wielder = { inc_damage = {[DamageType.FIRE]=20}, @@ -1428,7 +1432,7 @@ newEntity{ base = "BASE_CLOTH_ARMOR", desc = _t[[A plain elven-silk robe. It would be unremarkable if not for the sheer power it radiates.]], level_range = {30, 40}, rarity = 290, - cost = math.random(400,650), + cost = resolvers.rngrange(400,650), material_level = 4, moddable_tile = "special/robe_of_the_archmage", moddable_tile_big = true, @@ -1553,6 +1557,7 @@ newEntity{ base = "BASE_BATTLEAXE", require = { stat = { str=50 }, }, level_range = {39, 46}, rarity = 300, + cost = resolvers.rngrange(400,650), material_level = 4, combat = { dam = 68, @@ -1585,7 +1590,7 @@ newEntity{ base = "BASE_WHIP", name = "Scorpion's Tail", color=colors.GREEN, unique = true, image = "object/artifact/whip_scorpions_tail.png", desc = _t[[A long whip of linked metal joints finished with a viciously sharp barb leaking terrible venom.]], require = { stat = { dex=28 }, }, - cost = math.random(225,350), + cost = resolvers.rngrange(225,350), rarity = 340, level_range = {20, 30}, material_level = 3, @@ -2017,6 +2022,7 @@ It is said the wielder will slowly grow mad. This, however, has never been prove require = { stat = { str=42 }, }, level_range = {40, 50}, rarity = 250, + cost = resolvers.rngrange(400,650), material_level = 5, combat = { dam = 38, @@ -2249,7 +2255,7 @@ newEntity{ base = "BASE_ARROW", proj_image = "object/artifact/arrow_s_quiver_of_the_sun.png", level_range = {20, 40}, rarity = 300, - cost = math.random(400,650), + cost = resolvers.rngrange(400,650), material_level = 4, require = { stat = { dex=24 }, }, combat = { @@ -2422,7 +2428,7 @@ newEntity{ base = "BASE_SHOT", proj_image = "object/artifact/shot_s_star_shot.png", level_range = {25, 40}, rarity = 300, - cost = math.random(400,650), + cost = resolvers.rngrange(400,650), material_level = 4, require = { stat = { dex=28 }, }, combat = { @@ -2631,7 +2637,7 @@ newEntity{ base = "BASE_STAFF", define_as = "SET_SCEPTRE_LICH", color=colors.VIOLET, image = "object/artifact/sceptre_of_the_archlich.png", rarity = 320, desc = _t[[This sceptre, carved of ancient, blackened bone, holds a single gem of deep obsidian. You feel a dark power from deep within, looking to get out.]], - cost = math.random(700,1200), + cost = resolvers.rngrange(700,1200), material_level = 5, require = { stat = { mag=50 }, }, @@ -2763,7 +2769,7 @@ newEntity{ base = "BASE_STAFF", color=colors.VIOLET, image = "object/artifact/gravitational_staff.png", rarity = 240, desc = _t[[Time and Space seem to warp and bend around the massive tip of this stave.]], - cost = math.random(225,350), + cost = resolvers.rngrange(225,350), material_level = 3, require = { stat = { mag=35 }, }, combat = { @@ -2950,7 +2956,7 @@ newEntity{ base = "BASE_KNIFE", level_range = {12, 25}, rarity = 200, require = { stat = { dex=32 }, }, - cost = math.random(125,200), + cost = resolvers.rngrange(125,200), material_level = 2, combat = { dam = 25, @@ -3006,7 +3012,7 @@ newEntity{ base = "BASE_LONGBOW", level_range = {5, 15}, rarity = 200, require = { stat = { dex=18 }, }, - cost = math.random(50,80), + cost = resolvers.rngrange(50,80), material_level = 1, combat = { range = 9, @@ -3066,7 +3072,7 @@ newEntity{ base = "BASE_WHIP", name = "Stormlash", color=colors.BLUE, unique = true, image = "object/artifact/stormlash.png", desc = _t[[This steel plated whip arcs with intense electricity. The force feels uncontrollable, explosive, powerful.]], require = { stat = { dex=15 }, }, - cost = math.random(50,80), + cost = resolvers.rngrange(50,80), rarity = 250, level_range = {6, 15}, material_level = 1, @@ -3128,7 +3134,7 @@ newEntity{ base = "BASE_WHIP", name = "Focus Whip", color=colors.YELLOW, unique = true, image = "object/artifact/focus_whip.png", desc = _t[[A small mindstar rests at top of this handle. As you touch it, a translucent cord appears, flicking with your will.]], require = { stat = { dex=15 }, }, - cost = math.random(225,350), + cost = resolvers.rngrange(225,350), rarity = 250, metallic = false, level_range = {18, 28}, @@ -4108,7 +4114,7 @@ newEntity{ base = "BASE_CLOTH_ARMOR", --Thanks Grayswandir! desc = _t[[This deep blue robe flows and ripples as if pushed by an invisible tide.]], level_range = {1, 15}, rarity = 220, - cost = math.random(50,80), + cost = resolvers.rngrange(50,80), material_level = 1, wielder = { combat_def = 12, @@ -4334,7 +4340,7 @@ newEntity{ base = "BASE_ARROW", --Thanks Grayswandir! proj_image = "object/artifact/arrow_s_void_quiver.png", level_range = {35, 50}, rarity = 300, - cost = math.random(700,1100), + cost = resolvers.rngrange(700,1100), material_level = 5, infinite=true, require = { stat = { dex=32 }, }, @@ -6077,7 +6083,7 @@ The heart which wishes that it be unseen.]], level_range = {40, 50}, color = colors.BLACK, rarity = 370, - cost = math.random(700,1200), + cost = resolvers.rngrange(700,1200), material_level = 5, wielder = { combat_def = 14, @@ -7941,7 +7947,7 @@ Any lightning damage you do that is more than 10% of the victim's maximum life w Upon taking lightning damage >10% of your max life, your mind fires back, dealing 30% of the original damage as mind and trying to brainlock the target. Upon taking mind damage >10% of your max life, you reflexively trigger the jolt, sending an arc of dazing lightning toward the target (damage based on mindpower). This item can have up to 2 charges, with each charge having 4 turn cooldown.]] end, - cost = math.random(125,200), + cost = resolvers.rngrange(125,200), material_level = 2, wielder = { inc_damage={ @@ -8147,7 +8153,7 @@ newEntity{ base = "BASE_GAUNTLETS", desc = _t[[Crafted for a warlord who wanted to keep his subjects under a stralite grip. Dark thoughts went into the making of these gauntlets, literally.]], level_range = {30, 40}, rarity = 300, - cost = math.random(400,650), + cost = resolvers.rngrange(400,650), material_level = 4, wielder = { combat_armor = 5, diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes1.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d14e4be9a4dade395d8a0c9abcc0f85b69cfc19 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes1.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes1i.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes1i.png new file mode 100644 index 0000000000000000000000000000000000000000..21eee2bccccc07def3e2ef294c296594b3c8bb87 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes1i.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes2.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes2.png new file mode 100644 index 0000000000000000000000000000000000000000..3de12943e25e790ee0df8491a6e0b50214d77f8e Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes2.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes3.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes3.png new file mode 100644 index 0000000000000000000000000000000000000000..e81c4a30360c2c112c4dc09898036826c4bd4186 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes3.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes3i.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes3i.png new file mode 100644 index 0000000000000000000000000000000000000000..7d83ff4a0cb651cd6fd78e272c8d9f8df409bf1a Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes3i.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes4.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes4.png new file mode 100644 index 0000000000000000000000000000000000000000..614a775f9e02fb69e3269b023d55ceb1210911ac Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes4.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f1223ddd4d97f5782668e311f87a3c8f5cc669 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_1.png new file mode 100644 index 0000000000000000000000000000000000000000..022d66e16231b86f6596700f56b1339a9347caf2 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_1.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_2.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a32372996ca84ba346d09f9de980772160cd08 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_2.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_3.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_3.png new file mode 100644 index 0000000000000000000000000000000000000000..98a4d87aace2df14bb7ba2814e8637896eac2dda Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_3.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_4.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b9dc5d86c3e57a5cb70c75310e0e6285ce14b94e Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_4.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_5.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_5.png new file mode 100644 index 0000000000000000000000000000000000000000..82839a5100e792e07967dee227fa75afaba519e3 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_5.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_6.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_6.png new file mode 100644 index 0000000000000000000000000000000000000000..72567393d42656a5a0de212f09424dd204dc7157 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_6.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_7.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_7.png new file mode 100644 index 0000000000000000000000000000000000000000..19acce1879390e0fe7c87268802f09dffcd48394 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes5_7.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes6.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes6.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f12089769dd1b8ef530831d48efd51f8970356 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes6.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes7.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes7.png new file mode 100644 index 0000000000000000000000000000000000000000..2c5b3789f248f89c7e2e35c86c7bda51e6bba1e2 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes7.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes7i.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes7i.png new file mode 100644 index 0000000000000000000000000000000000000000..4df2b01c0fde15664e2d46497641ff26a0aa096c Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes7i.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes8.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes8.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2a68ec9d9c7b0b87180d1db9e336eee9eb7e40 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes8.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes9.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes9.png new file mode 100644 index 0000000000000000000000000000000000000000..1c1290f6880667927178f0b607c037c0d42f3c11 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes9.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes9i.png b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes9i.png new file mode 100644 index 0000000000000000000000000000000000000000..8f14e8f92118b7d63b01f784ca8d6219bc78082b Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/dunes/dunes9i.png differ diff --git a/game/modules/tome/data/maps/vaults/collapsed-tower.lua b/game/modules/tome/data/maps/vaults/collapsed-tower.lua index 81a5cec0cdab908a3b3e77273667923ca1b6d6a2..74dbd010c2074f438e34f460066567e05f609e02 100644 --- a/game/modules/tome/data/maps/vaults/collapsed-tower.lua +++ b/game/modules/tome/data/maps/vaults/collapsed-tower.lua @@ -68,6 +68,7 @@ local stairs = function() __applied_difficulty = true, -- Difficulty already applied to parent zone level_scheme = "player", max_level = 1, + actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(0,4) end, width = 20, height = 20, ambient_music = "Swashing the buck.ogg", persistent = "zone", diff --git a/game/modules/tome/data/maps/vaults/snake-pit.lua b/game/modules/tome/data/maps/vaults/snake-pit.lua index 2b630d07e2f67a365c2c246e4b128a76fa308c5c..41e4718fc917a16eca5681aa32898a681c3b9b83 100644 --- a/game/modules/tome/data/maps/vaults/snake-pit.lua +++ b/game/modules/tome/data/maps/vaults/snake-pit.lua @@ -36,7 +36,7 @@ rotates = {"default", "90", "180", "270", "flipx", "flipy"} defineTile(',', data.floor or data['.'] or "FLOOR") defineTile('#', "HARDWALL") -defineTile('w', "WALL") +defineTile('!', "DOOR_VAULT") defineTile('d', "FLOOR", {random_filter={type="tool", subtype="digger", name="iron pickaxe", ego_chance=-1000, ego_chance=-1000}}) local mobs = { @@ -58,7 +58,7 @@ return { [[,,,,,,,,]], [[,######,]], [[,#sss##,]], -[[,#ssswd,]], +[[,#sss!d,]], [[,#sss##,]], [[,######,]], [[,,,,,,,,]], diff --git a/game/modules/tome/data/maps/zones/collapsed-tower.lua b/game/modules/tome/data/maps/zones/collapsed-tower.lua index 4723b2456bb1fc491feb3bef039a5565a4ec9891..6b316af5dc42cda47bbb7d8309f287ee32c76ca8 100644 --- a/game/modules/tome/data/maps/zones/collapsed-tower.lua +++ b/game/modules/tome/data/maps/zones/collapsed-tower.lua @@ -53,7 +53,7 @@ local turret = function() talent_cd_reduction={[Talents.T_ELEMENTAL_BOLT]=3, }, resolvers.talents{ - [Talents.T_ELEMENTAL_BOLT]={base=3, every=5, max=10}, + [Talents.T_ELEMENTAL_BOLT]={base=3, every=3, max=8}, }, ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, }, @@ -85,12 +85,13 @@ defineTile('t', "FLOOR", {random_filter={add_levels=5, tome_mod="gvault"}}, turr local def = { [[##############]], -[[##############]], +[[#tjj##########]], +[[#b$$##########]], [[##.##t$..t####]], [[#t.+...>..####]], [[##.##...$.####]], [[#b$$#$...t####]], -[[#jjj##########]], +[[#tjj##########]], [[##############]], } diff --git a/game/modules/tome/data/talents/corruptions/shadowflame.lua b/game/modules/tome/data/talents/corruptions/shadowflame.lua index 63321c1c78c048fb06df057e4a6ec7240df30f13..967b4cf9ab4c68c11342e3a0e4b5f39fbb002715 100644 --- a/game/modules/tome/data/talents/corruptions/shadowflame.lua +++ b/game/modules/tome/data/talents/corruptions/shadowflame.lua @@ -90,7 +90,7 @@ newTalent{ sustain_vim = 90, cooldown = 30, tactical = { DEFEND = 1, BUFF = 2 }, - getSpeed = function(self, t) return self:combatTalentScale(t, 0.03, 0.15, 0.75) end, + getSpeed = function(self, t) return self:combatTalentScale(t, 0.03, 0.15) end, activate = function(self, t) game:playSoundNear(self, "talents/flame") self.__old_type = {self.type, self.subtype} diff --git a/game/modules/tome/data/talents/cunning/lethality.lua b/game/modules/tome/data/talents/cunning/lethality.lua index 38592e4e3f2635d7b09a2d669638a98271c00e19..27a7521590c837d8ec7b13dbba54da6ecc538d47 100644 --- a/game/modules/tome/data/talents/cunning/lethality.lua +++ b/game/modules/tome/data/talents/cunning/lethality.lua @@ -97,7 +97,7 @@ newTalent{ no_break_stealth = true, no_energy = true, deactivate_on = {no_combat=true, run=true, rest=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) end, getDamage = function(self, t) return 1 end, activate = function(self, t) local ret = { diff --git a/game/modules/tome/data/talents/cunning/shadow-magic.lua b/game/modules/tome/data/talents/cunning/shadow-magic.lua index f27af759c5b9ce2bfa592cc49d9290f58007862b..5bcc807c4e2750cb866f25783ac620ed246075bb 100644 --- a/game/modules/tome/data/talents/cunning/shadow-magic.lua +++ b/game/modules/tome/data/talents/cunning/shadow-magic.lua @@ -82,7 +82,7 @@ newTalent{ require = cuns_req3, tactical = { BUFF = 2 }, getManaRegen = function(self, t) return self:combatTalentScale(t, 1.5/5, 1, 0.75) / (1 - t.getAtkSpeed(self, t)/100) end, - getAtkSpeed = function(self, t) return self:combatTalentScale(t, 2.2, 11, 0.75) end, + getAtkSpeed = function(self, t) return self:combatTalentScale(t, 2.2, 15) end, activate = function(self, t) local speed = t.getAtkSpeed(self, t)/100 game:playSoundNear(self, "talents/arcane") diff --git a/game/modules/tome/data/talents/cursed/rampage.lua b/game/modules/tome/data/talents/cursed/rampage.lua index a6efcf5ddf21bb43c92c8eb602c3bff506d4f576..913ef0ab71013cb7c876cf46d3665dbda366486d 100644 --- a/game/modules/tome/data/talents/cursed/rampage.lua +++ b/game/modules/tome/data/talents/cursed/rampage.lua @@ -32,9 +32,9 @@ newTalent{ getMaxDuration = function(self, t) return 8 end, - getMovementSpeedChange = function(self, t) return self:combatTalentScale(t, 1.4, 3.13, 0.75) end, --Nerf this? - getCombatPhysSpeedChange = function(self, t) return self:combatTalentScale(t, 0.224, 0.5, 0.75) end, - getCombatMindSpeedChange = function(self, t) return self:combatTalentScale(t, 0.224, 0.5, 0.75) end, + getMovementSpeedChange = function(self, t) return self:combatTalentScale(t, 0.885, 2.12, 0.75) end, + getCombatPhysSpeedChange = function(self, t) return self:combatTalentScale(t, 0.18, 0.395) end, + getCombatMindSpeedChange = function(self, t) return self:combatTalentScale(t, 0.18, 0.395) end, on_pre_use = function(self, t, silent) if self:hasEffect(self.EFF_RAMPAGE) then if not silent then game.logPlayer(self, "You are already rampaging!") end diff --git a/game/modules/tome/data/talents/cursed/strife.lua b/game/modules/tome/data/talents/cursed/strife.lua index 73fe8dd63a9d6633d03f500f21233019dd2d88b7..58ac5727740976e308f67a214a0774b4eec42daa 100644 --- a/game/modules/tome/data/talents/cursed/strife.lua +++ b/game/modules/tome/data/talents/cursed/strife.lua @@ -44,7 +44,7 @@ newTalent{ getDefenseChange = function(self, t) return -self:combatTalentStatDamage(t, "wil", 6, 45) end, - getResistPenetration = function(self, t) return self:combatLimit(self:combatTalentStatDamage(t, "wil", 30, 80), 100, 0, 0, 55, 55) end, -- Limit < 100% + getResistPenetration = function(self, t) return math.min(70, self:combatTalentStatDamage(t, "wil", 25, 60)) end, -- Limit < 70% is_melee = true, target = function(self, t) return {type="hit", range=self:getTalentRange(t)} end, action = function(self, t) diff --git a/game/modules/tome/data/talents/gifts/harmony.lua b/game/modules/tome/data/talents/gifts/harmony.lua index 0e255628cb9ab614285c71404d2845986ddd60ce..5165c9fd952d54a6053cf0dd8002f75754664467 100644 --- a/game/modules/tome/data/talents/gifts/harmony.lua +++ b/game/modules/tome/data/talents/gifts/harmony.lua @@ -70,7 +70,7 @@ newTalent{ tactical = { BUFF = 3 }, -- The effect "ELEMENTAL_HARMONY" is defined in data\timed_effects\physical.lua and the duration applied in setDefaultProjector function in data\damagetypes.lua duration = function(self,t) return 5 end, --return math.floor(self:combatTalentScale(t, 6, 10, "log")) end, - fireSpeed = function(self, t) return self:combatTalentScale(t, 0.1, 0.3, 0.75) end, + fireSpeed = function(self, t) return self:combatTalentScale(t, 0.1, 0.3) end, coldArmor = function(self, t) return self:combatTalentScale(t, 8, 25, 0.75) end, lightningStats = function(self, t) return self:combatTalentScale(t, 5, 20, 0.75) end, acidRegen = function(self, t) return self:combatTalentScale(t, 10, 40, 0.75) end, diff --git a/game/modules/tome/data/talents/gifts/summon-advanced.lua b/game/modules/tome/data/talents/gifts/summon-advanced.lua index 63d111d32c2127d21a33bf8619eca0b25ae602e8..782d6814478adec43695c16f6a1b6acf8f2f1824 100644 --- a/game/modules/tome/data/talents/gifts/summon-advanced.lua +++ b/game/modules/tome/data/talents/gifts/summon-advanced.lua @@ -64,9 +64,9 @@ newTalent{ mode = "passive", radius = function(self, t) return math.floor(self:combatTalentScale(t, 1.3, 3.7, "log")) end, effectDuration = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9)) end, - poisonDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 60) end, + poisonDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 133) end, nbEscorts = function(self, t) return math.max(1,math.floor(self:combatTalentScale(t, 0.3, 2.7, "log"))) end, - resReduction = function(self, t) return self:combatTalentMindDamage(t, 15, 70) end, + resReduction = function(self, t) return self:combatTalentMindDamage(t, 12, 50) end, amtHealing = function(self, t) return 30 + self:combatTalentMindDamage(t, 10, 350) end, slowStrength = function(self, t) return self:combatLimit(self:combatTalentMindDamage(t, 5, 500), 1, 0.1, 0, 0.47 , 369) end, -- Limit speed loss to <100% info = function(self, t) diff --git a/game/modules/tome/data/talents/misc/npcs.lua b/game/modules/tome/data/talents/misc/npcs.lua index 4f1d30feebb90aa6ed5f17ff1bc65fc6a2d47839..5ea895a4e82c7f2f3d9b61e0607c09ec44ad9324 100644 --- a/game/modules/tome/data/talents/misc/npcs.lua +++ b/game/modules/tome/data/talents/misc/npcs.lua @@ -3340,7 +3340,7 @@ newTalent{ require = techs_dex_req4, tactical = { BUFF = 2 }, on_pre_use = function(self, t, silent) if self:hasArcheryWeapon() or not self:hasDualWeapon() then if not silent then game.logPlayer(self, "You require two melee weapons to use this talent.") end return false end return true end, - getSpeed = function(self, t) return self:combatTalentScale(t, 0.11, 0.40, 0.75) end, + getSpeed = function(self, t) return self:combatTalentScale(t, 0.11, 0.40) end, activate = function(self, t) local weapon, offweapon = self:hasDualWeapon() if not weapon then diff --git a/game/modules/tome/data/talents/misc/races.lua b/game/modules/tome/data/talents/misc/races.lua index ab7fe279c82bedda188989b6879651109277c354..d9db2f9936d81b43871343c4aa22c2b52c6d55de 100644 --- a/game/modules/tome/data/talents/misc/races.lua +++ b/game/modules/tome/data/talents/misc/races.lua @@ -170,7 +170,7 @@ newTalent{ points = 5, no_energy = true, cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 46, 30)) end, -- Limit to >10 turns - getSpeed = function(self, t) return self:combatStatScale(math.max(self:getDex(), self:getMag()), 0.1, 0.476, 0.75) end, + getSpeed = function(self, t) return self:combatStatScale(math.max(self:getDex(), self:getMag()), 0.1, 0.476) end, tactical = { DEFEND = 1 }, action = function(self, t) self:setEffect(self.EFF_SPEED, 5, {power=t.getSpeed(self, t)}) diff --git a/game/modules/tome/data/talents/psionic/augmented-mobility.lua b/game/modules/tome/data/talents/psionic/augmented-mobility.lua index b1a445c45816bba749f5714c710b944a21e1f0ff..171afe20a408a0bc9efcfe9f1d24a7927ab892cd 100644 --- a/game/modules/tome/data/talents/psionic/augmented-mobility.lua +++ b/game/modules/tome/data/talents/psionic/augmented-mobility.lua @@ -60,7 +60,7 @@ newTalent{ no_energy = true, tactical = { BUFF = 2 }, getDuration = function(self, t) return math.floor(self:combatLimit(self:combatMindpower(0.1), 10, 4, 0, 6, 6)) end, -- Limit < 10 - speed = function(self, t) return self:combatTalentScale(t, 0.1, 0.4, 0.75) end, + speed = function(self, t) return self:combatTalentScale(t, 0.1, 0.4) end, getBoost = function(self, t) return self:combatScale(self:combatTalentMindDamage(t, 20, 60), 0, 0, 50, 100, 0.75) end, diff --git a/game/modules/tome/data/talents/spells/ice.lua b/game/modules/tome/data/talents/spells/ice.lua index 00c91a7b3b08578ee35e296153885869edac5f94..968c68f622c00db5f46a9d42ee9eb2a63b3d2c5f 100644 --- a/game/modules/tome/data/talents/spells/ice.lua +++ b/game/modules/tome/data/talents/spells/ice.lua @@ -53,7 +53,7 @@ newTalent{ local dam = self:spellCrit(t.getDamage(self, t)) self:project(tg, x, y, DamageType.COLD, dam, {type="freeze"}) - self:project(tg, x, y, DamageType.FREEZE, {dur=t.getDuration(self, t), hp=70 + dam * 1.5}) + self:project(tg, x, y, DamageType.FREEZE, {dur=t.getDuration(self, t), hp=70 + dam * 0.7}) tg.type = "hit" self:projectApply(tg, x, y, Map.ACTOR, function(target) diff --git a/game/modules/tome/data/talents/spells/necrosis.lua b/game/modules/tome/data/talents/spells/necrosis.lua index a268e21741800b9e011aba0c4766ead4aadfe459..c1859dc8515e1dd744c58de2bfbcdd892af37407 100644 --- a/game/modules/tome/data/talents/spells/necrosis.lua +++ b/game/modules/tome/data/talents/spells/necrosis.lua @@ -59,8 +59,8 @@ newTalent{ mana = 60, cooldown = 25, tactical = { ATTACK = { ARCANE = 3 }, DISABLE = 2 }, - rnd_boss_restrict = function(self, t) - return self.level < 15 + rnd_boss_restrict = function(self, t, data) + return data.level < 15 end, range = 7, requires_target = true, diff --git a/game/modules/tome/data/talents/techniques/combat-techniques.lua b/game/modules/tome/data/talents/techniques/combat-techniques.lua index 44c75ffadb1751c84565fce2f0a410607bf183d8..34228098e1e3bdef6d5d953c1907873cee2179b7 100644 --- a/game/modules/tome/data/talents/techniques/combat-techniques.lua +++ b/game/modules/tome/data/talents/techniques/combat-techniques.lua @@ -158,7 +158,7 @@ newTalent{ if target and core.fov.distance(self.x, self.y, target.x, target.y) <= 10 and self:hasLOS(target.x, target.y, "block_move") then return true end return false end, - getSpeed = function(self, t) return self:combatTalentScale(t, 0.14, 0.45, 0.75) end, + getSpeed = function(self, t) return self:combatTalentScale(t, 0.14, 0.45) end, action = function(self, t) self:setEffect(self.EFF_SPEED, 5, {power=t.getSpeed(self, t)}) return true diff --git a/game/modules/tome/data/talents/techniques/thuggery.lua b/game/modules/tome/data/talents/techniques/thuggery.lua index 2a3e9ee7d3fea71a717439d77ee7ad6917c54830..3597d3165373ac26ff6c4895f32a85e2ec34960e 100644 --- a/game/modules/tome/data/talents/techniques/thuggery.lua +++ b/game/modules/tome/data/talents/techniques/thuggery.lua @@ -138,7 +138,7 @@ newTalent{ end, getCrit = function(self, t) return self:combatTalentStatDamage(t, "dex", 10, 50) / 1.5 end, getPen = function(self, t) return self:combatLimit(self:combatTalentStatDamage(t, "str", 10, 50), 100, 0, 0, 35.7, 35.7) end, -- Limit to <100% - getSpeed = function(self, t) return self:combatTalentScale(t, 0.10, 0.20, 0.75) end, + getSpeed = function(self, t) return self:combatTalentScale(t, 0.10, 0.20) end, deactivate_on = {no_combat=true, run=true, rest=true}, activate = function(self, t) local ret = { diff --git a/game/modules/tome/data/talents/techniques/warcries.lua b/game/modules/tome/data/talents/techniques/warcries.lua index cbf1724ce6c2abd8e350c7c97f2fddc144d64a1e..0296a9f48f9190ea184253eb51814430152c4016 100644 --- a/game/modules/tome/data/talents/techniques/warcries.lua +++ b/game/modules/tome/data/talents/techniques/warcries.lua @@ -26,18 +26,18 @@ newTalent{ cooldown = 7, stamina = 20, range = 0, - radius = function(self, t) return math.floor(self:combatTalentScale(t, 4, 8)) end, + radius = function(self, t) return math.min(13, math.floor(self:combatTalentScale(t, 4, 8))) end, target = function(self, t) return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false} end, requires_target = true, tactical = { ATTACKAREA = { PHYSICAL = 2 } }, - getdamage = function(self,t) return self:combatScale(self:getTalentLevel(t) * self:getStr(), 60, 10, 267, 500) end, + getDamage = function(self,t) return self:combatTalentPhysicalDamage(t, 30, 320) end, action = function(self, t) local tg = self:getTalentTarget(t) local x, y = self:getTarget(tg) if not x or not y then return nil end - self:project(tg, x, y, DamageType.PHYSICAL, self:physicalCrit(t.getdamage(self,t))) + self:project(tg, x, y, DamageType.PHYSICAL, self:physicalCrit(t.getDamage(self,t))) if self:getTalentLevel(t) >= 5 then self:project(tg, x, y, function(px, py) local proj = game.level.map(px, py, Map.PROJECTILE) diff --git a/game/modules/tome/data/talents/uber/const.lua b/game/modules/tome/data/talents/uber/const.lua index d280fc2be840d4e24baedebdf5d37c8698333f2a..3ce4e782f7b595b75b55060c820d095b336048ed 100644 --- a/game/modules/tome/data/talents/uber/const.lua +++ b/game/modules/tome/data/talents/uber/const.lua @@ -175,8 +175,8 @@ uberTalent{ uberTalent{ name = "Corrupted Shell", mode = "passive", - require = { special={desc=_t"Have received at least 7500 blight damage and destroyed Zigur with the Grand Corruptor.", fct=function(self) return - (self.damage_intake_log and self.damage_intake_log[DamageType.BLIGHT] and self.damage_intake_log[DamageType.BLIGHT] >= 7500) and + require = { special={desc=_t"Have received at least 3500 blight damage and destroyed Zigur with the Grand Corruptor.", fct=function(self) return + (self.damage_intake_log and self.damage_intake_log[DamageType.BLIGHT] and self.damage_intake_log[DamageType.BLIGHT] >= 3500) and (game.state.birth.ignore_prodigies_special_reqs or ( self:hasQuest("anti-antimagic") and self:hasQuest("anti-antimagic"):isStatus(engine.Quest.DONE) and diff --git a/game/modules/tome/data/talents/uber/mag.lua b/game/modules/tome/data/talents/uber/mag.lua index 601566cb80df48672035559839146e93e373b4c6..2cc6efef81f2d083460a8966481e9bba78b3a498 100644 --- a/game/modules/tome/data/talents/uber/mag.lua +++ b/game/modules/tome/data/talents/uber/mag.lua @@ -319,8 +319,8 @@ uberTalent{ name = "Cauterize", mode = "passive", cooldown = 12, - require = { special={desc=_t"Have received at least 7500 fire damage and have cast at least 1000 spells", fct=function(self) return - self.talent_kind_log and self.talent_kind_log.spell and self.talent_kind_log.spell >= 1000 and self.damage_intake_log and self.damage_intake_log[DamageType.FIRE] and self.damage_intake_log[DamageType.FIRE] >= 7500 + require = { special={desc=_t"Have received at least 3500 fire damage and have cast at least 1000 spells", fct=function(self) return + self.talent_kind_log and self.talent_kind_log.spell and self.talent_kind_log.spell >= 1000 and self.damage_intake_log and self.damage_intake_log[DamageType.FIRE] and self.damage_intake_log[DamageType.FIRE] >= 3500 end} }, trigger = function(self, t, value) self:startTalentCooldown(t) diff --git a/game/modules/tome/data/timed_effects/other.lua b/game/modules/tome/data/timed_effects/other.lua index 430f8ad765084544119581cd41b3a5d69729cb28..48df28488ce703350ad0348785665673eba401b0 100644 --- a/game/modules/tome/data/timed_effects/other.lua +++ b/game/modules/tome/data/timed_effects/other.lua @@ -3789,6 +3789,7 @@ newEffect{ charges = function(self, eff) return math.round(eff.power) end, type = "other", subtype = { }, + no_stop_enter_worlmap = true, cancel_on_level_change = true, status = "detrimental", on_gain = function(self, err) return _t"#Target#'s morale has been lowered.", _t"+Intimidated" end, on_lose = function(self, err) return _t"#Target# has regained its confidence.", _t"-Intimidated" end, diff --git a/game/modules/tome/data/zones/gorbat-pride/events.lua b/game/modules/tome/data/zones/gorbat-pride/events.lua index 0d70322e180868fe20497b5f09e04552da9d54c2..bdfde40132679309536f9424b861cc9babd3b28d 100644 --- a/game/modules/tome/data/zones/gorbat-pride/events.lua +++ b/game/modules/tome/data/zones/gorbat-pride/events.lua @@ -23,5 +23,5 @@ return { one_per_level=true, {name="whistling-vortex", minor=true, percent=50}, {name="glowing-chest", minor=true, percent=30}, {name="glowing-chest", minor=true, percent=30}, - {name="sub-vault", minor=true, percent=100, max_repeat=rng.percent(33) and 1 or 0}, --33% chance of 2 vaults, 67% chance of 1 for each floor + {name="sub-vault", minor=true, percent=100}, -- one per floor } diff --git a/game/modules/tome/data/zones/gorbat-pride/npcs.lua b/game/modules/tome/data/zones/gorbat-pride/npcs.lua index 426b4705ac7ed450a8737bebe5e7afbe3404a645..06c16638b0c7b2df13d48ae7acc205bc58d4c219 100644 --- a/game/modules/tome/data/zones/gorbat-pride/npcs.lua +++ b/game/modules/tome/data/zones/gorbat-pride/npcs.lua @@ -80,9 +80,12 @@ newEntity{ base="BASE_NPC_ORC_GORBAT", define_as = "GORBAT", [Talents.T_RIMEBARK]={base=7, every=6, max=10}, [Talents.T_RITCH_FLAMESPITTER]={base=10, every=6, max=12}, + [Talents.T_RAGE]={base=5, every=6, max=7}, [Talents.T_RESILIENCE]={base=5, every=6, max=7}, [Talents.T_MASTER_SUMMONER]={base=5, every=6, max=7}, [Talents.T_WILD_SUMMON]={base=5, every=6, max=7}, + [Talents.T_GRAND_ARRIVAL]={base=2, every=18, max=4}, + [Talents.T_HOWL]=3, @@ -94,7 +97,6 @@ newEntity{ base="BASE_NPC_ORC_GORBAT", define_as = "GORBAT", [Talents.T_SPELL_FEEDBACK]=1, [Talents.T_MASSIVE_BLOW]=1, - [Talents.T_BLIGHTED_SUMMONING]=1, }, auto_classes={ diff --git a/game/modules/tome/data/zones/grushnak-pride/events.lua b/game/modules/tome/data/zones/grushnak-pride/events.lua index b8abb46b69fbc34347fbf769ba67369ea5dae98f..dae439030840e5b1817389ecdceb2e3c03a25c18 100644 --- a/game/modules/tome/data/zones/grushnak-pride/events.lua +++ b/game/modules/tome/data/zones/grushnak-pride/events.lua @@ -21,5 +21,5 @@ return { one_per_level=true, {group="fareast-generic", percent_factor=1.5}, {name="antimagic-bush", minor=true, percent=80, max_repeat=3, forbid={1,3,5}}, {name="glowing-chest", minor=true, percent=30}, - {name="sub-vault", minor=true, percent=100, max_repeat=rng.percent(33) and 1 or 0}, --33% chance of 2 vaults, 67% chance of 1 for each floor + {name="sub-vault", minor=true, percent=100}, -- one per floor } diff --git a/game/modules/tome/data/zones/rak-shor-pride/events.lua b/game/modules/tome/data/zones/rak-shor-pride/events.lua index 280733813f160cd096e3a23e4330af8a768915f4..e4565d824466f226a02401e5174d82f711b711b3 100644 --- a/game/modules/tome/data/zones/rak-shor-pride/events.lua +++ b/game/modules/tome/data/zones/rak-shor-pride/events.lua @@ -22,5 +22,5 @@ return { one_per_level=true, {name="whistling-vortex", minor=true, percent=50}, {name="necrotic-air", minor=true, percent=100, max_repeat=3}, {name="glowing-chest", minor=true, percent=30}, - {name="sub-vault", minor=true, percent=100, max_repeat=rng.percent(33) and 1 or 0}, --33% chance of 2 vaults, 67% chance of 1 for each floor + {name="sub-vault", minor=true, percent=100}, -- one per floor } diff --git a/game/modules/tome/data/zones/rak-shor-pride/mapscripts/main.lua b/game/modules/tome/data/zones/rak-shor-pride/mapscripts/main.lua index e47839957ffe905dd17b13473f331d99968989df..e1969b38acbae7e54001f1e8f4912057d55a747e 100644 --- a/game/modules/tome/data/zones/rak-shor-pride/mapscripts/main.lua +++ b/game/modules/tome/data/zones/rak-shor-pride/mapscripts/main.lua @@ -21,7 +21,7 @@ self:defineTile("-", "BONEFLOOR", nil, nil, nil, {no_teleport=true}) self:defineTile("o", "BONEFLOOR", nil, {entity_mod=function(e) e.make_escort = nil return e end, random_filter={type='humanoid', subtype='orc', special=function(e) return e.pride == mapdata.pride end}}) self:defineTile(">", "BONE_LADDER_DOWN", nil, nil, nil, {no_teleport=true}) self:defineTile("O", "BONEFLOOR", nil, {random_filter={type='humanoid', subtype='orc', special=function(e) return e.pride == mapdata.pride end, random_boss={nb_classes=1, loot_quality="store", loot_quantity=3, ai_move="move_complex", rank=4,}}}) -self:defineTile("X", "BONEFLOOR", nil, {entity_mod=function(e) e.make_escort = nil return e end, random_filter={type='humanoid', subtype='orc', special=function(e) return e.pride == mapdata.pride end, random_boss={nb_classes=1, loot_quality="store", loot_quantity=1, no_loot_randart=true, ai_move="move_complex", rank=3}}}, nil, {no_teleport=true}) +self:defineTile("X", "BONEFLOOR", nil, {entity_mod=function(e) e.make_escort = nil return e end, random_filter={type='humanoid', subtype='orc', special=function(e) return e.pride == mapdata.pride end, random_boss={nb_classes=1, loot_quality="store", loot_quantity=1, no_loot_randart=true, ai_move="move_complex", rank=3.2}}}, nil, {no_teleport=true}) self:defineTile('&', "BONE_GENERIC_LEVER", nil, nil, nil, {lever=1, lever_kind="pride-doors", lever_spot={type="lever", subtype="door", check_connectivity="entrance"}}, {type="lever", subtype="lever", check_connectivity="entrance"}) self:defineTile('*', "BONE_GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=2, lever_action_value=0, lever_action_kind="pride-doors"}, {type="lever", subtype="door", check_connectivity="entrance"}) diff --git a/game/modules/tome/data/zones/thieves-tunnels/zone.lua b/game/modules/tome/data/zones/thieves-tunnels/zone.lua index b2fba15c940389afa5d627d0c02c493807cfd1c2..489c0675de182c2463ae04f1787333c32013f72d 100644 --- a/game/modules/tome/data/zones/thieves-tunnels/zone.lua +++ b/game/modules/tome/data/zones/thieves-tunnels/zone.lua @@ -19,14 +19,14 @@ return { name = _t"Unknown tunnels", - level_range = {8, 18}, + level_range = {14, 28}, level_scheme = "player", max_level = 2, actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end, width = 30, height = 30, ambient_music = "Zangarang.ogg", - min_material_level = 1, - max_material_level = 2, + min_material_level = 2, + max_material_level = 3, generator = { map = { class = "engine.generator.map.TileSet", diff --git a/game/modules/tome/data/zones/vor-pride/events.lua b/game/modules/tome/data/zones/vor-pride/events.lua index f122616e257b854f41b5f86c9bf23f7c6034f5bf..1a8fdd45cc73e28cbfbc46562879e89360b76264 100644 --- a/game/modules/tome/data/zones/vor-pride/events.lua +++ b/game/modules/tome/data/zones/vor-pride/events.lua @@ -22,5 +22,5 @@ return { one_per_level=true, {name="fell-aura", minor=true, percent=100, max_repeat=3}, {name="spellblaze-scar", minor=true, percent=50}, {name="glowing-chest", minor=true, percent=30}, - {name="sub-vault", minor=true, percent=100, max_repeat=rng.percent(33) and 1 or 0}, --33% chance of 2 vaults, 67% chance of 1 for each floor + {name="sub-vault", minor=true, percent=100}, -- one per floor } diff --git a/game/modules/tome/data/zones/vor-pride/mapscripts/main.lua b/game/modules/tome/data/zones/vor-pride/mapscripts/main.lua index c7a270898a6796f4b5821f86d3a1700c4c3ffd86..c2a6b02d4814f431053735fce343614c8601aeb7 100644 --- a/game/modules/tome/data/zones/vor-pride/mapscripts/main.lua +++ b/game/modules/tome/data/zones/vor-pride/mapscripts/main.lua @@ -21,7 +21,7 @@ self:defineTile("-", "BURNT_GROUND", nil, nil, nil, {no_teleport=true}) self:defineTile("o", "GOTHIC_FLOOR", nil, {entity_mod=function(e) e.make_escort = nil return e end, random_filter={type='humanoid', subtype='orc', special=function(e) return e.pride == mapdata.pride end}}) if level.level == zone.max_level then self:defineTile(">", 'BURNT_GROUND') else self:defineTile(">", "FLAT_DOWN4", nil, nil, nil, {no_teleport=true}) end self:defineTile("O", "GOTHIC_FLOOR", nil, {random_filter={type='humanoid', subtype='orc', special=function(e) return e.pride == mapdata.pride end, random_boss={nb_classes=1, loot_quality="store", loot_quantity=3, ai_move="move_complex", rank=4,}}}) -self:defineTile("X", "BURNT_GROUND", nil, {entity_mod=function(e) e.make_escort = nil return e end, random_filter={type='humanoid', subtype='orc', special=function(e) return e.pride == mapdata.pride end, random_boss={nb_classes=1, loot_quality="store", loot_quantity=1, no_loot_randart=true, ai_move="move_complex", rank=3}}}, nil, {no_teleport=true}) +self:defineTile("X", "BURNT_GROUND", nil, {entity_mod=function(e) e.make_escort = nil return e end, random_filter={type='humanoid', subtype='orc', special=function(e) return e.pride == mapdata.pride end, random_boss={nb_classes=1, loot_quality="store", loot_quantity=1, no_loot_randart=true, ai_move="move_complex", rank=3.2}}}, nil, {no_teleport=true}) self:defineTile('&', "GOTHIC_GENERIC_LEVER", nil, nil, nil, {lever=1, lever_kind="pride-doors", lever_spot={type="lever", subtype="door", check_connectivity="entrance"}}, {type="lever", subtype="lever", check_connectivity="entrance"}) self:defineTile('*', "GOTHIC_GENERIC_LEVER_DOOR", nil, nil, nil, {lever_action=2, lever_action_value=0, lever_action_kind="pride-doors"}, {type="lever", subtype="door", check_connectivity="entrance"}) diff --git a/game/modules/tome/dialogs/debug/PlotTalent.lua b/game/modules/tome/dialogs/debug/PlotTalent.lua index ebff7269d4c5c56dab117bf122ccb3479730f0cf..44cf2ddd750d13737742c580fab62639357ebccd 100644 --- a/game/modules/tome/dialogs/debug/PlotTalent.lua +++ b/game/modules/tome/dialogs/debug/PlotTalent.lua @@ -84,7 +84,7 @@ function _M:generatePlot(actor, t, nb_tl) end table.sort(vars) - local allcolors = {colors.GREEN, colors.LIGHT_BLUE, colors.LIGHT_RED, colors.ORANGE} + local allcolors = {colors.LIGHT_GREEN, colors.LIGHT_BLUE, colors.LIGHT_RED, colors.ORANGE, colors.PURPLE, colors.ANTIQUE_WHITE, colors.DARK_UMBER, colors.GREEN, colors.CYAN, colors.CRIMSON} for _, var in ipairs(vars) do local vo = core.display.newVO() local color = table.remove(allcolors)