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

New zone: the lake of Nur

New feature: a player house that can be acquired (well, kind of a house)


git-svn-id: http://svn.net-core.org/repos/t-engine4@2181 51575b47-30f0-44d4-a5cc-537603b46e54
parent 43899033
No related branches found
No related tags found
No related merge requests found
Showing
with 645 additions and 32 deletions
...@@ -774,8 +774,8 @@ function _M:setupCommands() ...@@ -774,8 +774,8 @@ function _M:setupCommands()
-- local m = game.zone:makeEntityByName(game.level, "actor", "TEST") -- local m = game.zone:makeEntityByName(game.level, "actor", "TEST")
-- game.zone:addEntity(game.level, m, "actor", game.player.x, game.player.y+1) -- game.zone:addEntity(game.level, m, "actor", game.player.x, game.player.y+1)
-- self.player:grantQuest("anti-antimagic") -- self.player:grantQuest("anti-antimagic")
game:changeLevel(3,"shadow-crypt") game:changeLevel(1,"shertul-fortress")
game.player:magicMap(50) -- game.player:magicMap(50)
end end
end, end,
} }
...@@ -859,7 +859,7 @@ function _M:setupCommands() ...@@ -859,7 +859,7 @@ function _M:setupCommands()
self.log("You cannot go into the wilds with the following effects: %s", table.concat(stop, ", ")) self.log("You cannot go into the wilds with the following effects: %s", table.concat(stop, ", "))
else else
-- Do not unpause, the player is allowed first move on next level -- Do not unpause, the player is allowed first move on next level
self:changeLevel(e.change_zone and e.change_level or self.level.level + e.change_level, e.change_zone, e.keep_old_lev) self:changeLevel(e.change_zone and e.change_level or self.level.level + e.change_level, e.change_zone, e.keep_old_lev, e.force_down)
end end
else else
self.log("There is no way out of this level here.") self.log("There is no way out of this level here.")
......
...@@ -149,3 +149,7 @@ newAchievement{ ...@@ -149,3 +149,7 @@ newAchievement{
name = "Clone War", id = "SHADOW_CLONE", name = "Clone War", id = "SHADOW_CLONE",
desc = [[Destroyed your own Shade.]], desc = [[Destroyed your own Shade.]],
} }
newAchievement{
name = "Home sweet home", id = "SHERTUL_FORTRESS",
desc = [[Dispatched the Weirdling Beast and taken possession of Yiilkgur, the Sher'Tul Fortress for your own usage.]],
}
...@@ -44,7 +44,7 @@ newEntity{ ...@@ -44,7 +44,7 @@ newEntity{
newEntity{ base = "BASE_NPC_HORROR", newEntity{ base = "BASE_NPC_HORROR",
name = "worm that walks", color=colors.SANDY_BROWN, name = "worm that walks", color=colors.SANDY_BROWN,
desc = [[A maggot-filled robe with a vaguely humanoid shape.]], desc = [[A maggot-filled robe with a vaguely humanoid shape.]],
level_range = {20, nil}, exp_worth = 1, level_range = {15, nil}, exp_worth = 1,
rarity = 5, rarity = 5,
max_life = 120, max_life = 120,
life_rating = 16, life_rating = 16,
...@@ -91,7 +91,7 @@ newEntity{ base = "BASE_NPC_HORROR", ...@@ -91,7 +91,7 @@ newEntity{ base = "BASE_NPC_HORROR",
newEntity{ base = "BASE_NPC_HORROR", newEntity{ base = "BASE_NPC_HORROR",
name = "bloated horror", color=colors.WHITE, name = "bloated horror", color=colors.WHITE,
desc ="A bulbous humanoid form floats here. Its bald, child-like head is disproportionately large compared to its body, and its skin is pock-marked in nasty red sores.", desc ="A bulbous humanoid form floats here. Its bald, child-like head is disproportionately large compared to its body, and its skin is pock-marked in nasty red sores.",
level_range = {27, nil}, exp_worth = 1, level_range = {1, nil}, exp_worth = 1,
rarity = 1, rarity = 1,
rank = 2, rank = 2,
size_category = 4, size_category = 4,
......
...@@ -109,27 +109,3 @@ newEntity{ base = "BASE_NPC_DEMON", ...@@ -109,27 +109,3 @@ newEntity{ base = "BASE_NPC_DEMON",
{type="armor", subtype="heavy", autoreq=true} {type="armor", subtype="heavy", autoreq=true}
}, },
} }
newEntity{ base = "BASE_NPC_DEMON",
name = "wretchling", color=colors.GREEN,
desc = "Acid oozes all over this small demon's skin. Beware, they tend to hunt in packs.",
level_range = {20, nil}, exp_worth = 1,
rarity = 3,
rank = 2,
size_category = 1,
autolevel = "caster",
combat_armor = 1, combat_def = 0,
combat = {damtype=DamageType.ACID},
resists={[DamageType.ACID] = 100},
resolvers.talents{
[Talents.T_RUSH]=6,
[Talents.T_ACID_BLOOD]=3,
[Talents.T_CORROSIVE_VAPOUR]=3,
},
make_escort = {
{type="demon", subtype="minor", name="wretchling", number=3, no_subescort=true},
},
}
-- ToME - Tales of Maj'Eyal
-- 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
startx = 28
starty = 0
stopx = 29
stopy = 45
-- defineTile section
defineTile("#", "WATER_WALL")
defineTile("~", "WATER_FLOOR")
defineTile("*", "WATER_DOOR")
defineTile("<", "OLD_FOREST")
defineTile("-", "GRASS")
defineTile(">", "DOWN")
defineTile(".", "SAND")
defineTile("T", {"TREE","TREE2","TREE3","TREE4","TREE5","TREE6","TREE7","TREE8","TREE9","TREE10","TREE11","TREE12","TREE13","TREE14","TREE15","TREE16","TREE17","TREE18","TREE19","TREE20"})
-- addSpot section
-- addZone section
-- ASCII map section
return [[
TTTTTTTTTTTTTTTTTTTTTTTTTTTT<TTTTTTTTTTTTTTTTTTTTT
TTTTTTTTTTTTTTTTTTTTTTTTTT---TTTTTTTTTTTTTTTTTTTTT
TTTTTTTTTTTTTTTT......TTTT-TTTTTTTTTTTTTTTTTTTTTTT
TTTTTTTTTTT..T..T....TT.......TTTTTTTTTTTTTTTTTTTT
......TT.......TT..........T........TTTTTTTTTTTTTT
..............T....TT......TTTT.......TTTTTTTTTTTT
..TT~~~~.T....TT..TT.........................TT...
.T~~~~~~~T~..................TT.....TT.....T...T..
~~~~~~~~~~~~~~................~..........T......TT
~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~.......TT......
~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.............
~~~..T..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~............
~~~.TTT.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......TT.
~~~.TT..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~........
~~~~TT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~####~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#~~~~~~~~
~~~~~~~~~~~~~~~~#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~###~~~~~~~~~~~~~~~~~~~~~~~~~~T~~~~
~~~~~~~~~~~~~~~~##~~~~~~~~~~~~~~~~~~~~~~~~~~T~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T.~~~~~~~~~~~#~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T~~~~~~~~~~~~#~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~~
~~~~~~~~~~~~~~~~~~~~########~~~~~~~~~~~~~#~~~~~~~~
~~~~~~~~~~~~~~~~~~###~~~~~~###~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~##~~~~~~~~~~#~~~~~~~~~~~~~~~~~~~~
~~~T~~~~~~~~~~~~##~~~~~~~~~~~###~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~#~~~~~~~~~~~~~~#~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~##~~~~~~~~~~~~>~##~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~##~~~~~~~~~~~~~~##~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~#~~#########~~##~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~##*#~~~~~~~####~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~]]
\ No newline at end of file
-- ToME - Tales of Maj'Eyal
-- 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
startx = 1
starty = 15
stopx = 1
stopy = 15
-- defineTile section
defineTile("#", "OLD_WALL")
defineTile("h", "OLD_FLOOR", nil, "WEIRDLING_BEAST")
defineTile("*", "TELEPORT_OUT")
defineTile("+", "SEALED_DOOR")
defineTile("<", "LAKE_NUR")
defineTile(".", "OLD_FLOOR")
-- addSpot section
addSpot({11, 15}, "door", "weirdling")
addSpot({18, 17}, "portal", "back")
-- addZone section
addZone({10, 0, 29, 29}, "no-teleport")
-- ASCII map section
return [[
##############################
#############.....######.....#
#############.....######.....#
#############.....#######...##
#############.....#######.#.##
#############.....#######.#.##
###############+#########.#.##
#############.....#######...##
#############.....#######...##
#############.....#######.#.##
########..###.....#######.#.##
######....#####+#########...##
#####.....##.......#######+###
####..##..##.......#...#.....#
#.........##.......#...#.....#
#<.......h.+.......+...+.....#
####..##..##.......#...#.....#
#####.....##......*#######+###
######....#####+#########...##
########..##.......######.#.##
############.......######.#.##
############...#...######...##
############.......######...##
############.......######.#.##
###############+#########.#.##
#############.....#######.#.##
#############.....#######...##
#############.....######.....#
#############.....######.....#
##############################]]
\ No newline at end of file
...@@ -167,5 +167,5 @@ newTalent{ ...@@ -167,5 +167,5 @@ newTalent{
return ([[A star falls into area of radius %d, stunning all for 4 turns and doing %0.2f darkness damage. return ([[A star falls into area of radius %d, stunning all for 4 turns and doing %0.2f darkness damage.
The damage will increase with the Magic stat.]]): The damage will increase with the Magic stat.]]):
format(radius, damDesc(self, DamageType.DARKNESS, damage)) format(radius, damDesc(self, DamageType.DARKNESS, damage))
end, end,
} }
-- ToME - Tales of Maj'Eyal
-- 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
load("/data/general/grids/basic.lua")
load("/data/general/grids/forest.lua")
load("/data/general/grids/water.lua")
load("/data/general/grids/sand.lua")
newEntity{
define_as = "OLD_FOREST",
name = "way to the old forest",
display = '<', color_r=255, color_g=255, color_b=0,
notice = true,
always_remember = true,
change_level = 7, change_zone = "old-forest", force_down = true,
}
newEntity{
define_as = "SHERTUL_FORTRESS",
name = "entrance to the Sher'Tul ruins",
display = '>', color=colors.PURPLE,
notice = true,
always_remember = true,
change_level = 1, change_zone = "shertul-fortress",
}
-- ToME - Tales of Maj'Eyal
-- 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
load("/data/general/npcs/aquatic_critter.lua", function(e) if e.rarity then e.water_rarity, e.rarity = e.rarity, nil end end)
load("/data/general/npcs/aquatic_demon.lua", function(e) if e.rarity then e.water_rarity, e.rarity = e.rarity, nil end end)
load("/data/general/npcs/horror.lua", rarity(0))
load("/data/general/npcs/snake.lua", rarity(3))
load("/data/general/npcs/plant.lua", rarity(3))
local Talents = require("engine.interface.ActorTalents")
-- ToME - Tales of Maj'Eyal
-- 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"
local Stats = require "engine.interface.ActorStats"
local DamageType = require "engine.DamageType"
load("/data/general/objects/objects.lua")
-- ToME - Tales of Maj'Eyal
-- 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
load("/data/general/traps/water.lua")
-- ToME - Tales of Maj'Eyal
-- 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
return {
name = "Lake of Nur",
level_range = {15, 25},
level_scheme = "player",
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 = 50, height = 50,
-- all_remembered = true,
-- all_lited = true,
persistant = "zone",
color_shown = {0.5, 0.5, 0.5, 1},
color_obscure = {0.5*0.6, 0.5*0.6, 0.5*0.6, 1},
ambiant_music = "Woods of Eremae.ogg",
generator = {
map = {
class = "engine.generator.map.Roomer",
nb_rooms = 10,
rooms = {"random_room"},
lite_room_chance = 0,
['.'] = "WATER_FLOOR",
['#'] = "WATER_WALL",
up = "UP",
down = "DOWN",
door = "WATER_DOOR",
},
actor = {
class = "engine.generator.actor.Random",
nb_npc = {20, 25},
},
object = {
class = "engine.generator.object.Random",
nb_object = {6, 9},
},
trap = {
class = "engine.generator.trap.Random",
nb_trap = {6, 9},
},
},
levels =
{
[1] = {
all_lited = true,
generator = {
map = {
class = "engine.generator.map.Static",
map = "zones/lake-nur",
},
actor = {
nb_npc = {0, 0},
},
object = {
nb_object = {0, 0},
},
trap = {
nb_trap = {0, 0},
},
},
},
[2] = {
generator = {
actor = {
filters = {{special_rarity="water_rarity"}},
},
},
},
[3] = {
generator = {
map = {
['.'] = "FLOOR",
['#'] = "WALL",
up = "UP",
door = "DOOR",
down = "SHERTUL_FORTRESS",
force_last_stair = true,
},
},
},
},
post_process = function(level)
if level.level > 1 then return end
local Map = require "engine.Map"
level.foreground_particle = require("engine.Particles").new("raindrops", 1, {width=Map.viewport.width, height=Map.viewport.height})
end,
foreground = function(level, x, y, nb_keyframes)
if level.level > 1 then return end
local Map = require "engine.Map"
for i = 1, nb_keyframes do
level.foreground_particle:update()
if i == 1 then level.foreground_particle.ps:toScreen(x, y, true, 1) end
level.foreground_particle.ps:update()
end
end,
on_enter = function(lev, old_lev, newzone)
local Dialog = require("engine.ui.Dialog")
if lev == 2 and not game.level.shown_warning then
Dialog:simplePopup("Lake of Nur", "You descend into the submerged ruins. The walls look extremely ancient, yet you feel power within this place.")
game.level.shown_warning = true
elseif lev == 3 and not game.level.shown_warning then
Dialog:simplePopup("Lake of Nur", "As you descend to the next level you traverse a kind of magical barrier keeping the water away. You hear terrible screams.")
game.level.shown_warning = true
end
end,
}
...@@ -20,3 +20,12 @@ ...@@ -20,3 +20,12 @@
load("/data/general/grids/basic.lua") load("/data/general/grids/basic.lua")
load("/data/general/grids/forest.lua") load("/data/general/grids/forest.lua")
load("/data/general/grids/water.lua") load("/data/general/grids/water.lua")
newEntity{
define_as = "LAKE_NUR",
name = "way to the lake of Nur",
display = '>', color_r=255, color_g=255, color_b=0,
notice = true,
always_remember = true,
change_level = 1, change_zone = "lake-nur",
}
...@@ -35,7 +35,7 @@ return { ...@@ -35,7 +35,7 @@ return {
map = { map = {
class = "engine.generator.map.Roomer", class = "engine.generator.map.Roomer",
nb_rooms = 10, nb_rooms = 10,
edge_entrances = {6,4}, edge_entrances = {4,6},
rooms = {"forest_clearing", {"lesser_vault",8}}, rooms = {"forest_clearing", {"lesser_vault",8}},
rooms_config = {forest_clearing={pit_chance=5, filters={{type="insect", subtype="ant"}, {type="insect"}, {type="animal", subtype="snake"}, {type="animal", subtype="canine"}}}}, rooms_config = {forest_clearing={pit_chance=5, filters={{type="insect", subtype="ant"}, {type="insect"}, {type="animal", subtype="snake"}, {type="animal", subtype="canine"}}}},
lesser_vaults_list = {"honey_glade", "troll-hideout", "mage-hideout", "thief-hideout", "plantlife", "mold-path"}, lesser_vaults_list = {"honey_glade", "troll-hideout", "mage-hideout", "thief-hideout", "plantlife", "mold-path"},
...@@ -68,6 +68,13 @@ return { ...@@ -68,6 +68,13 @@ return {
up = "UP_WILDERNESS", up = "UP_WILDERNESS",
}, }, }, },
}, },
[7] = {
generator = { map = {
edge_entrances = {4,2},
down = "LAKE_NUR",
force_last_stair = true,
}, },
},
}, },
post_process = function(level) post_process = function(level)
......
-- ToME - Tales of Maj'Eyal
-- 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
load("/data/general/grids/basic.lua")
newEntity{
define_as = "LAKE_NUR",
name = "stair back to the lake of Nur",
display = '<', color_r=255, color_g=255, color_b=0,
notice = true,
always_remember = true,
change_level = 3, change_zone = "lake-nur", force_down = true,
}
newEntity{
define_as = "SEALED_DOOR",
name = "sealed door", image = "terrain/sealed_door.png",
display = '+', color=colors.WHITE, back_color=colors.DARK_UMBER,
notice = true,
always_remember = true,
block_sight = true,
does_block_move = true,
}
-- ToME - Tales of Maj'Eyal
-- 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
load("/data/general/npcs/horror.lua")
local Talents = require("engine.interface.ActorTalents")
newEntity{ base = "BASE_NPC_HORROR", define_as="WEIRDLING_BEAST",
name = "Weirdling Beast", color=colors.VIOLET,
desc = "A roughtly humanoid creature, with tentacles-like appendices in the place of arms and legs. You gasp in horror as you notice it has no head. Putrid warts form quickly on its skin and explode as quickly.",
level_range = {19, nil}, exp_worth = 3,
rank = 3.5,
autolevel = "warriormage",
max_life = 300, life_rating = 16,
combat_armor = 10, combat_def = 0,
ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 },
resists = {[DamageType.ARCANE] = -10, [DamageType.BLIGHT] = 10, [DamageType.PHYSICAL] = 10},
disease_immune = 1,
poison_immune = 0.5,
blind_immune = 1,
fear_immune = 1,
see_invisible = 100,
vim_regen = 20,
negative_regen = 15,
resolvers.equip{
{type="weapon", subtype="staff", autoreq=true, ego_chance=100},
{type="armor", subtype="light", autoreq=true, ego_chance=100}
},
resolvers.talents{
[Talents.T_ACID_BLOOD]=4,
[Talents.T_BONE_GRAB]=4,
[Talents.T_BONE_SHIELD]=3,
[Talents.T_MIND_SEAR]=4,
[Talents.T_TELEKINETIC_BLAST]=4,
[Talents.T_GLOOM]=5,
[Talents.T_SOUL_ROT]=3,
[Talents.T_CORRUPTED_NEGATION]=4,
[Talents.T_TIME_PRISON]=1,
[Talents.T_STARFALL]=3,
[Talents.T_MANATHRUST]=4,
[Talents.T_FREEZE]=2,
},
max_inscriptions = 5,
resolvers.inscription("INFUSION:_HEALING", {cooldown=6, dur=5, heal=400}),
resolvers.inscription("INFUSION:_REGENERATION", {cooldown=10, dur=5, heal=400}),
resolvers.inscription("INFUSION:_WILD", {cooldown=8, what={poison=true}, dur=4, power=45}),
resolvers.inscription("RUNE:_SHIELDING", {cooldown=10, dur=5, power=500}),
resolvers.inscription("RUNE:_SPEED", {cooldown=10, dur=5, power=500}),
resolvers.sustains_at_birth(),
on_die = function()
local spot = game.level:pickSpot{type="door", subtype="weirdling"}
if spot then
local g = game.zone:makeEntityByName(game.level, "terrain", "OLD_FLOOR")
game.zone:addEntity(game.level, g, "terrain", spot.x, spot.y)
game.log("#LIGHT_RED#As the Weirdling beast falls it shrieks one last time and the door behind it shatters and exlpodes, revealing the room behind it.")
end
end,
}
-- ToME - Tales of Maj'Eyal
-- 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
load("/data/general/objects/objects.lua")
newEntity{ base = "BASE_LORE",
define_as = "LINANIIL_LECTURE",
subtype = "lecture on humility", unique=true, no_unique_lore=true, not_in_stores=false,
name = "Lecture on Humility by Archmage Linaniil", lore="angolwen-linaniil-lecture",
desc = [[Lecture on Humility by Archmage Linaniil. A tale of the first ages and the Spellblaze.]],
rarity = false,
encumberance = 0,
cost = 2,
}
-- ToME - Tales of Maj'Eyal
-- 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
return {
name = "Yiilkgur, the Sher'Tul Fortress",
actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end,
level_range = {18, 25},
max_level = 1,
width = 30, height = 30,
persistant = "zone",
-- all_remembered = true,
all_lited = true,
persistant = "zone",
ambiant_music = "Dreaming of Flying.ogg",
no_level_connectivity = true,
no_worldport = true,
generator = {
map = {
class = "engine.generator.map.Static",
map = "zones/shertul-fortress",
},
actor = {
class = "engine.generator.actor.Random",
nb_npc = {0, 0},
},
object = {
class = "engine.generator.object.Random",
nb_object = {0, 0},
},
},
post_process = function(level)
-- Setup no teleport
for _, z in ipairs(level.custom_zones) do
if z.type == "no-teleport" then
for x = z.x1, z.x2 do for y = z.y1, z.y2 do
game.level.map.attrs(x, y, "no_teleport", true)
end end
end
end
end,
on_enter = function(lev, old_lev, zone)
-- Update the stairs
local spot = game.level:pickSpot{type="portal", subtype="back"}
if spot then game.level.map(spot.x, spot.y, engine.Map.TERRAIN).change_zone = game.player.last_wilderness end
local Dialog = require("engine.ui.Dialog")
if not game.level.shown_warning then
Dialog:simplePopup("Yiilkgur", "This level seems to be removed from the rest of the ruins. The air is fresh and the level is lighted. You hear the distant crackling of magical energies.")
game.level.shown_warning = true
end
end,
}
No preview for this file type
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