Commit 9bbf8328482b8374fa483d044e8ae49142abec20

Authored by dg
1 parent df693a3b

Eight new high level monsters

Fixed problem with Shattering Charge
Greatly improved Mindlash. Focus mindslayers should be much more fun.
Removed much of the moat around the bandit fortress vault to make navigating around it less of a pain.


git-svn-id: http://svn.net-core.org/repos/t-engine4@3363 51575b47-30f0-44d4-a5cc-537603b46e54
... ... @@ -17,6 +17,8 @@
17 17 -- Nicolas Casalini "DarkGod"
18 18 -- darkgod@te4.org
19 19
  20 +local print = function() end
  21 +
20 22 -- Internal functions
21 23 local checkLOS = function(sx, sy, tx, ty)
22 24 what = what or "block_sight"
... ...
... ... @@ -78,6 +78,7 @@ loadIfNot("/data/general/npcs/troll.lua")
78 78 loadIfNot("/data/general/npcs/vampire.lua")
79 79 loadIfNot("/data/general/npcs/vermin.lua")
80 80 loadIfNot("/data/general/npcs/wight.lua")
  81 +loadIfNot("/data/general/npcs/wild-drake.lua")
81 82 loadIfNot("/data/general/npcs/xorn.lua")
82 83
83 84 loadIfNot("/data/general/npcs/humanoid_random_boss.lua")
... ...
... ... @@ -96,3 +96,29 @@ newEntity{ base = "BASE_NPC_BONE_GIANT",
96 96 melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)},
97 97 resolvers.talents{ [Talents.T_BONE_ARMOUR]={base=3, every=10, max=5}, [Talents.T_THROW_BONES]={base=4, every=10, max=7}, [Talents.T_STUN]={base=3, every=10, max=5}, },
98 98 }
  99 +
  100 +newEntity{ base = "BASE_NPC_BONE_GIANT",
  101 + name = "runed bone giant", color=colors.RED,
  102 + desc = [[A towering creature, made from the bones of hundreds of dead bodies, rune-etched and infused with hateful sorceries.]],
  103 + level_range = {40, nil}, exp_worth = 1,
  104 + rarity = 5,
  105 + rank = 3,
  106 + ai = "tactical",
  107 + max_life = resolvers.rngavg(100,120),
  108 + combat_armor = 20, combat_def = 40,
  109 + melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(15, 15)},
  110 + autolevel = "warriormage",
  111 + resists = {all = 30},
  112 + resolvers.talents{
  113 + [Talents.T_BONE_ARMOUR]={base=5, every=10, max=7},
  114 + [Talents.T_STUN]={base=3, every=10, max=5},
  115 + [Talents.T_SKELETON_REASSEMBLE]=5,
  116 + [Talents.T_ARCANE_POWER]={base=4, every=5, max = 8},
  117 + [Talents.T_MANATHRUST]={base=4, every=5, max = 10},
  118 + [Talents.T_MANAFLOW]={base=5, every=5, max = 10},
  119 + [Talents.T_STRIKE]={base=4, every=5, max = 12},
  120 + [Talents.T_INNER_POWER]={base=4, every=5, max = 10},
  121 + [Talents.T_EARTHEN_MISSILES]={base=5, every=5, max = 10},
  122 + },
  123 + resolvers.sustains_at_birth(),
  124 +}
