diff --git a/game/modules/tome/data/general/npcs/ghoul.lua b/game/modules/tome/data/general/npcs/ghoul.lua index 32bb8b4620ddfd5b275bb0c3fb46c57701127c4f..d449de24ad908554f6a9093ced57ace5bc537324 100644 --- a/game/modules/tome/data/general/npcs/ghoul.lua +++ b/game/modules/tome/data/general/npcs/ghoul.lua @@ -119,3 +119,20 @@ newEntity{ base = "BASE_NPC_GHOUL", [Talents.T_WEAKNESS_DISEASE]={base=3, every=9, max=7}, }, } + +newEntity{ base = "BASE_NPC_GHOUL", define_as = "RISEN_CORPSE", + display = "z", color=colors.GREY, image="npc/undead_ghoul_ghoul.png", + name = "risen corpse", + desc = [[a body raised through dark magic]], + exp_worth = 1, + combat_armor = 5, combat_def = 3, + resolvers.equip{ + {type="weapon", subtype="longsword", autoreq=true}, + }, + resolvers.talents{ + [Talents.T_STUN]={base=3, every=9, max=7}, + [Talents.T_BITE_POISON]={base=3, every=9, max=7}, + [Talents.T_ROTTING_DISEASE]={base=4, every=9, max=7}, + }, +} + diff --git a/game/modules/tome/data/general/npcs/snow-giant.lua b/game/modules/tome/data/general/npcs/snow-giant.lua index 800c8593cf56c1553708d481479e21cc67724ea5..1306343c6c7fc079ec2b2142e60ae90045fbbcb6 100644 --- a/game/modules/tome/data/general/npcs/snow-giant.lua +++ b/game/modules/tome/data/general/npcs/snow-giant.lua @@ -115,3 +115,35 @@ newEntity{ base = "BASE_NPC_SNOW_GIANT", resolvers.drops{chance=100, nb=1, {ego_chance=10} }, } + +newEntity{ base = "BASE_NPC_SNOW_GIANT", + define_as = "BURB_SNOW_GIANT", + name = "Burb the snow giant champion", color=colors.VIOLET, unique=true, + resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/giant_ice_snow_giant_chieftain.png", display_h=2, display_y=-1}}}, + desc = [[A maddened, enraged snow giant that towers over his comrades. You've heard legends mentioning this particular monstrosity; they say that when he's not rampaging around frothing at the mouth, he sits, almost childlike, engraving stories and mysterious patterns on any flat stone surface he can find.]], + level_range = {25, nil}, exp_worth = 10, + autolevel = "warriormage", + rarity = 10, + rank = 3.5, + life_rating = 25, + max_life = resolvers.rngavg(150,170), + combat_armor = 32, combat_def = 30, + on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(25, 20)}, + melee_project = {[DamageType.COLD]=resolvers.mbonus(25, 20)}, + resolvers.talents{ + [Talents.T_KNOCKBACK]={base=4, every=6, max=10}, + [Talents.T_STUN]={base=5, every=6, max=10}, + [Talents.T_THROW_BOULDER]={base=4, every=6, max=10}, + [Talents.T_ICE_SHARDS]={base=4, every=6, max=8}, + [Talents.T_UTTERCOLD]={base=4, every=6, max=8}, + [Talents.T_FREEZE]={base=4, every=6, max=8}, + [Talents.T_ICE_STORM]={base=4, every=6, max=8}, + }, + make_escort = { + {type="giant", subtype="ice", number=3}, + }, + lite = 1, + ai = "tactical", + + resolvers.drops{chance=100, nb=1, {ego_chance=10} }, +} diff --git a/game/modules/tome/data/gfx/shockbolt/npc/humanoid_orc_orc_fighter.png b/game/modules/tome/data/gfx/shockbolt/npc/humanoid_orc_orc_fighter.png new file mode 100644 index 0000000000000000000000000000000000000000..af80efffc08307a5d46ac10cb2cc1761547c6b8b Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/npc/humanoid_orc_orc_fighter.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/npc/humanoid_orc_orc_master_assassin.png b/game/modules/tome/data/gfx/shockbolt/npc/humanoid_orc_orc_master_assassin.png new file mode 100644 index 0000000000000000000000000000000000000000..4006e5762dace7a4485f2d56708fe2c4bd5f876b Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/npc/humanoid_orc_orc_master_assassin.png differ diff --git a/game/modules/tome/data/maps/vaults/horror-chamber.lua b/game/modules/tome/data/maps/vaults/horror-chamber.lua new file mode 100644 index 0000000000000000000000000000000000000000..0b3758f6a62ce77d706f15f3c1668a4434029805 --- /dev/null +++ b/game/modules/tome/data/maps/vaults/horror-chamber.lua @@ -0,0 +1,76 @@ +-- 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 + +-- Horror Chamber + +setStatusAll{no_teleport=true} + +startx = 2 +starty = 1 + +rotates = {"default", "90", "180", "270", "flipx", "flipy"} + +-- tiles +defineTile('.', "OLD_FLOOR") +defineTile('#', "OLD_WALL") +defineTile(' ', "FLOOR") +defineTile('X', "HARDWALL") +defineTile('+', "DOOR") +defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}}) + +-- monsters +defineTile('o', 'FLOOR', nil, {random_filter={subtype='orc', add_levels=10}}) +defineTile('h', 'OLD_FLOOR', nil, {random_filter={subtype='eldritch', add_levels=20}}) +defineTile('c', 'OLD_FLOOR', nil, {random_filter={subtype='temporal', add_levels=20}}) +defineTile('b', 'OLD_FLOOR', nil, {random_filter={name="bloated horror", add_levels=20}}) + +-- loots +defineTile('a', "OLD_FLOOR", {random_filter={type="armor", add_levels=10, tome_mod="vault"}}, nil) +defineTile('w', "OLD_FLOOR", {random_filter={type="weapon", add_levels=10, tome_mod="vault"}}, nil) +defineTile('r', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="vault"}}) +defineTile('t', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="gvault"}}) + +-- monster + loots +defineTile('l', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="vault"}}, {random_filter={subtype='eldritch', add_levels=20}}) +defineTile('H', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={name="headless horror", add_levels=20}}) +defineTile('R', 'OLD_FLOOR', {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={name="radiant horror", add_levels=20}}) + +return { +[[ ]], +[[XX!XXXXXXXXXXXXXXXXX]], +[[Xo oX o oX.a.wXooX]], +[[Xo + o +....+ X]], +[[X o Xo o Xa.wwX X]], +[[X############..####X]], +[[Xhc.#h.l##h##ab#.hrX]], +[[Xr.r..h.#crc#..#.l#X]], +[[Xl#..#..#....bw..##X]], +[[Xl..h...#.####...h.X]], +[[X###..######.r..h##X]], +[[X##..##....c..#####X]], +[[X###.r..#######tltlX]], +[[X##c..####rrhr.r.rcX]], +[[X####.##lth.#..R..tX]], +[[XtHt#..#tt.rl...r.lX]], +[[Xttt##.###b....#...X]], +[[X.####.#####.##b...X]], +[[Xr..#..r.r#...###.lX]], +[[Xr.l..#...c.#..h.r#X]], +[[XXXXXXXXXXXXXXXXXXXX]], +} diff --git a/game/modules/tome/data/maps/vaults/lich-lair.lua b/game/modules/tome/data/maps/vaults/lich-lair.lua new file mode 100644 index 0000000000000000000000000000000000000000..76a5bbbdbbfbdfce4ef48b2f78f5b25b7040f359 --- /dev/null +++ b/game/modules/tome/data/maps/vaults/lich-lair.lua @@ -0,0 +1,56 @@ +-- 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 + +--32 chambers +-- lich liar +setStatusAll{no_teleport=true} + +startx = 9 +starty = 16 + +rotates = {"default", "90", "180", "270", "flipx", "flipy"} + +defineTile('.', "FLOOR") +defineTile('X', "HARDWALL") +defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}}) + +defineTile('a', "FLOOR", nil, {random_filter={name="armoured skeleton warrior", add_levels=10}}) +defineTile('m', "FLOOR", nil, {random_filter={name="skeleton mage", add_levels=10}}) +defineTile('g', "FLOOR", nil, {random_filter={subtype="ghoul", add_levels=10}}) +defineTile('l', "FLOOR", nil, {random_filter={type = "undead", subtype = "lich",}}) +defineTile('$', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}}) + +return { +[[XXXXXXXXXXXXXXXXX]], +[[Xm.ggg..g..ggg.mX]], +[[X.X...........X.X]], +[[X..a.........a..X]], +[[X...XXX.a.XXX...X]], +[[X...X.......X...X]], +[[X...X.a.l.a.X...X]], +[[Xm.aX.......Xa.mX]], +[[X...Xg..a..gX...X]], +[[X...Xg$$$$$gX...X]], +[[X...Xg$$$$$gX...X]], +[[X...XXXXXXXXX...X]], +[[Xm.a.a.a.a.a.a.mX]], +[[X.X...........X.X]], +[[Xm.............mX]], +[[XXXXXXXX!XXXXXXXX]], +} \ No newline at end of file diff --git a/game/modules/tome/data/maps/vaults/orc-hatred.lua b/game/modules/tome/data/maps/vaults/orc-hatred.lua new file mode 100644 index 0000000000000000000000000000000000000000..d182d0d536591aa1dca3eb12c6310c92de350c16 --- /dev/null +++ b/game/modules/tome/data/maps/vaults/orc-hatred.lua @@ -0,0 +1,94 @@ +-- 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 + +--Hedrachi's "If You Don't Hate Orcs Now, You'll Hate Them After This" vault contest submission. + +startx = 0 +starty = 6 + +setStatusAll{no_teleport=true} +rotates = {"default", "90", "180", "270", "flipx", "flipy"} + +defineTile('u', mod.class.Grid.new{ + define_as = "DOOR_OPENING_FLOOR", + type = "floor", subtype = "trapped_floor", + name = "floor", image = "terrain/marble_floor.png", + display = '.', color_r=255, color_g=255, color_b=255, back_color=colors.DARK_GREY, + grow = "WALL", + on_move = function(self, x, y, actor, forced) + if not actor.player then return end + if forced then return end + local g = game.zone:makeEntityByName(game.level, "terrain", "DOOR_OPEN") + game.zone:addEntity(game.level, g, "terrain", x - 4, y - 4) + game.zone:addEntity(game.level, g, "terrain", x + 4, y - 4) + game.zone:addEntity(game.level, g, "terrain", x + 4, y + 4) + game.zone:addEntity(game.level, g, "terrain", x - 4, y + 4) + game.nicer_tiles:updateAround(game.level, x - 4, y - 4) + game.nicer_tiles:updateAround(game.level, x + 4, y - 4) + game.nicer_tiles:updateAround(game.level, x + 4, y + 4) + game.nicer_tiles:updateAround(game.level, x - 4, y + 4) + game.logPlayer(actor, "Something in the floor clicks ominously.") + local g = game.zone:makeEntityByName(game.level, "terrain", "FLOOR") + game.zone:addEntity(game.level, g, "terrain", x, y) + end, +}, +{random_filter={add_levels=10, tome_mod="gvault"}} +) + +defineTile('+', mod.class.Grid.new{ + define_as = "TRIGGERED_DOOR", + name = "sealed door", image = "terrain/sealed_door.png", + type = "door", subtype = 1, + display = '+', color=colors.WHITE, back_color=colors.DARK_UMBER, + notice = true, + always_remember = true, + block_sight = true, + does_block_move = true, +} +) + +defineTile('.', "FLOOR") +defineTile('#', "HARDWALL") +defineTile('X', "DOOR_VAULT") +defineTile('&', "LAVA_FLOOR") + +defineTile('a', "FLOOR", {random_filter={add_levels=10, tome_mod="gvault"}}, {random_filter={add_levels=15, subtype = "orc", name = "orc cryomancer"}}) +defineTile('b', "FLOOR", {random_filter={add_levels=10, tome_mod="gvault"}}, {random_filter={add_levels=10, subtype = "orc", name = "orc pyromancer"}}) +defineTile('o', "FLOOR", nil, {random_filter={add_levels=3, subtype = "orc"}}) +defineTile('p', "FLOOR", {random_filter={add_levels=10, type = "money"}}, {random_filter={add_levels=5, subtype = "orc", name = "orc grand master assassin"}}) +defineTile('q', "FLOOR", nil, {random_filter={add_levels=5, subtype = "orc", name = "orc archer"}}) +defineTile('r', "FLOOR", nil, {random_filter={add_levels=5, subtype = "orc", name = "icy orc wyrmic"}}) +defineTile('s', "FLOOR", nil, {random_filter={add_levels=5, subtype = "orc", name = "fiery orc wyrmic"}}) + + +return { +[[#############]], +[[#a#...q...#b#]], +[[##+.......+##]], +[[#...r.o.s...#]], +[[#...........#]], +[[#....&&&o..p#]], +[[X....&u&o..p#]], +[[#....&&&o..p#]], +[[#...........#]], +[[#...s.o..r..#]], +[[##+.......+##]], +[[#b#...q...#a#]], +[[#############]], +} diff --git a/game/modules/tome/data/maps/vaults/paladin-vs-vampire.lua b/game/modules/tome/data/maps/vaults/paladin-vs-vampire.lua new file mode 100644 index 0000000000000000000000000000000000000000..5cd1bc24673c9eb89b6e745d273b84306ff1487f --- /dev/null +++ b/game/modules/tome/data/maps/vaults/paladin-vs-vampire.lua @@ -0,0 +1,111 @@ +-- 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 + +--paladins vs. vampires! + +local Talents = require("engine.interface.ActorTalents") +setStatusAll{no_teleport=true} + + +defineTile('~', mod.class.Grid.new{ + define_as = "NECRO", + name = "lava floor", image = "terrain/lava_floor.png", + display = '.', color=colors.RED, back_color=colors.DARK_GREY, + shader = "lava", + mindam = resolvers.mbonus(5, 15), + maxdam = resolvers.mbonus(10, 30), + on_stand = function(self, x, y, who) + local DT = engine.DamageType + local dam = DT:get(DT.RETCH).projector(self, x, y, DT.RETCH, rng.range(self.mindam, self.maxdam)) + if not who.undead then game.logPlayer(who, "Dark energies course upwards through the lava.") end + if who.dead and not who.undead then + --add undead + local m = game.zone:makeEntityByName(game.level, "actor", "RISEN_CORPSE") + game.zone:addEntity(game.level, m, "actor", x, y) + end + end, +}) + +defineTile('S', "FLOOR", nil, mod.class.NPC.new{ + type = "humanoid", subtype = "human", + display = "p", color=colors.GOLD, + name = "human sun-paladin", + faction = "sunwall", hard_faction = "sunwall", + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, + desc = [[A Human in shining plate armour.]], + level_range = {10, 50}, exp_worth = 1, + rank = 2, + size_category = 3, + autolevel = "warriormage", + ai = "dumb_talented_simple", ai_state = { talent_in=3, }, + stats = { str=12, dex=8, mag=6, con=10 }, + positive_regen = 10, + max_life = resolvers.rngavg(140,170), + combat_armor = 10, combat_def = 10, + resolvers.equip{ + {type="weapon", subtype="mace", autoreq=true}, + {type="armor", subtype="shield", autoreq=true}, + {type="armor", subtype="massive", autoreq=true}, + }, + resolvers.talents{ + [Talents.T_ARMOUR_TRAINING]=3, + [Talents.T_CHANT_OF_FORTRESS]=3, + [Talents.T_SEARING_LIGHT]=2, + [Talents.T_MARTYRDOM]=2, + [Talents.T_WEAPON_OF_LIGHT]=2, + [Talents.T_FIREBEAM]=2, + [Talents.T_WEAPON_COMBAT]=4, + [Talents.T_HEALING_LIGHT]=2, + }, + on_added = function(self) + self.energy.value = game.energy_to_act self:useTalent(self.T_WEAPON_OF_LIGHT) + self.energy.value = game.energy_to_act self:useTalent(self.T_CHANT_OF_FORTRESS) + end, +} +) + +defineTile('.', "FLOOR") +defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}}) +defineTile('+', "DOOR") +defineTile('X', "HARDWALL") +defineTile('v', "FLOOR", {random_filter={add_levels=5,tome_mod="vault"}}, {random_filter={add_levels=5, type="undead", subtype="vampire", name="vampire"}}) +defineTile('U', "FLOOR", {random_filter={add_levels=10, tome_mod="gvault"}}, {random_filter={add_levels=10, type="undead", subtype="vampire", name="master vampire"}}) +defineTile('V', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, {random_filter={add_levels=15, type="undead", subtype="vampire", name="elder vampire"}}) +defineTile('L', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}}, {random_filter={add_levels=20, type="undead", subtype="vampire", name="vampire lord"}}) +defineTile('W', "FLOOR", {random_filter={add_levels=15, tome_mod="gvault"}}, {random_filter={add_levels=15, type="undead", subtype="wight", name="grave wight"}}) +startx = 0 +starty = 6 + +rotates = {"default", "90", "180", "270", "flipx", "flipy"} + +return { +[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]], +[[X....X......................X]], +[[X....X..~.~..v~..~.V........X]], +[[X....X....~..~.~..~..XXXXX..X]], +[[X....X..~.v.~...~...XXXXXX..X]], +[[X..S.X..~.~~.v~.~..XXXXXXX..X]], +[[X..S.+.~..~..~....LXXXXXXX..X]], +[[!....+.~.~.~.v.~...XXXXXXX..X]], +[[X..S.+..~..~.~.v.~..XXXXXX..X]], +[[X..S.X...~..~..~..~..XXXXX..X]], +[[X....X.~.~.~......~..W......X]], +[[X....X.......~.~..V.........X]], +[[XXXXXXXXXXXXXXXXXXXXXXXXXXXXX]], +} \ No newline at end of file diff --git a/game/modules/tome/data/maps/vaults/rain-of-death.lua b/game/modules/tome/data/maps/vaults/rain-of-death.lua new file mode 100644 index 0000000000000000000000000000000000000000..64c17515be41109338ef5e69fc3ea4157987179c --- /dev/null +++ b/game/modules/tome/data/maps/vaults/rain-of-death.lua @@ -0,0 +1,52 @@ +-- 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 + +-- Rain of Death + +rotates = {"default", "90", "180", "270", "flipx", "flipy"} + +defineTile('.', "FLOOR") +defineTile('X', "HARDWALL") +defineTile('v', "LAVA") +defineTile('!', "DOOR_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}}) + +-- All a are Skeleton Master Archer +defineTile('a', "FLOOR", nil, {random_filter={name="skeleton master archer"}}) + +defineTile('$', "FLOOR", {random_filter={add_levels=20, tome_mod="gvault"}}) +defineTile('*', "FLOOR", {random_filter={add_levels=20, tome_mod="uvault"}}) + +return { +[[XXXXXXX!!XXXXXXX]], +[[X..v.av..v.av.$X]], +[[X..vvvv..vvvv..X]], +[[Xvv..........vvX]], +[[X.v..........v.X]], +[[Xav..........vaX]], +[[Xvv..........vvX]], +[[!......$X......!]], +[[!......X*......!]], +[[Xvv..........vvX]], +[[X.v..........vaX]], +[[Xav..........v.X]], +[[Xvv..........vvX]], +[[X..vvvv..vvvv..X]], +[[X$.va.v..va.v..X]], +[[XXXXXXX!!XXXXXXX]], +} diff --git a/game/modules/tome/data/maps/vaults/snow-giant-camp.lua b/game/modules/tome/data/maps/vaults/snow-giant-camp.lua new file mode 100644 index 0000000000000000000000000000000000000000..5a9bf6becb16edd87a73a8e7b8dac3028ff7457a --- /dev/null +++ b/game/modules/tome/data/maps/vaults/snow-giant-camp.lua @@ -0,0 +1,63 @@ +-- 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 + +-- Snow Giant Camp +setStatusAll{no_teleport=true} +rotates = {"default", "90", "180", "270", "flipx", "flipy"} + +defineTile('.', "FLOOR") +defineTile(',', "ROCKY_GROUND") +defineTile('#', "HARDWALL") +defineTile('X', "MOUNTAIN_WALL") +defineTile('+', "DOOR") +defineTile('!', "DOOR_VAULT") + +defineTile('$', "FLOOR", {random_filter={add_levels=10, tome_mod="vault"}}) +defineTile('?', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}}, {random_filter={add_levels=5, type="giant", subtype="ice"}}) +defineTile('P', "ROCKY_GROUND", nil, {random_filter={name="snow giant"}}) +defineTile('T', "FLOOR", nil, {random_filter={add_levels=5, name="snow giant thunderer"}}) +defineTile('B', "FLOOR", nil, {random_filter={add_levels=5, name="snow giant boulder thrower"}}) +defineTile('C', "FLOOR", nil, {random_filter={add_levels=8, name="snow giant chieftain"}}) +defineTile('M', "FLOOR", nil, {random_filter={add_levels=8, name="snow giant chieftain", random_boss={nb_classes=1, rank=3.5, loot_quantity = 2}}}) + +startx = 12 +starty = 19 + +return { +[[XX###############XXXXXXXX]], +[[X,#...#$$$$$#...#XXXXXXXX]], +[[X,#.....CMC.....#,,XXXXXX]], +[[X,#BB.#.....#.TT#,,,,XXXX]], +[[X,#####..C..#####,,,,,,XX]], +[[X,,,,,###!###,,,,,,,,,,XX]], +[[X,#,,,,,,,,,,,,,,###,,,XX]], +[[X###,,,,,,,,,,,,##?##,,,X]], +[[X#?+,,,,,,,,,P,,,#+#,,,,X]], +[[X###,,#,,,,P,,,,,,,,,,,,X]], +[[X,#,,###,,,,,,P,,,,,#,,,X]], +[[X,,,,#?+,,P,,,,,,,,###,,X]], +[[X,,,,###,,,,P,,,,,,+?#,,X]], +[[X,,,,,#,,,,,,,,,,,,###,,X]], +[[XX,,,,,,,,,,,,,,,,,,#,,XX]], +[[XX,,,,#+#,,,,,,,,,,,,,,XX]], +[[XXX,,##?##,,,,,,,,,,,,XXX]], +[[XXXXXX###,,,,,,,,,,,,XXXX]], +[[XXXXXXXXXX,,,,,,,XXXXXXXX]], +[[XXXXXXXXXXXX,XXXXXXXXXXXX]], +} diff --git a/game/modules/tome/data/rooms/greater_vault.lua b/game/modules/tome/data/rooms/greater_vault.lua index f457c0ca21a708794ee518e12e0e149d71a0780d..918a77f5242030b4081f3d3e4a758b43e1a80a46 100644 --- a/game/modules/tome/data/rooms/greater_vault.lua +++ b/game/modules/tome/data/rooms/greater_vault.lua @@ -21,7 +21,7 @@ local max_w, max_h = 50, 50 local list = { "double-t", "crypt", "treasure1", "diggers", "hillbert_curve", "quiet", "lightning-vault", "water-vault", "32-chambers", "demon-nest-1", "demon-nest-2", "demon-nest-3", "frost-dragon-lair", "greater-money-vault", - "trapped-hexagon", "yin-yang", "zigzag-chambers", + "trapped-hexagon", "yin-yang", "zigzag-chambers", "rain-of-death", "paladin-vs-vampire", "orc-hatred", "lich-lair", } return function(gen, id, lev, old_lev) diff --git a/game/modules/tome/data/zones/daikara/zone.lua b/game/modules/tome/data/zones/daikara/zone.lua index e88a4fa5534e24e05b26b540fb238d2c4ee35c04..cbc991c6ca4f3cd056ede769876560dc01befeea 100644 --- a/game/modules/tome/data/zones/daikara/zone.lua +++ b/game/modules/tome/data/zones/daikara/zone.lua @@ -37,8 +37,9 @@ return { class = "engine.generator.map.Roomer", nb_rooms = 10, edge_entrances = {2,8}, - rooms = {"forest_clearing","rocky_snowy_trees"}, + rooms = {"forest_clearing", "rocky_snowy_trees", "lesser_vault"}, rooms_config = {forest_clearing={pit_chance=5, filters={{}}}}, + lesser_vaults_list = {"snow-giant-camp"}, ['.'] = "ROCKY_GROUND", ['T'] = "ROCKY_SNOWY_TREE", ['#'] = "MOUNTAIN_WALL", diff --git a/game/modules/tome/data/zones/dreadfell/grids.lua b/game/modules/tome/data/zones/dreadfell/grids.lua index f89fdc86cb7e10a990d14318a76f62ca8096150d..12351c3734c4290b06eab8e7232dce6e7874e0ff 100644 --- a/game/modules/tome/data/zones/dreadfell/grids.lua +++ b/game/modules/tome/data/zones/dreadfell/grids.lua @@ -21,6 +21,7 @@ load("/data/general/grids/basic.lua") load("/data/general/grids/water.lua") load("/data/general/grids/forest.lua") load("/data/general/grids/lava.lua") +load("/data/general/grids/mountain.lua") newEntity{ define_as = "LORE_NOTE", diff --git a/game/modules/tome/data/zones/eruan/grids.lua b/game/modules/tome/data/zones/eruan/grids.lua index 88b148b5f6409a93396fe18d6bdd441b7ecf6333..b314495c1b5000b37b78f87b23ed282d5d4bfde4 100644 --- a/game/modules/tome/data/zones/eruan/grids.lua +++ b/game/modules/tome/data/zones/eruan/grids.lua @@ -20,6 +20,7 @@ load("/data/general/grids/basic.lua") load("/data/general/grids/water.lua") load("/data/general/grids/forest.lua") +load("/data/general/grids/lava.lua") load("/data/general/grids/sand.lua") load("/data/general/grids/mountain.lua") diff --git a/game/modules/tome/data/zones/eruan/zone.lua b/game/modules/tome/data/zones/eruan/zone.lua index 3f5d38183b4b5e8114013e319a6616f4bcdb2d73..c84a0b0f9146228512346ad6bdc2c8987f488b71 100644 --- a/game/modules/tome/data/zones/eruan/zone.lua +++ b/game/modules/tome/data/zones/eruan/zone.lua @@ -51,7 +51,7 @@ return { nb_rooms = {0,0,0,0,1}, rooms = {"greater_vault"}, - greater_vaults_list = {"dragon_lair", "lava_island"}, + greater_vaults_list = {"dragon_lair", "lava_island", "bandit-fortress", "horror-chamber"}, lite_room_chance = 100, }, actor = { diff --git a/game/modules/tome/data/zones/gorbat-pride/zone.lua b/game/modules/tome/data/zones/gorbat-pride/zone.lua index 3c76187b52dfabd05f3b09426fef31a4d62fce30..7631f44dc119b40d7b16817e90f2800fe571b3c9 100644 --- a/game/modules/tome/data/zones/gorbat-pride/zone.lua +++ b/game/modules/tome/data/zones/gorbat-pride/zone.lua @@ -54,7 +54,7 @@ return { nb_rooms = {0,0,0,1}, rooms = {"lesser_vault"}, - lesser_vaults_list = {"orc-armoury", "double-t", "dragon_lair", "hostel"}, + lesser_vaults_list = {"orc-armoury", "double-t", "dragon_lair", "hostel", "horror-chamber"}, lite_room_chance = 100, }, }, @@ -69,7 +69,7 @@ return { }, }, post_process = function(level) - for uid, e in pairs(level.entities) do e.faction="orc-pride" end + for uid, e in pairs(level.entities) do e.faction = e.hard_faction or "orc-pride" end end, levels = { diff --git a/game/modules/tome/data/zones/grushnak-pride/zone.lua b/game/modules/tome/data/zones/grushnak-pride/zone.lua index 0ac9cca2628164d59598ae9777682d13cc32d575..ae066cb17a092c560b1128231bc59f0e4b52f13c 100644 --- a/game/modules/tome/data/zones/grushnak-pride/zone.lua +++ b/game/modules/tome/data/zones/grushnak-pride/zone.lua @@ -70,7 +70,7 @@ return { game:placeRandomLoreObject("GARKUL_HISTORY"..(level.level/2)) end - for uid, e in pairs(level.entities) do e.faction="orc-pride" end + for uid, e in pairs(level.entities) do e.faction = e.hard_faction or "orc-pride" end end, levels = { diff --git a/game/modules/tome/data/zones/high-peak/zone.lua b/game/modules/tome/data/zones/high-peak/zone.lua index 5d10b2c878b9e6ec3d4e5390030a11a01087ab9d..4edc27fd54c2dd131640ceed9d341b54bd93166f 100644 --- a/game/modules/tome/data/zones/high-peak/zone.lua +++ b/game/modules/tome/data/zones/high-peak/zone.lua @@ -74,7 +74,7 @@ return { }, post_process = function(level) game.player:grantQuest("high-peak") - for uid, e in pairs(level.entities) do e.faction="sorcerers" e.never_anger = true end + for uid, e in pairs(level.entities) do e.faction = e.hard_faction or "sorcerers" end -- if we failed at charred scar (or did not do it at all) the gate of morning is destroyed and Aeryn turned to the service of the sorcerers if level.level == 15 then diff --git a/game/modules/tome/data/zones/rak-shor-pride/zone.lua b/game/modules/tome/data/zones/rak-shor-pride/zone.lua index 70f009bd24be934a82e93810854938783281f86d..5b2a2df3404b03d7f59328759d233ae34479a1db 100644 --- a/game/modules/tome/data/zones/rak-shor-pride/zone.lua +++ b/game/modules/tome/data/zones/rak-shor-pride/zone.lua @@ -54,7 +54,7 @@ return { nb_rooms = {0,0,0,1}, rooms = {"lesser_vault"}, - lesser_vaults_list = {"orc-armoury", "double-t", "crypt", "hostel"}, + lesser_vaults_list = {"orc-armoury", "double-t", "crypt", "hostel", "horror-chamber"}, lite_room_chance = 100, }, }, @@ -69,7 +69,7 @@ return { }, }, post_process = function(level) - for uid, e in pairs(level.entities) do e.faction="orc-pride" end + for uid, e in pairs(level.entities) do e.faction = e.hard_faction or "orc-pride" end end, levels = { diff --git a/game/modules/tome/data/zones/vor-pride/zone.lua b/game/modules/tome/data/zones/vor-pride/zone.lua index cb8b1d5a4284ddcc852eb6b6cdeff6122863a3d4..88bf066455ded762042c03031d598482490d2c68 100644 --- a/game/modules/tome/data/zones/vor-pride/zone.lua +++ b/game/modules/tome/data/zones/vor-pride/zone.lua @@ -54,7 +54,7 @@ return { nb_rooms = {0,0,0,1}, rooms = {"lesser_vault"}, - lesser_vaults_list = {"orc-armoury", "double-t", "circle", "hostel", "orc-necromancer"}, + lesser_vaults_list = {"orc-armoury", "double-t", "circle", "hostel", "orc-necromancer", "horror-chamber"}, lite_room_chance = 100, }, }, @@ -72,7 +72,7 @@ return { -- Place a lore note on each level game:placeRandomLoreObject("ORC_HISTORY"..level.level) - for uid, e in pairs(level.entities) do e.faction="orc-pride" end + for uid, e in pairs(level.entities) do e.faction = e.hard_faction or "orc-pride" end end, levels = {