Skip to content
Snippets Groups Projects
Commit b5a94ce5 authored by dg's avatar dg
Browse files

Ancient Elven Ruins

Ringil & the Greater Mummy Lord in the ancient elven ruins
special mummy and mummy items


git-svn-id: http://svn.net-core.org/repos/t-engine4@560 51575b47-30f0-44d4-a5cc-537603b46e54
parent dfe948ba
No related branches found
No related tags found
No related merge requests found
Showing
with 394 additions and 45 deletions
......@@ -56,6 +56,7 @@ setDefaultProjector(function(src, x, y, type, dam)
end
return dam
end
return 0
end)
local function tryDestroy(who, inven, destroy_prop, proof_prop, msg)
......
......@@ -81,3 +81,19 @@ newEntity{
always_remember = true,
door_closed = "DOOR",
}
newEntity{
define_as = "OLD_FLOOR",
name = "floor", image = "terrain/maze_floor.png",
display = '.', color_r=255, color_g=255, color_b=255,
}
newEntity{
define_as = "OLD_WALL",
name = "wall", image = "terrain/granite_wall_lichen.png",
display = '#', color_r=255, color_g=255, color_b=255,
always_remember = true,
does_block_move = true,
block_sight = true,
air_level = -20,
}
-- ToME - Tales of Middle-Earth
-- Copyright (C) 2009, 2010 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_MUMMY",
type = "undead", subtype = "mummy",
display = "Z", color=colors.WHITE,
combat = { dam=1, atk=1, apr=1 },
body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
autolevel = "warrior",
ai = "dumb_talented_simple", ai_state = { talent_in=2, },
energy = { mod=0.8 },
stats = { str=14, dex=12, mag=10, con=12 },
rank = 2,
size_category = 3,
resolvers.tmasteries{ ["technique/2hweapon"]=1, },
blind_immune = 1,
see_invisible = 4,
undead = 1,
}
-- ToME - Tales of Middle-Earth
-- Copyright (C) 2009, 2010 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
-- Mummy wrappings, not included in global
newEntity{
define_as = "BASE_MUMMY_WRAPPING",
slot = "BODY",
type = "armor", subtype="mummy",
add_name = " (#ARMOR#)",
display = "[", color=colors.ANTIQUE_WHITE,
encumber = 6,
rarity = 5,
desc = [[Decaying mummy wrappings.]],
egos = "/data/general/objects/egos/armor.lua", egos_chance = resolvers.mbonus(40, 5),
wielder = {
resists={[DamageType.FIRE] = -50},
}
}
newEntity{ base = "BASE_MUMMY_WRAPPING",
name = "mummy wrappings",
level_range = {10, 40},
require = { stat = { dex=15 }, },
cost = 1,
wielder = {
combat_def = 5,
combat_armor = 2,
fatigue = 2,
},
}
game/modules/tome/data/gfx/terrain/water_floor.png

154 B

game/modules/tome/data/gfx/terrain/water_wall.png

893 B