... ...
... ... @@ -118,3 +118,32 @@ newEntity{ base = "BASE_NPC_GHOST",
118 118 [Talents.T_MIND_DISRUPTION]={base=3, every=7, max=6},
119 119 },
120 120 }
  121 +
  122 +newEntity{ base = "BASE_NPC_GHOST",
  123 + name = "ruin banshee", color=colors.GREY, image="npc/ruin_banshee.png",
  124 + desc = [[A vengeful, screaming soul given form with the breath of Urh'Rok himself. The vapors of the Fearscape seep from its dimension-bending form, withering and searing.]],
  125 + level_range = {42, nil}, exp_worth = 1,
  126 + rarity = 15,
  127 + rank = 3,
  128 + max_life = resolvers.rngavg(240,270),
  129 +
  130 + ai = "tactical",
  131 +
  132 + combat_armor = 0, combat_def = resolvers.mbonus(10, 50),
  133 + on_melee_hit = {[DamageType.BLIGHT]=resolvers.mbonus(25, 25)},
  134 + melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(25, 25)},
  135 + invisibility = resolvers.mbonus(10, 20),
  136 +
  137 + combat = { dam=resolvers.mbonus(85, 85), atk=resolvers.mbonus(45, 45), apr=100, dammod={str=0.7, mag=0.7} },
  138 +
  139 + resolvers.talents{
  140 + [Talents.T_PHASE_DOOR]=10,
  141 + [Talents.T_SILENCE]={base=2, every=10, max=6},
  142 + [Talents.T_MIND_DISRUPTION]={base=3, every=7, max=8},
  143 + [Talents.T_CORRUPTED_NEGATION]={base=5, every=6, max=8},
  144 + [Talents.T_CORROSIVE_WORM]={base=4, every=5, max=12},
  145 + [Talents.T_POISON_STORM]={base=4, every=5, max=12},
  146 + [Talents.T_CURSE_OF_DEATH]={base=5, every=6, max=8},
  147 + [Talents.T_CURSE_OF_IMPOTENCE]={base=5, every=6, max=8},
  148 + },
  149 +}
... ...
... ... @@ -167,3 +167,39 @@ newEntity{ base = "BASE_NPC_LICH",
167 167 [Talents.T_SHADOW_WARRIORS]=5,
168 168 },
169 169 }
  170 +
  171 +newEntity{ base = "BASE_NPC_LICH",
  172 + name = "blood lich", color=colors.LIGHT_RED,
  173 + desc=[[The seething, pumping, disembodied blood of a horrendously powerful necromancer. To strike it is to bathe in the rivers of the Fearscape itself.]],
  174 + level_range = {45, nil}, exp_worth = 1,
  175 + rarity = 3,
  176 + max_life = resolvers.rngavg(100,150),
  177 + combat_armor = 0, combat_def = 45,
  178 + on_melee_hit = {[DamageType.BLIGHT]=resolvers.mbonus(25, 30)},
  179 +
  180 + mana_regen = 100,
  181 +
  182 + resolvers.talents{
  183 + [Talents.T_FREEZE]={base=5, every=10, max=10},
  184 + [Talents.T_TIDAL_WAVE]={base=3, every=10, max=5},
  185 + [Talents.T_ARCANE_POWER]={base=4, every=5, max = 8},
  186 + [Talents.T_MANATHRUST]={base=4, every=5, max = 10},
  187 + [Talents.T_MANAFLOW]={base=5, every=5, max = 10},
  188 + [Talents.T_GLOOM]={base=4, every=5, max = 12},
  189 + [Talents.T_WEAKNESS]={base=4, every=5, max = 10},
  190 + [Talents.T_TORMENT]={base=5, every=5, max = 10},
  191 + [Talents.T_LIFE_LEECH]={base=5, every=5, max = 10},
  192 + [Talents.T_WILLFUL_STRIKE]={base=5, every=5, max = 10},
  193 + [Talents.T_UNSEEN_FORCE]={base=5, every=5, max = 10},
  194 + [Talents.T_BLOOD_SPRAY]={base=5, every=5, max = 10},
  195 + [Talents.T_BLOOD_GRASP]={base=5, every=5, max = 10},
  196 + [Talents.T_BLOOD_BOIL]={base=5, every=5, max = 10},
  197 + [Talents.T_BLOOD_FURY]={base=5, every=5, max = 10},
  198 +-- Utility spells
  199 + [Talents.T_PHASE_DOOR]=10,
  200 + [Talents.T_CALL_SHADOWS]=8,
  201 + [Talents.T_FOCUS_SHADOWS]=5,
  202 + [Talents.T_SHADOW_MAGES]=5,
  203 + [Talents.T_SHADOW_WARRIORS]=5,
  204 + },
  205 +}
