diff --git a/game/modules/tome/ai/tactical.lua b/game/modules/tome/ai/tactical.lua index 95d9fb36d36fc49ff00b0795e253c6f1296db737..db479795b8c55fb42ff472079fcd6dccf44485d0 100644 --- a/game/modules/tome/ai/tactical.lua +++ b/game/modules/tome/ai/tactical.lua @@ -17,6 +17,8 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org +local print = function() end + -- Internal functions local checkLOS = function(sx, sy, tx, ty) what = what or "block_sight" diff --git a/game/modules/tome/data/general/npcs/all.lua b/game/modules/tome/data/general/npcs/all.lua index f01de81f5ec8e07b59dbb7b9a12b4a14a8326bca..a29a6741c09deec4a8a74cb46a526f9931b14261 100644 --- a/game/modules/tome/data/general/npcs/all.lua +++ b/game/modules/tome/data/general/npcs/all.lua @@ -78,6 +78,7 @@ loadIfNot("/data/general/npcs/troll.lua") loadIfNot("/data/general/npcs/vampire.lua") loadIfNot("/data/general/npcs/vermin.lua") loadIfNot("/data/general/npcs/wight.lua") +loadIfNot("/data/general/npcs/wild-drake.lua") loadIfNot("/data/general/npcs/xorn.lua") loadIfNot("/data/general/npcs/humanoid_random_boss.lua") diff --git a/game/modules/tome/data/general/npcs/bone-giant.lua b/game/modules/tome/data/general/npcs/bone-giant.lua index a106780ca1647a67e586207a3606d13d7988043a..eea9cbc3e8c80e1d43adf9888ab4be8b89b05fc5 100644 --- a/game/modules/tome/data/general/npcs/bone-giant.lua +++ b/game/modules/tome/data/general/npcs/bone-giant.lua @@ -96,3 +96,29 @@ newEntity{ base = "BASE_NPC_BONE_GIANT", melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)}, 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}, }, } + +newEntity{ base = "BASE_NPC_BONE_GIANT", + name = "runed bone giant", color=colors.RED, + desc = [[A towering creature, made from the bones of hundreds of dead bodies, rune-etched and infused with hateful sorceries.]], + level_range = {40, nil}, exp_worth = 1, + rarity = 5, + rank = 3, + ai = "tactical", + max_life = resolvers.rngavg(100,120), + combat_armor = 20, combat_def = 40, + melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(15, 15)}, + autolevel = "warriormage", + resists = {all = 30}, + resolvers.talents{ + [Talents.T_BONE_ARMOUR]={base=5, every=10, max=7}, + [Talents.T_STUN]={base=3, every=10, max=5}, + [Talents.T_SKELETON_REASSEMBLE]=5, + [Talents.T_ARCANE_POWER]={base=4, every=5, max = 8}, + [Talents.T_MANATHRUST]={base=4, every=5, max = 10}, + [Talents.T_MANAFLOW]={base=5, every=5, max = 10}, + [Talents.T_STRIKE]={base=4, every=5, max = 12}, + [Talents.T_INNER_POWER]={base=4, every=5, max = 10}, + [Talents.T_EARTHEN_MISSILES]={base=5, every=5, max = 10}, + }, + resolvers.sustains_at_birth(), +} diff --git a/game/modules/tome/data/general/npcs/ghost.lua b/game/modules/tome/data/general/npcs/ghost.lua index 0b2771475b4ef5ff953a28a17e685529bc9ba097..d7f2d585ebd1de7099f87920ddb327940faa41a1 100644 --- a/game/modules/tome/data/general/npcs/ghost.lua +++ b/game/modules/tome/data/general/npcs/ghost.lua @@ -118,3 +118,32 @@ newEntity{ base = "BASE_NPC_GHOST", [Talents.T_MIND_DISRUPTION]={base=3, every=7, max=6}, }, } + +newEntity{ base = "BASE_NPC_GHOST", + name = "ruin banshee", color=colors.GREY, image="npc/ruin_banshee.png", + 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.]], + level_range = {42, nil}, exp_worth = 1, + rarity = 15, + rank = 3, + max_life = resolvers.rngavg(240,270), + + ai = "tactical", + + combat_armor = 0, combat_def = resolvers.mbonus(10, 50), + on_melee_hit = {[DamageType.BLIGHT]=resolvers.mbonus(25, 25)}, + melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(25, 25)}, + invisibility = resolvers.mbonus(10, 20), + + combat = { dam=resolvers.mbonus(85, 85), atk=resolvers.mbonus(45, 45), apr=100, dammod={str=0.7, mag=0.7} }, + + resolvers.talents{ + [Talents.T_PHASE_DOOR]=10, + [Talents.T_SILENCE]={base=2, every=10, max=6}, + [Talents.T_MIND_DISRUPTION]={base=3, every=7, max=8}, + [Talents.T_CORRUPTED_NEGATION]={base=5, every=6, max=8}, + [Talents.T_CORROSIVE_WORM]={base=4, every=5, max=12}, + [Talents.T_POISON_STORM]={base=4, every=5, max=12}, + [Talents.T_CURSE_OF_DEATH]={base=5, every=6, max=8}, + [Talents.T_CURSE_OF_IMPOTENCE]={base=5, every=6, max=8}, + }, +} diff --git a/game/modules/tome/data/general/npcs/lich.lua b/game/modules/tome/data/general/npcs/lich.lua index 511df47bab2bc7f97e36fb123e7b38ce6f3bb0b2..379d8bf2db1c1ea6a1d82233110cdf330574eac4 100644 --- a/game/modules/tome/data/general/npcs/lich.lua +++ b/game/modules/tome/data/general/npcs/lich.lua @@ -167,3 +167,39 @@ newEntity{ base = "BASE_NPC_LICH", [Talents.T_SHADOW_WARRIORS]=5, }, } + +newEntity{ base = "BASE_NPC_LICH", + name = "blood lich", color=colors.LIGHT_RED, + desc=[[The seething, pumping, disembodied blood of a horrendously powerful necromancer. To strike it is to bathe in the rivers of the Fearscape itself.]], + level_range = {45, nil}, exp_worth = 1, + rarity = 3, + max_life = resolvers.rngavg(100,150), + combat_armor = 0, combat_def = 45, + on_melee_hit = {[DamageType.BLIGHT]=resolvers.mbonus(25, 30)}, + + mana_regen = 100, + + resolvers.talents{ + [Talents.T_FREEZE]={base=5, every=10, max=10}, + [Talents.T_TIDAL_WAVE]={base=3, every=10, max=5}, + [Talents.T_ARCANE_POWER]={base=4, every=5, max = 8}, + [Talents.T_MANATHRUST]={base=4, every=5, max = 10}, + [Talents.T_MANAFLOW]={base=5, every=5, max = 10}, + [Talents.T_GLOOM]={base=4, every=5, max = 12}, + [Talents.T_WEAKNESS]={base=4, every=5, max = 10}, + [Talents.T_TORMENT]={base=5, every=5, max = 10}, + [Talents.T_LIFE_LEECH]={base=5, every=5, max = 10}, + [Talents.T_WILLFUL_STRIKE]={base=5, every=5, max = 10}, + [Talents.T_UNSEEN_FORCE]={base=5, every=5, max = 10}, + [Talents.T_BLOOD_SPRAY]={base=5, every=5, max = 10}, + [Talents.T_BLOOD_GRASP]={base=5, every=5, max = 10}, + [Talents.T_BLOOD_BOIL]={base=5, every=5, max = 10}, + [Talents.T_BLOOD_FURY]={base=5, every=5, max = 10}, +-- Utility spells + [Talents.T_PHASE_DOOR]=10, + [Talents.T_CALL_SHADOWS]=8, + [Talents.T_FOCUS_SHADOWS]=5, + [Talents.T_SHADOW_MAGES]=5, + [Talents.T_SHADOW_WARRIORS]=5, + }, +} \ No newline at end of file diff --git a/game/modules/tome/data/general/npcs/major-demon.lua b/game/modules/tome/data/general/npcs/major-demon.lua index abbbb16cedbdd0709ba80ff11224a597eaf552d4..9da7141ffb058b281491de291c03afe77b115c0f 100644 --- a/game/modules/tome/data/general/npcs/major-demon.lua +++ b/game/modules/tome/data/general/npcs/major-demon.lua @@ -198,3 +198,85 @@ It moves swiftly toward you, casting terrible spells and swinging its weapons at [Talents.T_TWILIGHT_SURGE]={base=5, every=8, max=8}, }, } + +newEntity{ base = "BASE_NPC_MAJOR_DEMON", + name = "champion of Urh'Rok", color=colors.GREY, + --resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/demon_major_daelach.png", display_h=2, display_y=-1}}}, + 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.]], + level_range = {43, nil}, exp_worth = 1, + rarity = 7, + rank = 3, + global_speed = 1.3, + size_category = 4, + autolevel = "warrior", + life_rating = 25, + combat_armor = 90, combat_def = 60, + mana_regen = 100, positive_regen = 100, negative_regen = 100, equilibrium_regen = -100, vim_regen = 100, stamina_regen = 100, + + ai = "tactical", + + resolvers.equip{ {type="weapon", subtype="greatsword", autoreq=true}, }, + + resists={all = resolvers.mbonus(25, 20)}, + + stun_immune = 1, + blind_immune = 1, + knockback_immune = 1, + + resolvers.talents{ + [Talents.T_CORRUPTED_STRENGTH]={base=5, every=8, max=8}, + [Talents.T_DISARM]=5, + [Talents.T_RUSH]={base=8, every=8, max=8}, + [Talents.T_WEAPON_COMBAT]={base=8, every=5, max=12}, + [Talents.T_GHOULISH_LEAP]={base=1, every=8, max=5}, + [Talents.T_DEATH_DANCE]={base=5, every=8, max=10}, + [Talents.T_STUNNING_BLOW]={base=5, every=8, max=8}, + [Talents.T_SUNDER_ARMOUR]={base=5, every=8, max=10}, + [Talents.T_SUNDER_ARMS]={base=5, every=8, max=10}, + }, +} + +newEntity{ base = "BASE_NPC_MAJOR_DEMON", + name = "forge-giant", color=colors.RED, + --resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/demon_major_daelach.png", display_h=2, display_y=-1}}}, + 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.]], + level_range = {47, nil}, exp_worth = 1, + rarity = 8, + rank = 3, + global_speed = 1, + size_category = 5, + autolevel = "warriormage", + life_rating = 30, + combat_armor = 32, combat_def = 40, + mana_regen = 100, positive_regen = 100, negative_regen = 100, equilibrium_regen = -100, vim_regen = 100, stamina_regen = 100, + + ai = "tactical", + + resolvers.equip{ {type="weapon", subtype="mace", autoreq=true}, }, + resolvers.equip{ {type="weapon", subtype="mace", autoreq=true}, }, + + resists={[DamageType.PHYSICAL] = resolvers.mbonus(15, 10), [DamageType.FIRE] = 100}, + on_melee_hit = {[DamageType.FIRE]=resolvers.mbonus(25, 25)}, + melee_project = {[DamageType.FIRE]=resolvers.mbonus(25, 35)}, + + stun_immune = 1, + knockback_immune = 1, + + + resolvers.talents{ + [Talents.T_CORRUPTED_STRENGTH]={base=5, every=8, max=8}, + [Talents.T_DUAL_WEAPON_TRAINING]={base=1, every=8, max=6}, + [Talents.T_DUAL_WEAPON_DEFENSE]={base=5, every=8, max=8}, + [Talents.T_WEAPON_COMBAT]={base=8, every=5, max=12}, + [Talents.T_WEAPONS_MASTERY]={base=7, every=8, max=14}, + [Talents.T_THROW_BOULDER]={base=5, every=8, max=14}, + [Talents.T_FIREBEAM]={base=5, every=8, max=8}, + [Talents.T_WILDFIRE]={base=5, every=8, max=8}, + [Talents.T_INFERNO]={base=5, every=8, max=8}, + [Talents.T_FLAME]={base=5, every=8, max=10}, + [Talents.T_FLAMESHOCK]={base=5, every=8, max=10}, + [Talents.T_FIREFLASH]={base=5, every=8, max=10}, + [Talents.T_BURNING_WAKE]={base=5, every=8, max=10}, + [Talents.T_CLEANSING_FLAMES]={base=5, every=8, max=10}, + }, +} \ No newline at end of file diff --git a/game/modules/tome/data/general/npcs/troll.lua b/game/modules/tome/data/general/npcs/troll.lua index 43d1e9881ab18b6c0b08aa46afc854edce10e9ad..0aa039730ddab3de3d36205e3f0f5bfc98591990 100644 --- a/game/modules/tome/data/general/npcs/troll.lua +++ b/game/modules/tome/data/general/npcs/troll.lua @@ -114,3 +114,33 @@ newEntity{ base = "BASE_NPC_TROLL", [Talents.T_THUNDERSTORM]={base=3, every=7, max=8}, }, } + +newEntity{ base = "BASE_NPC_TROLL", + name = "patchwork troll", color=colors.PURPLE, image="npc/troll_patchwork.png", + 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.]], + level_range = {38, nil}, exp_worth = 1, + rarity = 6, + rank = 3, + global_speed = 1.6, + life_rating = 25, + max_life = resolvers.rngavg(220,240), + + combat_armor = 60, combat_def = 0, + combat = { dam=resolvers.levelup(resolvers.rngavg(25,110), 1, 2), atk=resolvers.rngavg(25,70), apr=15, dammod={str=1.5} }, + autolevel = "warrior", + ai = "tactical", + stamina_regen = 100, + stun_immune = 1, + knockback_immune = 1, + blind_immune = 1, + + resolvers.talents{ + [Talents.T_STUN]={base=5, every=6, max=12}, + [Talents.T_RUSH]=8, + [Talents.T_BLINDING_SPEED]={base=4, every=7, max=10}, + [Talents.T_FAST_METABOLISM]={base=5, every=5, max=30}, + [Talents.T_UNFLINCHING_RESOLVE]={base=5, every=5, max=10}, + [Talents.T_JUGGERNAUT]={base=5, every=5, max=10}, + }, + resolvers.sustains_at_birth(), +} diff --git a/game/modules/tome/data/general/npcs/wild-drake.lua b/game/modules/tome/data/general/npcs/wild-drake.lua new file mode 100644 index 0000000000000000000000000000000000000000..5c2c587e1772d5724d538e165cb5d1f2e43d3ad2 --- /dev/null +++ b/game/modules/tome/data/general/npcs/wild-drake.lua @@ -0,0 +1,112 @@ +-- ToME - Tales of Maj'Eyal +-- Copyright (C) 2009, 2010, 2011 Nicolas Casalini +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- Nicolas Casalini "DarkGod" +-- darkgod@te4.org + +local Talents = require("engine.interface.ActorTalents") + +newEntity{ + define_as = "BASE_NPC_WILD_DRAKE", + type = "dragon", subtype = "wild", + display = "D", color=colors.SLATE, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, PSIONIC_FOCUS=1, BODY=1 }, + resolvers.drops{chance=100, nb=1, {type="money"} }, + + infravision = 10, + life_rating = 15, + rank = 2, + size_category = 5, + + autolevel = "drake", + ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, }, + stats = { str=20, dex=20, mag=30, con=16 }, + + knockback_immune = 1, + stun_immune = 1, + resolvers.sustains_at_birth(), +} + + +newEntity{ base = "BASE_NPC_WILD_DRAKE", + name = "spire dragon", color=colors.SLATE, display="D", + 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.]], + --resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/dragon_cold_ice_wyrm.png", display_h=2, display_y=-1}}}, + level_range = {35, nil}, exp_worth = 1, + rarity = 6, + rank = 3, + global_speed = 1.3, + size_category = 5, + autolevel = "warrior", + max_life = resolvers.rngavg(170,190), + combat_armor = 70, combat_def = 50, + combat = { dam=resolvers.levelup(resolvers.rngavg(25,110), 1, 2), atk=resolvers.rngavg(25,70), apr=45, dammod={str=1.5} }, + resists={all = resolvers.mbonus(25, 30)}, + --resolvers.equip{ {type="gem", autoreq=true}, }, + resolvers.drops{chance=100, nb=2, {type="gem"} }, + + ai = "tactical", + + resolvers.talents{ + [Talents.T_CONSTRICT]={base=4, every=5, max = 10}, + [Talents.T_RUSHING_CLAWS]={base=3, every=5, max = 5}, + [Talents.T_KINETIC_AURA]={base=4, every=5, max = 8}, + [Talents.T_KINETIC_SHIELD]={base=4, every=5, max = 8}, + [Talents.T_SHATTERING_CHARGE]={base=4, every=5, max = 10}, + [Talents.T_INSATIABLE]={base=5, every=5, max = 30}, + }, +} + +newEntity{ base = "BASE_NPC_WILD_DRAKE", + name = "blinkwyrm", color=colors.YELLOW, display="D", + desc = [[A shifting, writhing, snake-like dragon, blinking in and out of existance, just waiting for you to turn your back.]], + --resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/dragon_cold_ice_wyrm.png", display_h=2, display_y=-1}}}, + level_range = {40, nil}, exp_worth = 1, + rarity = 7, + rank = 3, + global_speed = 1.4, + size_category = 4, + autolevel = "caster", + max_life = resolvers.rngavg(100,120), + combat_armor = 0, combat_def = 90, + mana_regen = 100, positive_regen = 100, negative_regen = 100, equilibrium_regen = -100, vim_regen = 100, stamina_regen = 100, + + ai = "tactical", + + resolvers.talents{ + [Talents.T_DISRUPTION_SHIELD]={base=4, every=5, max = 10}, + [Talents.T_DISPLACEMENT_SHIELD]={base=3, every=5, max = 10}, + [Talents.T_TIME_SHIELD]={base=4, every=5, max = 10}, + [Talents.T_ARCANE_POWER]={base=4, every=5, max = 8}, + [Talents.T_MANATHRUST]={base=4, every=5, max = 10}, + [Talents.T_MANAFLOW]={base=5, every=5, max = 10}, + [Talents.T_DISPERSE_MAGIC]={base=4, every=5, max = 8}, + [Talents.T_QUICKEN_SPELLS]={base=4, every=5, max = 10}, + [Talents.T_METAFLOW]={base=5, every=5, max = 10}, + [Talents.T_ESSENCE_OF_SPEED]={base=4, every=5, max = 10}, + [Talents.T_MINDLASH]={base=5, every=5, max = 10}, + [Talents.T_KINETIC_LEECH]={base=5, every=5, max = 10}, + [Talents.T_THERMAL_LEECH]={base=4, every=5, max = 10}, + [Talents.T_CHARGE_LEECH]={base=5, every=5, max = 10}, + [Talents.T_INSATIABLE]={base=5, every=5, max = 30}, + [Talents.T_PHASE_DOOR]={base=5, every=5, max = 10}, + [Talents.T_PROBABILITY_TRAVEL]={base=5, every=5, max = 10}, + }, + + resolvers.inscriptions(2, {"phase door rune", "phase door rune"}), + +} diff --git a/game/modules/tome/data/maps/vaults/bandit-fortress.lua b/game/modules/tome/data/maps/vaults/bandit-fortress.lua index e70d307ca9e6da959c2f24bf1d3ebed952b8d364..513df380ddad5387b71ef24b3855097403ed3a2d 100644 --- a/game/modules/tome/data/maps/vaults/bandit-fortress.lua +++ b/game/modules/tome/data/maps/vaults/bandit-fortress.lua @@ -41,17 +41,17 @@ defineTile('A', "DEEP_WATER", nil, {random_filter={add_levels=10, type = "aquati return { -[[~~~~~A~~~~~~~~~~~~~~~A~~~~~~~~~~~~~A~~~~]], -[[~##########~~~~~~~~~~~~~~~~~~##########~]], -[[~#.p.....p#~~~A~~~~~~~~~~~~~~#.....p..#~]], -[[A#.######.#~~~~~~~~~~~~~~~~~~#.######.#A]], -[[~#.#xxxx#.#~~~~~~~~~A~~~~~A~~#.#xxx.#.#~]], -[[~#p#HHHH#.####################p#TTTT#p#~]], -[[~#.#pppP#.#*$$pH.+.#HLH.D..+^#.#HHHH#.#~]], -[[A#.#....#p#$*$pH.#.#LHH.D..#^#.#xxx.#.#~]], -[[~#.###+##.########.#########.#.##+###.#A]], -[[~#..p.....#..DDLL#.%.........+.p....p.#~]], -[[~#####+####%######+####################~]], +[[........................................]], +[[.##########~~~~~~~~~~~~~~~~~~##########.]], +[[.#.p.....p#~~~A~~~~~~~~~~~~~~#.....p..#.]], +[[.#.######.#~~~~~~~~~~~~~~~~~~#.######.#.]], +[[.#.#xxxx#.#~~~~~~~~~A~~~~~A~~#.#xxx.#.#.]], +[[.#p#HHHH#.####################p#TTTT#p#.]], +[[.#.#pppP#.#*$$pH.+.#HLH.D..+^#.#HHHH#.#.]], +[[.#.#....#p#$*$pH.#.#LHH.D..#^#.#xxx.#.#.]], +[[.#.###+##.########.#########.#.##+###.#.]], +[[.#..p.....#..DDLL#.%.........+.p....p.#.]], +[[.#####+####%######+####################.]], [[~A~~~#.#**#^.../$#P.....p....+.pp/#~~~~~]], [[~~~~~#.#**#$.../$#.p.......p.#.pP/#~A~~~]], [[~~~~~#.#**#$.../$#...p.....p.#ppp/#~~~~~]], @@ -70,16 +70,16 @@ return { [[~~A~~#.#**#xxxxxD#.p.......P.#ppp/#A~~~~]], [[~~~~~#.#**########.....p.....#.pP/#~~~A~]], [[~~~~~#.#**%DDDLLL#.p.....p...+.pp/#~~~~~]], -[[~#####+###########+####################~]], -[[~#.p....p.+..P......H....TT..+.....p..#~]], -[[~#.###+##.#.....p......p..TT^#.##+###.#A]], -[[~#.#....#.#%################%#p#xxx.#.#~]], -[[~#.#pppP#.#....DDLL#LLDD.....#.#TTTT#.#~]], -[[~#p#HHHH#.####################.#HHHH#p#~]], -[[A#.#xxxx#p#~~~~A~~~~~~~~~A~~~#.#xxx.#.#A]], -[[~#.######.#~~~~~~~~~~~~~~~~~~#.######.#~]], -[[~#..p.....#~~~~~~~~~~~~~~~~A~#p...p...#~]], -[[~##########~~~~~A~~~~~~~~~~~~##########~]], -[[~~~~~A~~~~~~~~~~~~~~~~~~~~~~~~~~A~~~~~~~]], +[[.#####+###########+####################.]], +[[.#.p....p.+..P......H....TT..+.....p..#.]], +[[.#.###+##.#.....p......p..TT^#.##+###.#.]], +[[.#.#....#.#%################%#p#xxx.#.#.]], +[[.#.#pppP#.#....DDLL#LLDD.....#.#TTTT#.#.]], +[[.#p#HHHH#.####################.#HHHH#p#.]], +[[.#.#xxxx#p#~~~~A~~~~~~~~~A~~~#.#xxx.#.#.]], +[[.#.######.#~~~~~~~~~~~~~~~~~~#.######.#.]], +[[.#..p.....#~~~~~~~~~~~~~~~~A~#p...p...#.]], +[[.##########~~~~~A~~~~~~~~~~~~##########.]], +[[........................................]], } \ No newline at end of file diff --git a/game/modules/tome/data/talents/psionic/augmented-mobility.lua b/game/modules/tome/data/talents/psionic/augmented-mobility.lua index ad8d851d1b26b5deb3df9d6eb3f8233aec027ee3..98da34f76ff79322a7608e7543a50f5139c96a40 100644 --- a/game/modules/tome/data/talents/psionic/augmented-mobility.lua +++ b/game/modules/tome/data/talents/psionic/augmented-mobility.lua @@ -154,10 +154,15 @@ newTalent{ end local dam = self:spellCrit(self:combatTalentMindDamage(t, 20, 600)) self:project(tg, x, y, DamageType.BATTER, self:spellCrit(rng.avg(2*dam/3, dam, 3))) - local _ _, x, y = self:canProject(tg, x, y) + --local _ _, x, y = self:canProject(tg, x, y) game.level.map:particleEmitter(self.x, self.y, tg.radius, "flamebeam", {tx=x-self.x, ty=y-self.y}) game:playSoundNear(self, "talents/lightning") - self:move(x, y, true) + --self:move(x, y, true) + local fx, fy = util.findFreeGrid(x, y, 5, true, {[Map.ACTOR]=true}) + if not fx then + return + end + self:move(fx, fy, true) else game.logSeen(self, "You can't move there.") return nil @@ -189,7 +194,12 @@ newTalent{ tx, ty = lx, ly lx, ly = l() end - self:move(tx, ty, true) + --self:move(tx, ty, true) + local fx, fy = util.findFreeGrid(tx, ty, 5, true, {[Map.ACTOR]=true}) + if not fx then + return + end + self:move(fx, fy, true) return true end end, diff --git a/game/modules/tome/data/talents/psionic/focus.lua b/game/modules/tome/data/talents/psionic/focus.lua index 7826da7942e6a5c59d2566dead2340f613c76e1f..6e7c2f5ca1b03c7a2b995622c2144da7851c00e5 100644 --- a/game/modules/tome/data/talents/psionic/focus.lua +++ b/game/modules/tome/data/talents/psionic/focus.lua @@ -29,11 +29,11 @@ newTalent{ points = 5, random_ego = "attack", cooldown = function(self, t) - local c = 15 + local c = 5 local gem_level = getGemLevel(self) - return c - gem_level + return math.max(c - gem_level, 0) end, - psi = 15, + psi = 10, tactical = { ATTACK = 2 }, range = function(self, t) local r = 5 diff --git a/game/modules/tome/data/timed_effects.lua b/game/modules/tome/data/timed_effects.lua index 58d93a050f5b1976d32fe5f6f8a8c1249956a533..45855ea31a801bdf8453f25c5ea930768e338109 100644 --- a/game/modules/tome/data/timed_effects.lua +++ b/game/modules/tome/data/timed_effects.lua @@ -395,7 +395,7 @@ newEffect{ newEffect{ name = "STUNNED", desc = "Stunned", - 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, + 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, type = "physical", status = "detrimental", parameters = {}, diff --git a/ideas/quests.ods b/ideas/quests.ods index f550cb98cd7336617a730bef972982b7f811c6df..267fd2f43118649e1707a2466a6528a062a536b1 100644 Binary files a/ideas/quests.ods and b/ideas/quests.ods differ diff --git a/ideas/setting.ods b/ideas/setting-eyal.ods similarity index 100% rename from ideas/setting.ods rename to ideas/setting-eyal.ods