diff --git a/game/modules/tome/data/general/grids/mountain.lua b/game/modules/tome/data/general/grids/mountain.lua index ea370311c82425f55ca532dc00e44c06a8ea4fc6..37e8cad026d84017b5e556918c997f4c33659d9e 100644 --- a/game/modules/tome/data/general/grids/mountain.lua +++ b/game/modules/tome/data/general/grids/mountain.lua @@ -69,6 +69,21 @@ for i = 1, 30 do })) end +newEntity{ define_as = "CLIFFSIDE", + type = "floor", subtype = "rock", + name = "cliffside", image = "terrain/rocky_ground.png", add_mos = {{image = "terrain/half_wall.png"}}, + display = 'v', color=colors.UMBER, back_color=colors.LIGHT_UMBER, + always_remember = true, + + does_block_move = true, + block_sight = false, + pass_projectile = true, + + can_pass = {pass_wall=1}, + + dig = "ROCKY_GROUND", +} + newEntity{ define_as = "HARDMOUNTAIN_WALL", type = "rockwall", subtype = "rock", diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/the_far_hand.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/the_far_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..f0eb5226cf4cd643dc9906ba37bff1ccc8b93cb4 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/object/artifact/the_far_hand.png differ diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/half_wall.png b/game/modules/tome/data/gfx/shockbolt/terrain/half_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..c20a0f1d690812a807f659cfe56a9da5775c3391 Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/half_wall.png differ diff --git a/game/modules/tome/data/maps/vaults/auto/greater/sleeping-dragons.lua b/game/modules/tome/data/maps/vaults/auto/greater/sleeping-dragons.lua index 093dd1702eb25ea5c404620173097b073864b2f2..6f7ef42f942babee0c351088b7a256e2a1a37dbb 100644 --- a/game/modules/tome/data/maps/vaults/auto/greater/sleeping-dragons.lua +++ b/game/modules/tome/data/maps/vaults/auto/greater/sleeping-dragons.lua @@ -41,6 +41,7 @@ local wyrm_types = { storm={"storm drake", "storm wyrm"}, venom={"venom drake", "venom wyrm"} } + local wyrm_types_names = {"cold", "fire", "storm", "venom"} roomCheck(function(room, zone, level, map) local wyrm_types_name = rng.table(wyrm_types_names) @@ -55,6 +56,7 @@ roomCheck(function(room, zone, level, map) end return true end) + local check_sleep = function(self) if game.level.wyrm_awoken == true then return true @@ -68,6 +70,7 @@ local check_sleep = function(self) end return true end + local aggro_wyrm = function() if game.level.wyrm_awoken == true then return false @@ -82,18 +85,22 @@ local aggro_wyrm = function() game.log("#CRIMSON#The dragons awaken from their slumber detecting their loot being stolen!") return true end + local aggro_wyrm_takehit = function(self, value, src) - aggro_wyrm() + self:aggro_wyrm() return value end + local aggro_wyrm_grid = function(chance) local g = game.zone.grid_list.FLOOR:clone() + g.aggro_wyrm_chance = chance + g.aggro_wyrm = aggro_wyrm g.on_move = function(self, x, y, actor, forced) if not actor.player then return end if forced then return end if game.level.wyrm_awoken then return end - if not rng.percent(chance) then return end - aggro_wyrm() + if not rng.percent(self.aggro_wyrm_chance) then return end + self:aggro_wyrm() end return g end @@ -106,6 +113,7 @@ defineTile('W', "FLOOR", nil, e.on_seen = check_sleep e.on_act = check_sleep e.on_takehit = aggro_wyrm_takehit + e.aggro_wyrm = aggro_wyrm e.sleeping_wyrm = true return e end, @@ -121,6 +129,7 @@ defineTile('D', "FLOOR", nil, e.on_seen = check_sleep e.on_act = check_sleep e.on_takehit = aggro_wyrm_takehit + e.aggro_wyrm = aggro_wyrm e.sleeping_wyrm = true return e end, diff --git a/game/modules/tome/data/maps/vaults/auto/lesser/perilous-cliffs.lua b/game/modules/tome/data/maps/vaults/auto/lesser/perilous-cliffs.lua new file mode 100644 index 0000000000000000000000000000000000000000..c3879c34f347d9a4d7e7a00f3bda46d1f6422d56 --- /dev/null +++ b/game/modules/tome/data/maps/vaults/auto/lesser/perilous-cliffs.lua @@ -0,0 +1,50 @@ +-- ToME - Tales of Maj'Eyal +-- Copyright (C) 2009 - 2019 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 + +specialList("actor", { + "/data/general/npcs/snow-giant.lua", +}) + +specialList("terrain", { + "/data/general/grids/mountain.lua", +}) + +rotates = {"default", "90", "180", "270", "flipx", "flipy"} + +defineTile('#', "HARDMOUNTAIN_WALL") +defineTile('.', "ROCKY_GROUND") +defineTile('v', "CLIFFSIDE") +defineTile('!', "DOOR_VAULT") + +defineTile('$', "ROCKY_GROUND", {random_filter={add_levels=20, type="money"}}) + +defineTile('T', "ROCKY_GROUND", {random_filter={add_levels=5, tome_mod="gvault"}}, {random_filter={add_levels=8, name = "snow giant thunderer"}} ) +defineTile('G', "ROCKY_GROUND", nil, {random_filter={add_levels=5, name = "snow giant boulder thrower"}} ) + +return { + [[###########]], + [[#.........#]], + [[#.vvvvvvv.#]], + [[#.v.....v.#]], + [[#.v.vGT.v.#]], + [[#.v.v$G.v.#]], + [[#.v.vvvvv.#]], + [[#.v.......#]], + [[#!#########]], +} diff --git a/game/modules/tome/data/maps/vaults/greater-crypt.lua b/game/modules/tome/data/maps/vaults/greater-crypt.lua index 3ed0f4a13948f2313423a822d49e243fd9016d47..68d5f626ac6dbeeb4afb4106165c0de9cb666f73 100644 --- a/game/modules/tome/data/maps/vaults/greater-crypt.lua +++ b/game/modules/tome/data/maps/vaults/greater-crypt.lua @@ -194,7 +194,6 @@ defineTile('5', mod.class.Grid.new{ ) startx, starty = 0, 17 return { - [[###############################MMM#]], [[#..+.#..z.S+...#......u....z.,MMMMM]], [[#..#.#.~~~.###.#..V....z.....,MMMM#]], diff --git a/game/modules/tome/data/maps/vaults/snake-pit.lua b/game/modules/tome/data/maps/vaults/snake-pit.lua index 5fc4debb7f4d2479a1d3398ff473d33671bd3873..2b630d07e2f67a365c2c246e4b128a76fa308c5c 100644 --- a/game/modules/tome/data/maps/vaults/snake-pit.lua +++ b/game/modules/tome/data/maps/vaults/snake-pit.lua @@ -18,7 +18,7 @@ -- darkgod@te4.org startx = 3 -starty = 4 +starty = 5 setStatusAll{no_teleport=true, room_map = {can_open=false}} specialList("actor", { @@ -26,6 +26,7 @@ specialList("actor", { "/data/general/npcs/molds.lua", "/data/general/npcs/feline.lua", "/data/general/npcs/ant.lua", + "/data/zones/ritch-tunnels/npcs.lua", "/data/general/npcs/sandworm.lua", "/data/general/npcs/spider.lua", "/data/general/npcs/vermin.lua", @@ -33,17 +34,20 @@ specialList("actor", { }) rotates = {"default", "90", "180", "270", "flipx", "flipy"} +defineTile(',', data.floor or data['.'] or "FLOOR") defineTile('#', "HARDWALL") -defineTile('!', "DOOR_VAULT") +defineTile('w', "WALL") +defineTile('d', "FLOOR", {random_filter={type="tool", subtype="digger", name="iron pickaxe", ego_chance=-1000, ego_chance=-1000}}) local mobs = { "rattlesnake", "green worm mass", - "giant ice ant", + "giant brown ant", "snow cat", "green mold", "giant grey rat", "giant spider", + "ritch flamespitter", "sandworm" } local mob = rng.tableRemove(mobs) @@ -51,9 +55,11 @@ local mob = rng.tableRemove(mobs) defineTile('s', "FLOOR", {random_filter={type="scroll", ego_chance=25}}, {random_filter={name=mob}}) return { -[[#####]], -[[#sss#]], -[[#sss!]], -[[#sss#]], -[[#####]], +[[,,,,,,,,]], +[[,######,]], +[[,#sss##,]], +[[,#ssswd,]], +[[,#sss##,]], +[[,######,]], +[[,,,,,,,,]], } \ No newline at end of file diff --git a/game/modules/tome/data/rooms/greater_vault.lua b/game/modules/tome/data/rooms/greater_vault.lua index 5d85f6b0f6c97b50f6cfb04d555cc5d7926eed34..53deb6487febbfad0a0b09c91c8f323ff1526277 100644 --- a/game/modules/tome/data/rooms/greater_vault.lua +++ b/game/modules/tome/data/rooms/greater_vault.lua @@ -73,6 +73,7 @@ return function(gen, id, lev, old_lev) if vault then vault:generate(lev, old_lev) print("generated greater_vault", vaultid) + if config.settings.cheat then game.log("#GOLD#PLACED GREATER VAULT: %s", vaultid) end end game.level = old_game_level gen.level.map = old_map diff --git a/game/modules/tome/data/rooms/lesser_vault.lua b/game/modules/tome/data/rooms/lesser_vault.lua index ca215cd8625f4991465b852d278fde1269f5f12c..5e396aa0dc59e1db0c003001365184a9b36eb260 100644 --- a/game/modules/tome/data/rooms/lesser_vault.lua +++ b/game/modules/tome/data/rooms/lesser_vault.lua @@ -73,6 +73,7 @@ return function(gen, id, lev, old_lev) if vault then vault:generate(lev, old_lev) print("generated lesser_vault", vaultid) + if config.settings.cheat then game.log("#GOLD#PLACED LESSER VAULT: %s", vaultid) end end game.level = old_game_level gen.level.map = old_map diff --git a/game/modules/tome/data/timed_effects/other.lua b/game/modules/tome/data/timed_effects/other.lua index 75f83032a84ab09145542db957bd27f1d748d2c0..7eb6f85cee6a5647ff7ded95ade7d415222919c7 100644 --- a/game/modules/tome/data/timed_effects/other.lua +++ b/game/modules/tome/data/timed_effects/other.lua @@ -3631,7 +3631,7 @@ newEffect{ newEffect{ name = "DEMI_GODMODE", - desc = "Demigod Mode", --image = "", + desc = "Demigod Mode", image = "effects/darkgod.png", long_desc = function(self, eff) return ("DEMI-GODMODE: Target has 10000 additional life and regenerates 2000 life per turn. It deals +500%% damage, and has full ESP."):format() end, type = "other", subtype = { cheat=true }, @@ -3662,7 +3662,7 @@ newEffect{ newEffect{ name = "GODMODE", - desc = "God Mode", --image = "", + desc = "God Mode", image = "effects/darkgod.png", long_desc = function(self, eff) return ("GODMODE: Target is invulnerable to damage, immune to bad status effects, deals +10000%% damage (100%% penetration), does not need to breathe, and has full ESP."):format() end, type = "other", subtype = { cheat=true }, diff --git a/game/modules/tome/data/zones/daikara/zone.lua b/game/modules/tome/data/zones/daikara/zone.lua index 7a47180b994588b9ef5a1b8ca8c9c2a9b5dc6e66..72bade8af6d6db3f7512b11338ffcf159e7f0fa7 100644 --- a/game/modules/tome/data/zones/daikara/zone.lua +++ b/game/modules/tome/data/zones/daikara/zone.lua @@ -43,7 +43,7 @@ return { edge_entrances = {2,8}, rooms = {"forest_clearing", "rocky_snowy_trees", {"lesser_vault",7}}, rooms_config = {forest_clearing={pit_chance=5, filters={{}}}}, - lesser_vaults_list = {"snow-giant-camp"}, + lesser_vaults_list = {"snow-giant-camp", "perilous-cliffs"}, ['.'] = is_volcano and function() if rng.percent(5 + game.level.level * 6) then return "LAVA_FLOOR" else return "ROCKY_GROUND" end end or "ROCKY_GROUND", ['T'] = "ROCKY_SNOWY_TREE", ['#'] = "MOUNTAIN_WALL",