\ No newline at end of file
... ...
... ... @@ -198,3 +198,85 @@ It moves swiftly toward you, casting terrible spells and swinging its weapons at
198 198 [Talents.T_TWILIGHT_SURGE]={base=5, every=8, max=8},
199 199 },
200 200 }
  201 +
  202 +newEntity{ base = "BASE_NPC_MAJOR_DEMON",
  203 + name = "champion of Urh'Rok", color=colors.GREY,
  204 + --resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/demon_major_daelach.png", display_h=2, display_y=-1}}},
  205 + desc = [[One of Urh'Rok's own champions. A thousand nightmares made flesh and screaming steel towering before you in the form of a massive, armored humanoid.]],
  206 + level_range = {43, nil}, exp_worth = 1,
  207 + rarity = 7,
  208 + rank = 3,
  209 + global_speed = 1.3,
  210 + size_category = 4,
  211 + autolevel = "warrior",
  212 + life_rating = 25,
  213 + combat_armor = 90, combat_def = 60,
  214 + mana_regen = 100, positive_regen = 100, negative_regen = 100, equilibrium_regen = -100, vim_regen = 100, stamina_regen = 100,
  215 +
  216 + ai = "tactical",
  217 +
  218 + resolvers.equip{ {type="weapon", subtype="greatsword", autoreq=true}, },
  219 +
  220 + resists={all = resolvers.mbonus(25, 20)},
  221 +
  222 + stun_immune = 1,
  223 + blind_immune = 1,
  224 + knockback_immune = 1,
  225 +
  226 + resolvers.talents{
  227 + [Talents.T_CORRUPTED_STRENGTH]={base=5, every=8, max=8},
  228 + [Talents.T_DISARM]=5,
  229 + [Talents.T_RUSH]={base=8, every=8, max=8},
  230 + [Talents.T_WEAPON_COMBAT]={base=8, every=5, max=12},
  231 + [Talents.T_GHOULISH_LEAP]={base=1, every=8, max=5},
  232 + [Talents.T_DEATH_DANCE]={base=5, every=8, max=10},
  233 + [Talents.T_STUNNING_BLOW]={base=5, every=8, max=8},
  234 + [Talents.T_SUNDER_ARMOUR]={base=5, every=8, max=10},
  235 + [Talents.T_SUNDER_ARMS]={base=5, every=8, max=10},
  236 + },
  237 +}
  238 +
  239 +newEntity{ base = "BASE_NPC_MAJOR_DEMON",
  240 + name = "forge-giant", color=colors.RED,
  241 + --resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/demon_major_daelach.png", display_h=2, display_y=-1}}},
  242 + desc = [[A burning giant wielding a forge hammer of the underworld in each hand-- weapons imbued by Urh'Rok himself with the power to crush and shape felsteel. Enter their range at your peril.]],
  243 + level_range = {47, nil}, exp_worth = 1,
  244 + rarity = 8,
  245 + rank = 3,
  246 + global_speed = 1,
  247 + size_category = 5,
  248 + autolevel = "warriormage",
  249 + life_rating = 30,
  250 + combat_armor = 32, combat_def = 40,
  251 + mana_regen = 100, positive_regen = 100, negative_regen = 100, equilibrium_regen = -100, vim_regen = 100, stamina_regen = 100,
  252 +
  253 + ai = "tactical",
  254 +
  255 + resolvers.equip{ {type="weapon", subtype="mace", autoreq=true}, },
  256 + resolvers.equip{ {type="weapon", subtype="mace", autoreq=true}, },
  257 +
  258 + resists={[DamageType.PHYSICAL] = resolvers.mbonus(15, 10), [DamageType.FIRE] = 100},
  259 + on_melee_hit = {[DamageType.FIRE]=resolvers.mbonus(25, 25)},
  260 + melee_project = {[DamageType.FIRE]=resolvers.mbonus(25, 35)},
  261 +
  262 + stun_immune = 1,
  263 + knockback_immune = 1,
  264 +
  265 +
  266 + resolvers.talents{
  267 + [Talents.T_CORRUPTED_STRENGTH]={base=5, every=8, max=8},
  268 + [Talents.T_DUAL_WEAPON_TRAINING]={base=1, every=8, max=6},
  269 + [Talents.T_DUAL_WEAPON_DEFENSE]={base=5, every=8, max=8},
  270 + [Talents.T_WEAPON_COMBAT]={base=8, every=5, max=12},
  271 + [Talents.T_WEAPONS_MASTERY]={base=7, every=8, max=14},
  272 + [Talents.T_THROW_BOULDER]={base=5, every=8, max=14},
  273 + [Talents.T_FIREBEAM]={base=5, every=8, max=8},
  274 + [Talents.T_WILDFIRE]={base=5, every=8, max=8},
  275 + [Talents.T_INFERNO]={base=5, every=8, max=8},
  276 + [Talents.T_FLAME]={base=5, every=8, max=10},
  277 + [Talents.T_FLAMESHOCK]={base=5, every=8, max=10},
  278 + [Talents.T_FIREFLASH]={base=5, every=8, max=10},
  279 + [Talents.T_BURNING_WAKE]={base=5, every=8, max=10},
  280 + [Talents.T_CLEANSING_FLAMES]={base=5, every=8, max=10},
  281 + },
  282 +}
\ No newline at end of file
... ...
... ... @@ -114,3 +114,33 @@ newEntity{ base = "BASE_NPC_TROLL",
114 114 [Talents.T_THUNDERSTORM]={base=3, every=7, max=8},
115 115 },
116 116 }
  117 +
  118 +newEntity{ base = "BASE_NPC_TROLL",
  119 + name = "patchwork troll", color=colors.PURPLE, image="npc/troll_patchwork.png",
  120 + desc = [[A disgusting and mismatched construct of necromantically-enhanced troll bits and shattered weapons. Confused and furious, it rends and shatters its surroundings with impossible strength, moving with speed found nowhere in nature.]],
  121 + level_range = {38, nil}, exp_worth = 1,
  122 + rarity = 6,
  123 + rank = 3,
  124 + global_speed = 1.6,
  125 + life_rating = 25,
  126 + max_life = resolvers.rngavg(220,240),
  127 +
  128 + combat_armor = 60, combat_def = 0,
  129 + combat = { dam=resolvers.levelup(resolvers.rngavg(25,110), 1, 2), atk=resolvers.rngavg(25,70), apr=15, dammod={str=1.5} },
  130 + autolevel = "warrior",
  131 + ai = "tactical",
  132 + stamina_regen = 100,
  133 + stun_immune = 1,
  134 + knockback_immune = 1,
  135 + blind_immune = 1,
  136 +
  137 + resolvers.talents{
  138 + [Talents.T_STUN]={base=5, every=6, max=12},
  139 + [Talents.T_RUSH]=8,
  140 + [Talents.T_BLINDING_SPEED]={base=4, every=7, max=10},
  141 + [Talents.T_FAST_METABOLISM]={base=5, every=5, max=30},
  142 + [Talents.T_UNFLINCHING_RESOLVE]={base=5, every=5, max=10},
  143 + [Talents.T_JUGGERNAUT]={base=5, every=5, max=10},
  144 + },
  145 + resolvers.sustains_at_birth(),
  146 +}
... ...
  1 +-- ToME - Tales of Maj'Eyal
  2 +-- Copyright (C) 2009, 2010, 2011 Nicolas Casalini
  3 +--
  4 +-- This program is free software: you can redistribute it and/or modify
  5 +-- it under the terms of the GNU General Public License as published by
  6 +-- the Free Software Foundation, either version 3 of the License, or
  7 +-- (at your option) any later version.
  8 +--
  9 +-- This program is distributed in the hope that it will be useful,
  10 +-- but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12 +-- GNU General Public License for more details.
  13 +--
  14 +-- You should have received a copy of the GNU General Public License
  15 +-- along with this program. If not, see <http://www.gnu.org/licenses/>.
  16 +--
  17 +-- Nicolas Casalini "DarkGod"
  18 +-- darkgod@te4.org
  19 +
  20 +local Talents = require("engine.interface.ActorTalents")
  21 +
  22 +newEntity{
  23 + define_as = "BASE_NPC_WILD_DRAKE",
  24 + type = "dragon", subtype = "wild",
  25 + display = "D", color=colors.SLATE,
  26 +
  27 + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, PSIONIC_FOCUS=1, BODY=1 },
  28 + resolvers.drops{chance=100, nb=1, {type="money"} },
  29 +
  30 + infravision = 10,
  31 + life_rating = 15,
  32 + rank = 2,
  33 + size_category = 5,
  34 +
  35 + autolevel = "drake",
  36 + ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
  37 + stats = { str=20, dex=20, mag=30, con=16 },
  38 +
  39 + knockback_immune = 1,
  40 + stun_immune = 1,
  41 + resolvers.sustains_at_birth(),
  42 +}
  43 +
  44 +
  45 +newEntity{ base = "BASE_NPC_WILD_DRAKE",
  46 + name = "spire dragon", color=colors.SLATE, display="D",
  47 + desc = [[A monstrous, coiled wyrm, patient and hateful. Its hide, studded with spikes and crests and blades, turns aside steel and sorcery with equal ease.]],
  48 + --resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/dragon_cold_ice_wyrm.png", display_h=2, display_y=-1}}},
  49 + level_range = {35, nil}, exp_worth = 1,
  50 + rarity = 6,
  51 + rank = 3,
  52 + global_speed = 1.3,
  53 + size_category = 5,
  54 + autolevel = "warrior",
  55 + max_life = resolvers.rngavg(170,190),
  56 + combat_armor = 70, combat_def = 50,
  57 + combat = { dam=resolvers.levelup(resolvers.rngavg(25,110), 1, 2), atk=resolvers.rngavg(25,70), apr=45, dammod={str=1.5} },
  58 + resists={all = resolvers.mbonus(25, 30)},
  59 + --resolvers.equip{ {type="gem", autoreq=true}, },
  60 + resolvers.drops{chance=100, nb=2, {type="gem"} },
  61 +
  62 + ai = "tactical",
  63 +
  64 + resolvers.talents{
  65 + [Talents.T_CONSTRICT]={base=4, every=5, max = 10},
  66 + [Talents.T_RUSHING_CLAWS]={base=3, every=5, max = 5},
  67 + [Talents.T_KINETIC_AURA]={base=4, every=5, max = 8},
  68 + [Talents.T_KINETIC_SHIELD]={base=4, every=5, max = 8},
  69 + [Talents.T_SHATTERING_CHARGE]={base=4, every=5, max = 10},
  70 + [Talents.T_INSATIABLE]={base=5, every=5, max = 30},
  71 + },
  72 +}
  73 +
  74 +newEntity{ base = "BASE_NPC_WILD_DRAKE",
  75 + name = "blinkwyrm", color=colors.YELLOW, display="D",
  76 + desc = [[A shifting, writhing, snake-like dragon, blinking in and out of existance, just waiting for you to turn your back.]],
  77 + --resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/dragon_cold_ice_wyrm.png", display_h=2, display_y=-1}}},
  78 + level_range = {40, nil}, exp_worth = 1,
  79 + rarity = 7,
  80 + rank = 3,
  81 + global_speed = 1.4,
  82 + size_category = 4,
  83 + autolevel = "caster",
  84 + max_life = resolvers.rngavg(100,120),
  85 + combat_armor = 0, combat_def = 90,
  86 + mana_regen = 100, positive_regen = 100, negative_regen = 100, equilibrium_regen = -100, vim_regen = 100, stamina_regen = 100,
  87 +
  88 + ai = "tactical",
  89 +
  90 + resolvers.talents{
  91 + [Talents.T_DISRUPTION_SHIELD]={base=4, every=5, max = 10},
  92 + [Talents.T_DISPLACEMENT_SHIELD]={base=3, every=5, max = 10},
  93 + [Talents.T_TIME_SHIELD]={base=4, every=5, max = 10},
  94 + [Talents.T_ARCANE_POWER]={base=4, every=5, max = 8},
  95 + [Talents.T_MANATHRUST]={base=4, every=5, max = 10},
  96 + [Talents.T_MANAFLOW]={base=5, every=5, max = 10},
  97 + [Talents.T_DISPERSE_MAGIC]={base=4, every=5, max = 8},
  98 + [Talents.T_QUICKEN_SPELLS]={base=4, every=5, max = 10},
  99 + [Talents.T_METAFLOW]={base=5, every=5, max = 10},
  100 + [Talents.T_ESSENCE_OF_SPEED]={base=4, every=5, max = 10},
  101 + [Talents.T_MINDLASH]={base=5, every=5, max = 10},
  102 + [Talents.T_KINETIC_LEECH]={base=5, every=5, max = 10},
  103 + [Talents.T_THERMAL_LEECH]={base=4, every=5, max = 10},
  104 + [Talents.T_CHARGE_LEECH]={base=5, every=5, max = 10},
  105 + [Talents.T_INSATIABLE]={base=5, every=5, max = 30},
  106 + [Talents.T_PHASE_DOOR]={base=5, every=5, max = 10},
  107 + [Talents.T_PROBABILITY_TRAVEL]={base=5, every=5, max = 10},
  108 + },
  109 +
  110 + resolvers.inscriptions(2, {"phase door rune", "phase door rune"}),
  111 +
  112 +}
