diff --git a/game/modules/tome/data/quests/starter-zones.lua b/game/modules/tome/data/quests/starter-zones.lua index 39f7a8324ba68658f5deaf599a37d47bc6ce6f33..719a4bb6de59595df9b89f7271d260550206c5b8 100644 --- a/game/modules/tome/data/quests/starter-zones.lua +++ b/game/modules/tome/data/quests/starter-zones.lua @@ -36,7 +36,11 @@ desc = function(self, who) desc[#desc+1] = "#SLATE#* You must explore the Old Forest and find out what lurks there and what treasures are to be gained!#WHITE#" end if self:isCompleted("maze") then - desc[#desc+1] = "#LIGHT_GREEN#* You have explored the Maze and vanquished the Minotaur.#WHITE#" + if self:isCompleted("maze-horror") then + desc[#desc+1] = "#LIGHT_GREEN#* You have explored the Maze and vanquished the Horned Horror.#WHITE#" + else + desc[#desc+1] = "#LIGHT_GREEN#* You have explored the Maze and vanquished the Minotaur.#WHITE#" + end else desc[#desc+1] = "#SLATE#* You must explore the Maze and find out what lurks there and what treasures are to be gained!#WHITE#" end diff --git a/game/modules/tome/data/zones/maze/npcs.lua b/game/modules/tome/data/zones/maze/npcs.lua index 4708f238936e1a3bd4c3565a3ec7b5ed8b6928e7..ff3f81a9d039ad47cf861515fe7d58d4a433a658 100644 --- a/game/modules/tome/data/zones/maze/npcs.lua +++ b/game/modules/tome/data/zones/maze/npcs.lua @@ -43,6 +43,57 @@ end local Talents = require("engine.interface.ActorTalents") +-- The boss of the maze, no "rarity" field means it will not be randomly generated +newEntity{ define_as = "HORNED_HORROR", + allow_infinite_dungeon = true, + type = "horror", subtype = "corrupted", unique = true, + name = "Horned Horror", + display = "h", color=colors.VIOLET, + resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/giant_minotaur_minotaur_of_the_labyrinth.png", display_h=2, display_y=-1}}}, + desc = [[A fearsome bull-headed monster, he swings a mighty axe as he curses all that defy him.]], + killer_message = "and revived as a mindless horror", + level_range = {12, nil}, exp_worth = 2, + max_life = 250, life_rating = 17, fixed_rating = true, + stats = { str=20, dex=20, cun=20, mag=10, wil=10, con=20 }, + rank = 4, + size_category = 4, + infravision = 10, + move_others=true, + instakill_immune = 1, + blind_immune = 1, + no_breath = 1, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, }, + resolvers.equip{ + {type="armor", subtype="hands", force_drop=true, tome_drops="boss", autoreq=true}, + }, + resolvers.drops{chance=100, nb=5, {tome_drops="boss"} }, + + combat_mindpower = 20, + resolvers.talents{ + [Talents.T_ARMOUR_TRAINING]={base=3, every=9, max=4}, + [Talents.T_UNARMED_MASTERY]={base=2, every=6, max=5}, + [Talents.T_UPPERCUT]={base=2, every=6, max=5}, + [Talents.T_DOUBLE_STRIKE]={base=2, every=6, max=5}, + [Talents.T_SPINNING_BACKHAND]={base=1, every=6, max=5}, + [Talents.T_FLURRY_OF_FISTS]={base=1, every=6, max=5}, + [Talents.T_VITALITY]={base=2, every=6, max=5}, + [Talents.T_TENTACLE_GRAB]={base=1, every=6, max=5}, + }, + + autolevel = "warrior", + ai = "tactical", ai_state = { talent_in=1, ai_move="move_astar", }, + ai_tactic = resolvers.tactic"melee", + resolvers.inscriptions(2, {"invisibility rune", "lightning rune"}), + + on_die = function(self, who) + game.state:activateBackupGuardian("NIMISIL", 2, 40, "Have you hard about the patrol that disappeared in the maze in the west?") + game.player:resolveSource():grantQuest("starter-zones") + game.player:resolveSource():setQuestStatus("starter-zones", engine.Quest.COMPLETED, "maze") + game.player:resolveSource():setQuestStatus("starter-zones", engine.Quest.COMPLETED, "maze-horror") + end, +} + -- The boss of the maze, no "rarity" field means it will not be randomly generated newEntity{ define_as = "MINOTAUR_MAZE", allow_infinite_dungeon = true, diff --git a/game/modules/tome/data/zones/maze/zone.lua b/game/modules/tome/data/zones/maze/zone.lua index fc91b324902666b33305cdb33cadbc9b5789ca16..3b5474f250a2895380ceba32ccf664bc7af9aee9 100644 --- a/game/modules/tome/data/zones/maze/zone.lua +++ b/game/modules/tome/data/zones/maze/zone.lua @@ -82,6 +82,7 @@ return { end) if level.level < 4 then spots[#spots+1] = {x=x,y=y} end + level.default_down = {x=x,y=y} end for _, spot in ipairs(spots) do local x, y = spot.x, spot.y