diff --git a/game/modules/tome/data/chats/gates-of-morning-main.lua b/game/modules/tome/data/chats/gates-of-morning-main.lua index ff565ecf12ec6708cfcd4f7b4425102b6ddfa547..b02010cc54b2994dead41d9dbe2ca209706c5a5f 100644 --- a/game/modules/tome/data/chats/gates-of-morning-main.lua +++ b/game/modules/tome/data/chats/gates-of-morning-main.lua @@ -21,7 +21,8 @@ newChat{ id="welcome", text = [[Thanks for your help. What may I do for you?]], answers = { {"Tell me more about the Gates of Morning.", jump="explain-gates"}, - {"I need help to hunt for clue about the staff.", jump="clues"}, + {"I need help to hunt for clue about the staff.", jump="clues", cond=function(npc, player) return not player:hasQuest("orc-pride") end}, + {"I am back from Mount Doom, where the orcs took the staff.", jump="mount-doom", cond=function(npc, player) return player:hasQuest("mount-doom") and player:hasQuest("mount-doom"):isCompleted() end}, {"Sorry I have to go!"}, } } @@ -57,4 +58,33 @@ The known bastions of the Pride are: }, } +newChat{ id="mount-doom", + text = [[I have heard about that, some good men lost their life for this, I hope it was worth it.]], + answers = { + {"Yes my lady, they delayed the orcs so that I could get to the heart of the volcano. *#LIGHT_GREEN#Tell her what happened#WHITE#*", jump="mount-doom-success", + cond=function(npc, player) return player:isQuestStatus("mount-doom", engine.Quest.COMPLETED, "stopped") end, + }, + {"I am afraid I was too late, but still I have some precious informations. *#LIGHT_GREEN#Tell her what happened#WHITE#*", jump="mount-doom-fail", + cond=function(npc, player) return player:isQuestStatus("mount-doom", engine.Quest.COMPLETED, "not-stopped") end, + }, + }, +} + +newChat{ id="mount-doom-success", + text = [[Blue Wizards ? I have never heard of them, there were rumours about a new master of the Pride, it seems they got two. +Thanks for all, you must continue your hunt, now you know what to look for.]], + answers = { + {"I will avenge your men.", action=function(npc, player) player:setQuestStatus("mount-doom", engine.Quest.DONE) end} + }, +} + +newChat{ id="mount-doom-fail", + text = [[Blue Wizards ? I have never heard of them, there were rumours about a new master of the Pride, it seems they got two. +I am afraid with the power they gained today they will be even harder to stop, but we do not have a choice.]], + answers = { + {"I will avenge your men.", action=function(npc, player) player:setQuestStatus("mount-doom", engine.Quest.DONE) end} + }, +} + + return "welcome" diff --git a/game/modules/tome/data/chats/pre-mount-doom-eruan.lua b/game/modules/tome/data/chats/pre-mount-doom-eruan.lua new file mode 100644 index 0000000000000000000000000000000000000000..eba3ad28fe77e045d51b0c6ebf1a94bdd8bf94a8 --- /dev/null +++ b/game/modules/tome/data/chats/pre-mount-doom-eruan.lua @@ -0,0 +1,30 @@ +-- 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 + +newChat{ id="welcome", + text = [[@playername@, I am part of a group of Sun Paladins sent by Aeryn, we arrived here tracking the orcs. +They have gone through that portal, a few of my friends were pulled in with them. +Earlier we captured an orc, he revealed the staff you seek is to be used to absord the power of a remote place for some dark rituals. +You must traverse this portal, if you have any means to, and stop the orcs.]], + answers = { + {"I think I can use the portal, do not worry!"}, + } +} + +return "welcome" diff --git a/game/modules/tome/data/maps/zones/eruan-last.lua b/game/modules/tome/data/maps/zones/eruan-last.lua new file mode 100644 index 0000000000000000000000000000000000000000..6af2a471af052bd6f553cfa4fd637b80e39d169f --- /dev/null +++ b/game/modules/tome/data/maps/zones/eruan-last.lua @@ -0,0 +1,100 @@ +-- 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 + +defineTile('.', "SAND") +defineTile('#', "PALMTREE") +defineTile('~', "DEEP_WATER") +defineTile('&', "MOUNT_DOOM_PORTAL") +defineTile('s', "SAND", nil, "SUN_PALADIN_GUREN") + +subGenerator{ + x = 0, y = 0, w = 50, h = 43, + generator = "engine.generator.map.Forest", + data = { + edge_entrances = {8,2}, + zoom = 6, + sqrt_percent = 40, + noise = "fbm_perlin", + floor = "SAND", + wall = "PALMTREE", + up = "UP", + down = "DOWN", + do_ponds = { + nb = {0, 2}, + size = {w=25, h=25}, + pond = {{0.6, "DEEP_WATER"}, {0.8, "SHALLOW_WATER"}}, + }, + }, + define_up = true, +} + +checkConnectivity({26,44}, "entrance", "boss-area", "boss-area") + +return { +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[ ]], +[[..................................................]], +[[..#...................~~...~......#...............]], +[[.....#............#...~~~~~~...........#...#....#.]], +[[...#........#.........~~&&&~~......#.....#..#.....]], +[[.........#...........~~~&&&s.............#....#...]], +[[..............#......~~~&&&~~~....#...#........#..]], +[[.......................~~~~~~.....................]] +} diff --git a/game/modules/tome/data/quests/mount-doom.lua b/game/modules/tome/data/quests/mount-doom.lua index 85211bc1ac125f94022eff6e2b7f2b984bb08864..62efafad6d730e1ac95dee693ccaa8b0d66ea987 100644 --- a/game/modules/tome/data/quests/mount-doom.lua +++ b/game/modules/tome/data/quests/mount-doom.lua @@ -22,10 +22,10 @@ name = "The Doom of the World!" desc = function(self, who) local desc = {} desc[#desc+1] = "You were sent to Mount Doom, in the ancient land of Mordor, where the One Ring was once forged by Sauron and destroyed by Frodo Baggins." - desc[#desc+1] = "This place is still full of the power of the ring and the Blue Wizard intend to absorb this power using the Staff of Absorption!" + desc[#desc+1] = "This place is still full of the power of the ring and the orcs intend to absorb this power using the Staff of Absorption!" desc[#desc+1] = "Whatever their plan may be, they must be stopped at all cost." desc[#desc+1] = "The volcano is attacked by orcs, a few Sun Paladins made it there with you, they will hold the line at the cost of their lives to buy you some time." - desc[#desc+1] = "Honor their sacrifice, do not let the Blue Wizards finish their work!" + desc[#desc+1] = "Honor their sacrifice, do not let the orcs finish their work!" if self:isCompleted("not-stopped") then desc[#desc+1] = "" desc[#desc+1] = "You arrived too late, the place has been drained of its power and the blue wizards have left." @@ -57,6 +57,10 @@ start_fyrk = function(self) local fyrk = game.zone:makeEntityByName(game.level, "actor", "FYRK") game.zone:addEntity(game.level, fyrk, "actor", 6, 455) - game.logPlayer(game.player, "#VIOLET#The Blue Wizards flee through a portal, as you prepare to follow them a huge faeros appears to block the way.") - game.player:setQuestStatus("mount-doom", engine.Quest.DONE) + if self:isCompleted("not-stopped") + game.logPlayer(game.player, "#VIOLET#A portal activates in the distance, you hear the orcs shout 'The Blue Wizards have departed, follow them!'") + else + game.logPlayer(game.player, "#VIOLET#The Blue Wizards flee through a portal, as you prepare to follow them a huge faeros appears to block the way.") + end + game.player:setQuestStatus("mount-doom", engine.Quest.COMPLETED) end diff --git a/game/modules/tome/data/quests/orc-pride.lua b/game/modules/tome/data/quests/orc-pride.lua index e007bd0204c40af721ba80c34dc3b0d93d8e319d..c7368da61e6715c2216b2563c80c217637e8f4ea 100644 --- a/game/modules/tome/data/quests/orc-pride.lua +++ b/game/modules/tome/data/quests/orc-pride.lua @@ -50,18 +50,16 @@ desc = function(self, who) return table.concat(desc, "\n") end ---[[ on_grant = function(self, who) - -- Reveal moria entrance + -- Reveal entrances local g = mod.class.Grid.new{ show_tooltip=true, - name="A gate into the mines of Moria", + name="Entrance to Rak'shor Pride bastion", display='>', color=colors.UMBER, notice = true, - change_level=1, change_zone="moria" + change_level=1, change_zone="rak-shor-pride" } g:resolve() g:resolve(nil, true) - game.zone:addEntity(game.memory_levels["wilderness-1"], g, "terrain", 44, 28) - game.logPlayer(game.player, "The elder points the mines on your map, to the north on the western side of the misty mountains.") + game.zone:addEntity(game.memory_levels["wilderness-arda-fareast-1"], g, "terrain", 38, 49) + game.logPlayer(game.player, "Aeryn points the known locations on your map.") end -]] diff --git a/game/modules/tome/data/zones/eruan/npcs.lua b/game/modules/tome/data/zones/eruan/npcs.lua index 6d7e63ae9a55b3940dcc4d6273a2c979fd21a658..57e74c4fc883f10fd79be84f57ab7d1c179e991f 100644 --- a/game/modules/tome/data/zones/eruan/npcs.lua +++ b/game/modules/tome/data/zones/eruan/npcs.lua @@ -21,3 +21,44 @@ load("/data/general/npcs/sandworm.lua") load("/data/general/npcs/orc.lua") local Talents = require("engine.interface.ActorTalents") + +newEntity{ define_as = "SUN_PALADIN_GUREN", + type = "humanoid", subtype = "human", + display = "p", + faction = "sunwall", + name = "Sun Paladin Guren", color=colors.GOLD, unique = true, + desc = [[A human warrior, clad in a shining plate armour. Power radiates from him.]], + level_range = {50, 50}, exp_worth = 2, + life_regen = 10, + rank = 3, + size_category = 3, + female = true, + max_life = 150, life_rating = 27, fixed_rating = true, + infravision = 20, + stats = { str=15, dex=10, cun=12, mag=16, con=14 }, + move_others=true, + + open_door = true, + + autolevel = "warriormage", + ai = "dumb_talented_simple", ai_state = { talent_in=2, ai_move="move_astar", }, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, + resolvers.drops{chance=100, nb=3, {ego_chance=100} }, + + resolvers.equip{ + {type="weapon", subtype="mace", autoreq=true}, + {type="armor", subtype="shield", autoreq=true}, + {type="armor", subtype="massive", autoreq=true}, + }, + resolvers.talents{ + [Talents.T_MASSIVE_ARMOUR_TRAINING]=5, + [Talents.T_CHANT_OF_LIGHT]=5, + [Talents.T_SEARING_LIGHT]=5, + [Talents.T_MARTYRDOM]=5, + [Talents.T_BARRIER]=5, + [Talents.T_WEAPON_OF_LIGHT]=5, + }, + + can_talk = "pre-mount-doom-eruan", +} diff --git a/game/modules/tome/data/zones/eruan/zone.lua b/game/modules/tome/data/zones/eruan/zone.lua index c78a80b1d71e3b7ee30f0b4c666de82a5598c8dd..166bb171665d5b406a3106f6d24a0b350689a4ae 100644 --- a/game/modules/tome/data/zones/eruan/zone.lua +++ b/game/modules/tome/data/zones/eruan/zone.lua @@ -28,7 +28,7 @@ return { -- all_remembered = true, all_lited = true, persistant = "zone", - ambiant_music = "Rainy Day.ogg", + ambiant_music = "Bazaar of Tal-Mashad.ogg", generator = { map = { class = "engine.generator.map.Forest", @@ -67,5 +67,11 @@ return { up = "UP_WILDERNESS", }, }, }, + [5] = { + generator = { map = { + class = "engine.generator.map.Static", + map = "zones/eruan-last", + }, }, + }, }, } diff --git a/game/modules/tome/data/zones/mount-doom/npcs.lua b/game/modules/tome/data/zones/mount-doom/npcs.lua index 290a81317dd42b6da800cee07e4852efd596a73c..aa76dae93c0a544e06cb59a4422f5016f9034d42 100644 --- a/game/modules/tome/data/zones/mount-doom/npcs.lua +++ b/game/modules/tome/data/zones/mount-doom/npcs.lua @@ -205,8 +205,8 @@ newEntity{ on_acquire_target = function(self, who) self:doEmote("Damn you, you only postpone your death! Fyrk!", 60) - game.player:hasQuest("mount-doom"):start_fyrk() game.player:hasQuest("mount-doom"):setStatus(engine.Quest.COMPLETED, "stopped") + game.player:hasQuest("mount-doom"):start_fyrk() end, } diff --git a/game/modules/tome/data/zones/mount-doom/zone.lua b/game/modules/tome/data/zones/mount-doom/zone.lua index ca4c70c62e7d3f6a6b1407e0661eafbd4e230056..ff52e3cd8c4aee6513ae82ee8aa4fbcf703e3a1c 100644 --- a/game/modules/tome/data/zones/mount-doom/zone.lua +++ b/game/modules/tome/data/zones/mount-doom/zone.lua @@ -63,8 +63,8 @@ return { game.level.turn_counter = game.level.turn_counter - 1 game.player.changed = true if game.level.turn_counter < 0 then - game.player:hasQuest("mount-doom"):start_fyrk() game.player:hasQuest("mount-doom"):setStatus(engine.Quest.COMPLETED, "not-stopped") + game.player:hasQuest("mount-doom"):start_fyrk() end end, } 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 5f4fd558701a33f58badcbe407e4639bf7586cf6..4f1e39de83d4fb9112eb581bd8cf1e949bfad8ef 100644 --- a/game/modules/tome/data/zones/rak-shor-pride/zone.lua +++ b/game/modules/tome/data/zones/rak-shor-pride/zone.lua @@ -25,7 +25,7 @@ return { 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, --- persistent = "zone", + persistent = "zone", -- all_remembered = true, all_lited = true, ambiant_music = "Bazaar of Tal-Mashad.ogg", diff --git a/ideas/classes.ods b/ideas/classes.ods index 9e23ffb5a46fdd00f58b5f7d22828b51e8d52a5f..1d7e0b16777030f5bf7b49eee1ef3a359fcc54e2 100644 Binary files a/ideas/classes.ods and b/ideas/classes.ods differ diff --git a/ideas/quests.ods b/ideas/quests.ods index d82c5922cf21164863755403b2db528ad1c8f924..c28579611148496b9acc712ea7d62f2ed0c50aa7 100644 Binary files a/ideas/quests.ods and b/ideas/quests.ods differ diff --git a/ideas/zones.ods b/ideas/zones.ods index 5443c5619d37f95c9448b97a7a975acde606f550..81d934bd87d7de66260bbaae496dfa4ca82d5615 100644 Binary files a/ideas/zones.ods and b/ideas/zones.ods differ