... ...
... ... @@ -41,17 +41,17 @@ defineTile('A', "DEEP_WATER", nil, {random_filter={add_levels=10, type = "aquati
41 41
42 42 return {
43 43
44   -[[~~~~~A~~~~~~~~~~~~~~~A~~~~~~~~~~~~~A~~~~]],
45   -[[~##########~~~~~~~~~~~~~~~~~~##########~]],
46   -[[~#.p.....p#~~~A~~~~~~~~~~~~~~#.....p..#~]],
47   -[[A#.######.#~~~~~~~~~~~~~~~~~~#.######.#A]],
48   -[[~#.#xxxx#.#~~~~~~~~~A~~~~~A~~#.#xxx.#.#~]],
49   -[[~#p#HHHH#.####################p#TTTT#p#~]],
50   -[[~#.#pppP#.#*$$pH.+.#HLH.D..+^#.#HHHH#.#~]],
51   -[[A#.#....#p#$*$pH.#.#LHH.D..#^#.#xxx.#.#~]],
52   -[[~#.###+##.########.#########.#.##+###.#A]],
53   -[[~#..p.....#..DDLL#.%.........+.p....p.#~]],
54   -[[~#####+####%######+####################~]],
  44 +[[........................................]],
  45 +[[.##########~~~~~~~~~~~~~~~~~~##########.]],
  46 +[[.#.p.....p#~~~A~~~~~~~~~~~~~~#.....p..#.]],
  47 +[[.#.######.#~~~~~~~~~~~~~~~~~~#.######.#.]],
  48 +[[.#.#xxxx#.#~~~~~~~~~A~~~~~A~~#.#xxx.#.#.]],
  49 +[[.#p#HHHH#.####################p#TTTT#p#.]],
  50 +[[.#.#pppP#.#*$$pH.+.#HLH.D..+^#.#HHHH#.#.]],
  51 +[[.#.#....#p#$*$pH.#.#LHH.D..#^#.#xxx.#.#.]],
  52 +[[.#.###+##.########.#########.#.##+###.#.]],
  53 +[[.#..p.....#..DDLL#.%.........+.p....p.#.]],
  54 +[[.#####+####%######+####################.]],
55 55 [[~A~~~#.#**#^.../$#P.....p....+.pp/#~~~~~]],
56 56 [[~~~~~#.#**#$.../$#.p.......p.#.pP/#~A~~~]],
57 57 [[~~~~~#.#**#$.../$#...p.....p.#ppp/#~~~~~]],
... ... @@ -70,16 +70,16 @@ return {
70 70 [[~~A~~#.#**#xxxxxD#.p.......P.#ppp/#A~~~~]],
71 71 [[~~~~~#.#**########.....p.....#.pP/#~~~A~]],
72 72 [[~~~~~#.#**%DDDLLL#.p.....p...+.pp/#~~~~~]],
73   -[[~#####+###########+####################~]],
74   -[[~#.p....p.+..P......H....TT..+.....p..#~]],
75   -[[~#.###+##.#.....p......p..TT^#.##+###.#A]],
76   -[[~#.#....#.#%################%#p#xxx.#.#~]],
77   -[[~#.#pppP#.#....DDLL#LLDD.....#.#TTTT#.#~]],
78   -[[~#p#HHHH#.####################.#HHHH#p#~]],
79   -[[A#.#xxxx#p#~~~~A~~~~~~~~~A~~~#.#xxx.#.#A]],
80   -[[~#.######.#~~~~~~~~~~~~~~~~~~#.######.#~]],
81   -[[~#..p.....#~~~~~~~~~~~~~~~~A~#p...p...#~]],
82   -[[~##########~~~~~A~~~~~~~~~~~~##########~]],
83   -[[~~~~~A~~~~~~~~~~~~~~~~~~~~~~~~~~A~~~~~~~]],
  73 +[[.#####+###########+####################.]],
  74 +[[.#.p....p.+..P......H....TT..+.....p..#.]],
  75 +[[.#.###+##.#.....p......p..TT^#.##+###.#.]],
  76 +[[.#.#....#.#%################%#p#xxx.#.#.]],
  77 +[[.#.#pppP#.#....DDLL#LLDD.....#.#TTTT#.#.]],
  78 +[[.#p#HHHH#.####################.#HHHH#p#.]],
  79 +[[.#.#xxxx#p#~~~~A~~~~~~~~~A~~~#.#xxx.#.#.]],
  80 +[[.#.######.#~~~~~~~~~~~~~~~~~~#.######.#.]],
  81 +[[.#..p.....#~~~~~~~~~~~~~~~~A~#p...p...#.]],
  82 +[[.##########~~~~~A~~~~~~~~~~~~##########.]],
  83 +[[........................................]],
84 84
85 85 }
\ No newline at end of file
... ...
... ... @@ -154,10 +154,15 @@ newTalent{
154 154 end
155 155 local dam = self:spellCrit(self:combatTalentMindDamage(t, 20, 600))
156 156 self:project(tg, x, y, DamageType.BATTER, self:spellCrit(rng.avg(2*dam/3, dam, 3)))
157   - local _ _, x, y = self:canProject(tg, x, y)
  157 + --local _ _, x, y = self:canProject(tg, x, y)
158 158 game.level.map:particleEmitter(self.x, self.y, tg.radius, "flamebeam", {tx=x-self.x, ty=y-self.y})
159 159 game:playSoundNear(self, "talents/lightning")
160   - self:move(x, y, true)
  160 + --self:move(x, y, true)
  161 + local fx, fy = util.findFreeGrid(x, y, 5, true, {[Map.ACTOR]=true})
  162 + if not fx then
  163 + return
  164 + end
  165 + self:move(fx, fy, true)
161 166 else
162 167 game.logSeen(self, "You can't move there.")
163 168 return nil
... ... @@ -189,7 +194,12 @@ newTalent{
189 194 tx, ty = lx, ly
190 195 lx, ly = l()
191 196 end
192   - self:move(tx, ty, true)
  197 + --self:move(tx, ty, true)
  198 + local fx, fy = util.findFreeGrid(tx, ty, 5, true, {[Map.ACTOR]=true})
  199 + if not fx then
  200 + return
  201 + end
  202 + self:move(fx, fy, true)
193 203 return true
194 204 end
195 205 end,
... ...
... ... @@ -29,11 +29,11 @@ newTalent{
29 29 points = 5,
30 30 random_ego = "attack",
31 31 cooldown = function(self, t)
32   - local c = 15
  32 + local c = 5
33 33 local gem_level = getGemLevel(self)
34   - return c - gem_level
  34 + return math.max(c - gem_level, 0)
35 35 end,
36   - psi = 15,
  36 + psi = 10,
37 37 tactical = { ATTACK = 2 },
38 38 range = function(self, t)
39 39 local r = 5
... ...
... ... @@ -395,7 +395,7 @@ newEffect{
395 395 newEffect{
396 396 name = "STUNNED",
397 397 desc = "Stunned",
398   - long_desc = function(self, eff) return ("The target is stunned, reducing damage by 70%%, healing received by 50%, putting random talents on cooldown and reducing movement speed by 50%%. While stunned talents do not cooldown."):format() end,
  398 + long_desc = function(self, eff) return ("The target is stunned, reducing damage by 70%%, healing received by 50%%, putting random talents on cooldown and reducing movement speed by 50%%. While stunned talents do not cooldown."):format() end,
399 399 type = "physical",
400 400 status = "detrimental",
401 401 parameters = {},
... ...
No preview for this file type