-- ToME - Tales of Middle-Earth
-- Copyright (C) 2009, 2010 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
-- This file defines the generic matchers and such for 5x5 tiles, but no tiles
base = {w=3, h=3}
is_opening = function(c)
return (c == '.' or c == "'" or c == '+') and true or false
end
matcher = function(t1, t2)
local ok = false
if t1 == '.' or t2 == '.' or t1 == "'" or t2 == "'" then ok = true end
if t1 == t2 then return true, ok end
if t1 == '.' and t2 == "'" then return true, ok end
if t2 == '.' and t1 == "'" then return true, ok end
return false
end
-- Remove some silly doors
filler = function(c, x, y, room_map, data)
if c ~= "'" then return c end
local nb = 0
if room_map[x-1] and room_map[x-1][y] and (room_map[x-1][y].symbol == '.' or room_map[x-1][y].symbol == '+' or room_map[x-1][y].symbol == "'") then nb = nb + 1 end
if room_map[x+1] and room_map[x+1][y] and (room_map[x+1][y].symbol == '.' or room_map[x+1][y].symbol == '+' or room_map[x+1][y].symbol == "'") then nb = nb + 1 end
if room_map[x] and room_map[x][y-1] and (room_map[x][y-1].symbol == '.' or room_map[x][y-1].symbol == '+' or room_map[x][y-1].symbol == "'") then nb = nb + 1 end
if room_map[x] and room_map[x][y+1] and (room_map[x][y+1].symbol == '.' or room_map[x][y+1].symbol == '+' or room_map[x][y+1].symbol == "'") then nb = nb + 1 end
if nb == 2 and rng.percent(data.door_chance or 25) then return '+'
elseif nb < 2 then return '#'
else return '.'
end
end
tiles = {}
-- ToME - Tales of Middle-Earth
-- Copyright (C) 2009, 2010 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
tiles =
{
{type="tunnel",
[[#.#]],
[[#.#]],
[[#.#]],
},
{type="tunnel",
[[###]],
[[...]],
[[###]],
},
{type="tunnel",
[[#.#]],
[[..#]],
[[#.#]],
},
{type="tunnel",
[[#.#]],
[[#..]],
[[#.#]],
},
{type="tunnel",
[[###]],
[[...]],
[[#.#]],
},
{type="tunnel",
[[#.#]],
[[...]],
[[###]],
},
{type="tunnel",
[[#.#]],
[[...]],
[[#.#]],
},
}
-- ToME - Tales of Middle-Earth
-- Copyright (C) 2009, 2010 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
tiles =
{
{type="tunnel",
[[#.#]],
[[#..]],
[[###]],
},
{type="tunnel",
[[###]],
[[..#]],
[[#.#]],
},
{type="tunnel",
[[#.#]],
[[..#]],
[[###]],
},
{type="tunnel",
[[###]],
[[#..]],
[[#.#]],
},
}
......@@ -18,3 +18,11 @@
-- darkgod@te4.org
load("/data/general/grids/basic.lua")
newEntity{
define_as = "QUICK_EXIT",
name = "teleporting circle to the surface", image = "terrain/maze_teleport.png",
display = '>', color_r=255, color_g=0, color_b=255,
notice = true, show_tooltip = true,
change_level = 1, change_zone = "wilderness",
}
......@@ -20,7 +20,73 @@
load("/data/general/npcs/rodent.lua")
load("/data/general/npcs/vermin.lua")
load("/data/general/npcs/molds.lua")
load("/data/general/npcs/mummy.lua")
load("/data/general/npcs/skeleton.lua")
load("/data/general/npcs/snake.lua")
local Talents = require("engine.interface.ActorTalents")
-- The boss , no "rarity" field means it will not be randomly generated
newEntity{ define_as = "GREATER_MUMMY_LORD",
type = "undead", subtype = "mummy", unique = true,
name = "Greater Mummy Lord",
display = "Z", color=colors.VIOLET,
desc = [[The wrappings of this mummy radiates with so much power it feels like wind is blowing from it.]],
level_range = {20, 35}, exp_worth = 2,
max_life = 250, life_rating = 21, fixed_rating = true,
max_stamina = 200,
max_mana = 200,
stats = { str=25, dex=10, cun=8, mag=35, wil=20, con=20 },
rank = 4,
size_category = 2,
body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, },
equipment = resolvers.equip{
{type="weapon", subtype="longsword", defined="LONGSWORD_RINGIL", autoreq=true},
{type="armor", subtype="shield", ego_chance=100, autoreq=true},
{type="armor", subtype="mummy", ego_chance=100, autoreq=true},
},
drops = resolvers.drops{chance=100, nb=4, {ego_chance=100} },
resolvers.talents{
[Talents.T_SHIELD_PUMMEL]=3,
[Talents.T_ASSAULT]=3,
[Talents.T_OVERPOWER]=3,
[Talents.T_BLINDING_SPEED]=3,
[Talents.T_SWORD_MASTERY]=4,
[Talents.T_WEAPON_COMBAT]=5,
[Talents.T_FREEZE]=3,
[Talents.T_ICE_STORM]=3,
[Talents.T_INVISIBILITY]=3,
[Talents.T_ROTTING_DISEASE]=3,
},
blind_immune = 1,
see_invisible = 4,
undead = 1,
autolevel = "warriormage",
ai = "dumb_talented_simple", ai_state = { talent_in=1, },
}
-- Some mummy minions
newEntity{ base = "BASE_NPC_MUMMY",
name = "ancient elven mummy", color=colors.ANTIQUE_WHITE,
desc = [[An animated corpse in mummy wrappings.]],
level_range = {7, 50}, exp_worth = 1,
rarity = 2,
max_life = resolvers.rngavg(120,140),
ai_state = { talent_in=4, },
resolvers.equip{
{type="weapon", subtype="greatsword", autoreq=true},
{type="armor", subtype="mummy", ego_chance=100, autoreq=true},
},
resolvers.talents{
[Talents.T_STUNNING_BLOW]=2,
[Talents.T_CRUSH]=3,
[Talents.T_MANATHRUST]=3,
},
drops = resolvers.drops{chance=70, nb=1, {type="money"}, {} },
}
......@@ -18,23 +18,27 @@
-- darkgod@te4.org
load("/data/general/objects/objects.lua")
load("/data/general/objects/mummy-wrappings.lua")
-- Artifact, droped (and used!) by the Shade of Angmar
newEntity{ base = "BASE_STAFF",
define_as = "STAFF_ANGMAR", rarity=false,
name = "Angmar's Fall", unique=true,
desc = [[Made from the bones of of many creatures this staff glows with power. You can feel its evilness as you touch it.]],
require = { stat = { mag=25 }, },
cost = 5,
newEntity{ base = "BASE_LONGSWORD",
define_as = "LONGSWORD_RINGIL", rarity=false, unided_name = "glittering longsword",
name = "Ringil, the glittering sword of Fingolfin", unique=true,
desc = [[The sword of Fingolfin, said to have glittered like ice. With it he wounded Morgoth in single combat after the Dagor Bragollach.]],
require = { stat = { str=25 }, },
cost = 2000,
combat = {
dam = 10,
apr = 0,
physcrit = 1.5,
dammod = {mag=1.1},
dam = 38,
apr = 10,
physcrit = 10,
dammod = {str=1},
damrange = 1.4,
},
wielder = {
lite = 1,
see_invisible = 2,
combat_spellpower = 15,
combat_spellcrit = 8,
resists={[DamageType.COLD] = 25},
inc_damage = { [DamageType.COLD] = 20 },
melee_project={[DamageType.ICE] = 15},
},
}
......@@ -19,23 +19,22 @@
return {
name = "Elven Ruins",
level_range = {1, 5},
level_range = {10, 28},
level_scheme = "player",
max_level = 5,
max_level = 3,
decay = {300, 800},
actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end,
width = 150, height = 150,
width = 30, height = 30,
-- all_remembered = true,
-- all_lited = true,
persistant = "zone",
generator = {
map = {
class = "engine.generator.map.TileSet",
tileset = {"5x5/base", "5x5/tunnel", "5x5/windy_tunnel", "5x5/basic_rooms"},
tunnel_chance = 30,
center_room = 1,
['.'] = "FLOOR",
['#'] = "WALL",
tileset = {"3x3/base", "3x3/tunnel", "3x3/windy_tunnel"},
tunnel_chance = 100,
['.'] = "OLD_FLOOR",
['#'] = {"OLD_WALL","WALL","WALL","WALL","WALL"},
['+'] = "DOOR",
["'"] = "DOOR",
up = "UP",
......@@ -43,16 +42,16 @@ return {
},
actor = {
class = "engine.generator.actor.Random",
nb_npc = {20*5, 20*5},
-- guardian = "SHADE_OF_ANGMAR", -- The gardian is set in the static map
nb_npc = {20, 20},
guardian = "GREATER_MUMMY_LORD",
},
object = {
class = "engine.generator.object.Random",
nb_object = {6*5, 9*5},
nb_object = {6, 9},
},
trap = {
class = "engine.generator.trap.Random",
nb_trap = {6*8, 9*8},
nb_trap = {6, 9},
},
},
levels =
......@@ -62,5 +61,25 @@ return {
up = "UP_WILDERNESS",
}, },
},
[3] = {
width = 80, height = 80,
generator = {
map = {
tileset = {"5x5/base", "5x5/tunnel", "5x5/windy_tunnel", "5x5/basic_rooms"},
tunnel_chance = 30,
force_last_stair = true,
down = "QUICK_EXIT",
},
actor = {
nb_npc = {20*5, 20*5},
},
object = {
nb_object = {6*5, 9*5},
},
trap = {
nb_trap = {6*8, 9*8},
},
},
},
},
}
......@@ -32,8 +32,8 @@ return {
map = {
-- class = "engine.generator.map.Rooms",
class = "engine.generator.map.TileSet",
tileset = {"5x5/base", "5x5/tunnel", "5x5/windy_tunnel"},
tunnel_chance = 60,
tileset = {"3x3/base", "3x3/tunnel", "3x3/windy_tunnel"},
tunnel_chance = 100,
center_room = 1,
['.'] = "FLOOR",
['#'] = "WALL",
......
......@@ -23,21 +23,6 @@ newEntity{
define_as = "QUICK_EXIT",
name = "teleporting circle to the surface", image = "terrain/maze_teleport.png",
display = '>', color_r=255, color_g=0, color_b=255,
notice = true, show_tooltip = true,
change_level = 1, change_zone = "wilderness",
}
newEntity{
define_as = "MAZE_FLOOR",
name = "floor", image = "terrain/maze_floor.png",
display = '.', color_r=255, color_g=255, color_b=255,
}
newEntity{
define_as = "MAZE_WALL",
name = "wall", image = "terrain/granite_wall_lichen.png",
display = '#', color_r=255, color_g=255, color_b=255,
always_remember = true,
does_block_move = true,
block_sight = true,
air_level = -20,
}
......@@ -34,8 +34,8 @@ return {
class = "engine.generator.map.Maze",
up = "UP",
down = "DOWN",
wall = "MAZE_WALL",
floor = "MAZE_FLOOR",
wall = "OLD_WALL",
floor = "OLD_FLOOR",
},
actor = {
class = "engine.generator.actor.Random",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment