From 9af63260bfada5f34207ccbdf75089e5e84beac6 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Sat, 19 Jun 2010 22:05:28 +0000 Subject: [PATCH] mount doom quest git-svn-id: http://svn.net-core.org/repos/t-engine4@817 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engine/Zone.lua | 4 +- game/modules/tome/data/factions.lua | 36 ++--- .../modules/tome/data/general/npcs/faeros.lua | 2 +- .../tome/data/maps/zones/mount-doom.lua | 11 +- game/modules/tome/data/quests/mount-doom.lua | 62 ++++++++ .../tome/data/zones/mount-doom/grids.lua | 19 +++ .../tome/data/zones/mount-doom/npcs.lua | 134 ++++++++++++++++++ .../tome/data/zones/mount-doom/objects.lua | 34 ++--- .../tome/data/zones/mount-doom/zone.lua | 12 ++ .../tome/data/zones/tol-falas/objects.lua | 1 + ideas/factions.ods | Bin 14332 -> 14353 bytes 11 files changed, 272 insertions(+), 43 deletions(-) create mode 100644 game/modules/tome/data/quests/mount-doom.lua diff --git a/game/engine/Zone.lua b/game/engine/Zone.lua index a85cf7bee6..613cc239dd 100644 --- a/game/engine/Zone.lua +++ b/game/engine/Zone.lua @@ -211,7 +211,7 @@ function _M:makeEntityByName(level, type, name) local e if type == "actor" then e = self.npc_list[name] elseif type == "object" then e = self.object_list[name] - elseif type == "grid" then e = self.grid_list[name] + elseif type == "grid" or type == "terrain" then e = self.grid_list[name] elseif type == "trap" then e = self.trap_list[name] end if not e then return nil end @@ -319,7 +319,7 @@ function _M:addEntity(level, e, typ, x, y) elseif typ == "trap" then if x and y then level.map(x, y, Map.TRAP, e) end e:added() - elseif typ == "terrain" then + elseif typ == "terrain" or typ == "grid" then if x and y then level.map(x, y, Map.TERRAIN, e) end end e:check("addedToLevel", level, x, y) diff --git a/game/modules/tome/data/factions.lua b/game/modules/tome/data/factions.lua index 63eaf7e1c5..c43e6fd5d2 100644 --- a/game/modules/tome/data/factions.lua +++ b/game/modules/tome/data/factions.lua @@ -19,23 +19,25 @@ -- CSV export local src = [[ -,Enemies,Undead,Reunited Kingdom,Shire,Lonely Mountain,Eryn Lasgalen,Angolwen,Tol Falas,,Water lair|H,Assassin lair|H,,Sunwall|H,Orc Pride,,Sandworm Burrowers -Enemies,,,,,,,,,,,,,,,, -Undead,-1,,,,,,,,,,,,,,, -Reunited Kingdom,-1,,,,,,,,,,,,,,, -Shire,-1,,1,,,,,,,,,,,,, -Lonely Mountain,-1,,0.5,1,,,,,,,,,,,, -Eryn Lasgalen,-1,,0.5,1,0.3,,,,,,,,,,, -Angolwen,-1,,,,,,,,,,,,,,, -Tol Falas,,-1,-1,-1,-1,-1,-1,,,,,,,,, -,,,,,,,,,,,,,,,, -Water lair|H,-1,,,,,,,,,,,,,,, -Assassin lair|H,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,, -Sunwall|H,-1,,,,,,0,-1,,,-1,,,,, -Orc Pride,,-1,-1,-1,-1,-1,-1,-1,,,,,-1,,, -,,,,,,,,,,,,,,,, -Sandworm Burrowers,,,,,,,,,,,,,,,, +,Enemies,Undead,Reunited Kingdom,Shire,Lonely Mountain,Eryn Lasgalen,Angolwen,Tol Falas,,Water lair|H,Assassin lair|H,,Sunwall|H,Orc Pride,,Sandworm Burrowers,,Blue Wizards +Enemies,,,,,,,,,,,,,,,,,, +Undead,-1,,,,,,,,,,,,,,,,, +Reunited Kingdom,-1,,,,,,,,,,,,,,,,, +Shire,-1,,1,,,,,,,,,,,,,,, +Lonely Mountain,-1,,0.5,1,,,,,,,,,,,,,, +Eryn Lasgalen,-1,,0.5,1,0.3,,,,,,,,,,,,, +Angolwen,-1,,,,,,,,,,,,,,,,, +Tol Falas,,-1,-1,-1,-1,-1,-1,,,,,,,,,,, +,,,,,,,,,,,,,,,,,, +Water lair|H,-1,,,,,,,,,,,,,,,,, +Assassin lair|H,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,, +Sunwall|H,-1,,,,,,,-1,,,-1,,,,,,, +Orc Pride,,-1,-1,-1,-1,-1,-1,-1,,,,,-1,,,,, +,,,,,,,,,,,,,,,,,, +Sandworm Burrowers,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,, +Blue Wizards,,-1,-1,-1,-1,-1,-1,-1,,,,,-1,1,,,, ]] local facts = {} diff --git a/game/modules/tome/data/general/npcs/faeros.lua b/game/modules/tome/data/general/npcs/faeros.lua index a8f1c88de7..1e30bbd2b5 100644 --- a/game/modules/tome/data/general/npcs/faeros.lua +++ b/game/modules/tome/data/general/npcs/faeros.lua @@ -38,7 +38,7 @@ newEntity{ energy = { mod=1 }, stats = { str=10, dex=8, mag=6, con=16 }, - resists = { [DamageType.PHYSICAL] = 10, [DamageType.FIRE] = 100, }, + resists = { [DamageType.PHYSICAL] = 10, [DamageType.FIRE] = 100, [DamageType.COLD] = -30, }, no_breath = 1, poison_immune = 1, diff --git a/game/modules/tome/data/maps/zones/mount-doom.lua b/game/modules/tome/data/maps/zones/mount-doom.lua index 2ebf1be1d1..6cfe43ba0a 100644 --- a/game/modules/tome/data/maps/zones/mount-doom.lua +++ b/game/modules/tome/data/maps/zones/mount-doom.lua @@ -25,6 +25,9 @@ defineTile('p', "FLOOR", nil, "SUN_PALADIN_DEFENDER") defineTile('@', "FLOOR", nil, "SUN_PALADIN_DEFENDER_RODMOUR") defineTile('o', "FLOOR", nil, "URUK-HAI_ATTACK") +defineTile('1', "LAVA_FLOOR", nil, "ALATAR") +defineTile('2', "LAVA_FLOOR", nil, "PALLANDO") + subGenerator{ x = 0, y = 23, w = 12, h = 401, generator = "mod.class.generator.map.MountDoom", @@ -486,16 +489,16 @@ return [[ ~~~~~'''~~~~ ~~~~~'''~~~~ ~~~~~'''~~~~ +~~~~~'#'~~~~ +~~~~~#'#~~~~ +~~~~~'#'~~~~ ~~~~~'''~~~~ ~~~~~'''~~~~ ~~~~~'''~~~~ ~~~~~'''~~~~ ~~~~~'''~~~~ ~~~~~'''~~~~ -~~~~~'''~~~~ -~~~~~'''~~~~ -~~~~~'''~~~~ -~~~~~'''~~~~ +~~~~~1'2~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~ diff --git a/game/modules/tome/data/quests/mount-doom.lua b/game/modules/tome/data/quests/mount-doom.lua new file mode 100644 index 0000000000..85211bc1ac --- /dev/null +++ b/game/modules/tome/data/quests/mount-doom.lua @@ -0,0 +1,62 @@ +-- 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 + +-- Ruysh mount doom +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] = "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!" + 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." + desc[#desc+1] = "Use the portal to go back to the Far East, you *MUST* stop them, no matter the cost." + elseif self:isCompleted("stopped") then + desc[#desc+1] = "" + desc[#desc+1] = "You arrived in time and interrupted the ritual, the blue wizards have departed." + desc[#desc+1] = "Use the portal to go back to the Far East, you *MUST* stop them, no matter the cost." + end + return table.concat(desc, "\n") +end + +start_fyrk = function(self) + game.zone.on_turn = nil + game.level.turn_counter = nil + + local alatar, pallando + for uid, e in pairs(game.level.entities) do + if e.define_as == "ALATAR" then alatar = e + elseif e.define_as == "PALLANDO" then pallando = e end + end + + if alatar then game.level:removeEntity(alatar) alatar.dead = true end + if pallando then game.level:removeEntity(pallando) pallando.dead = true end + + local portal = game.zone:makeEntityByName(game.level, "grid", "FAR_EAST_PORTAL") + game.zone:addEntity(game.level, portal, "grid", 6, 455) + + 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) +end diff --git a/game/modules/tome/data/zones/mount-doom/grids.lua b/game/modules/tome/data/zones/mount-doom/grids.lua index 5736f7a91c..37cccc1d16 100644 --- a/game/modules/tome/data/zones/mount-doom/grids.lua +++ b/game/modules/tome/data/zones/mount-doom/grids.lua @@ -43,3 +43,22 @@ newEntity{ does_block_move = true, shader = "lava", } + +newEntity{ + define_as = "FAR_EAST_PORTAL", + name = "Farportal: the Far East", + display = '&', color_r=255, color_g=0, color_b=220, back_color=colors.VIOLET, + notice = true, + always_remember = true, + show_tooltip = true, + desc = [[A farportal is a way to travel incredible distances in the blink of an eye. They usually require an external item to use.]], + + orb_portal = { + change_level = 1, + change_zone = "wilderness-arda-fareast", + change_wilderness = { + x = 9, y = 5, + }, + message = "#VIOLET#You enter the swirling portal and in the blink of an eye you are back to the far east.", + }, +} diff --git a/game/modules/tome/data/zones/mount-doom/npcs.lua b/game/modules/tome/data/zones/mount-doom/npcs.lua index 439a5c9847..5be182c90f 100644 --- a/game/modules/tome/data/zones/mount-doom/npcs.lua +++ b/game/modules/tome/data/zones/mount-doom/npcs.lua @@ -153,3 +153,137 @@ newEntity{ base = "BASE_NPC_ORC_ATTACKER", define_as = "URUK-HAI_ATTACK", game.level.nb_attackers = game.level.nb_attackers - 1 end, } + + +newEntity{ + define_as = "ALATAR", + type = "humanoid", subtype = "istari", + name = "Alatar the Blue", + display = "@", color=colors.AQUAMARINE, + faction = "blue-wizards", + + desc = [[Lost to the memory of the West, the Blue Wizards have setup in the Far East, slowly growing corrupt. Now they must be stopped.]], + level_range = {70, 70}, exp_worth = 15, + max_life = 1000, life_rating = 36, fixed_rating = true, + max_mana = 10000, + mana_regen = 10, + rank = 5, + size_category = 3, + stats = { str=40, dex=60, cun=60, mag=30, con=40 }, + inc_damage = {all=-70}, + invulnerable = 1, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, + resolvers.equip{ + {type="weapon", subtype="staff", ego_chance=100, autoreq=true}, + {type="armor", subtype="cloth", ego_chance=100, autoreq=true}, + }, + resolvers.drops{chance=100, nb=10, {ego_chance=100} }, + + resolvers.talents{ + [Talents.T_FLAME]=5, + [Talents.T_FREEZE]=5, + [Talents.T_LIGHTNING]=5, + [Talents.T_MANATHRUST]=5, + [Talents.T_INFERNO]=5, + [Talents.T_FLAMESHOCK]=5, + [Talents.T_STONE_SKIN]=5, + [Talents.T_STRIKE]=5, + [Talents.T_HEAL]=5, + [Talents.T_REGENERATION]=5, + [Talents.T_ILLUMINATE]=5, + [Talents.T_QUICKEN_SPELLS]=5, + [Talents.T_SPELL_SHAPING]=5, + [Talents.T_ARCANE_POWER]=5, + [Talents.T_METAFLOW]=5, + [Talents.T_PHASE_DOOR]=5, + [Talents.T_ESSENCE_OF_SPEED]=5, + }, + + autolevel = "caster", + ai = "dumb_talented_simple", ai_state = { talent_in=1, ai_move="move_astar" }, + + 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") + end, +} + +newEntity{ + define_as = "PALLANDO", + type = "humanoid", subtype = "istari", + name = "Pallando the Blue", + display = "@", color=colors.LIGHT_BLUE, + faction = "blue-wizards", + + desc = [[Lost to the memory of the West, the Blue Wizards have setup in the Far East, slowly growing corrupt. Now they must be stopped.]], + level_range = {70, 70}, exp_worth = 15, + max_life = 1000, life_rating = 36, fixed_rating = true, + max_mana = 10000, + mana_regen = 10, + rank = 5, + size_category = 3, + stats = { str=40, dex=60, cun=60, mag=30, con=40 }, + inc_damage = {all=-70}, + invulnerable = 1, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, + resolvers.equip{ + {type="weapon", subtype="staff", ego_chance=100, autoreq=true}, + {type="armor", subtype="cloth", ego_chance=100, autoreq=true}, + }, + resolvers.drops{chance=100, nb=10, {ego_chance=100} }, + + resolvers.talents{ + [Talents.T_FLAME]=5, + [Talents.T_FREEZE]=5, + [Talents.T_LIGHTNING]=5, + [Talents.T_MANATHRUST]=5, + [Talents.T_INFERNO]=5, + [Talents.T_FLAMESHOCK]=5, + [Talents.T_STONE_SKIN]=5, + [Talents.T_STRIKE]=5, + [Talents.T_HEAL]=5, + [Talents.T_REGENERATION]=5, + [Talents.T_ILLUMINATE]=5, + [Talents.T_QUICKEN_SPELLS]=5, + [Talents.T_SPELL_SHAPING]=5, + [Talents.T_ARCANE_POWER]=5, + [Talents.T_METAFLOW]=5, + [Talents.T_PHASE_DOOR]=5, + [Talents.T_ESSENCE_OF_SPEED]=5, + }, + + autolevel = "caster", + ai = "dumb_talented_simple", ai_state = { talent_in=1, ai_move="move_astar" }, +} + +newEntity{ base = "BASE_NPC_FAEROS", define_as = "FYRK", + name = "Fyrk, Faeros High Guard", color=colors.VIOLET, + desc = [[Faeros are highly intelligent fire elementals, rarely seen outside volcanos they are probably not native to this world. +This one looks even nastier and looks toward you with what seems to be disdain. Flames swirly all around him.]], + level_range = {35, nil}, exp_worth = 2, + rank = 5, + max_life = resolvers.rngavg(300,400), life_rating = 20, fixed_rating = true, + combat_armor = 0, combat_def = 20, + on_melee_hit = { [DamageType.FIRE] = resolvers.mbonus(30, 10), }, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, NECK=1 }, + + resolvers.equip{ + {type="jewelry", subtype="amulet", defined="FIERY_CHOKER"}, + }, + + resolvers.talents{ + [Talents.T_FLAME]=4, + [Talents.T_FIERY_HANDS]=5, + [Talents.T_FLAMESHOCK]=5, + [Talents.T_INFERNO]=5, + [Talents.T_KNOCKBACK]=5, + [Talents.T_STUN]=2, + }, + + blind_immune = 1, + stun_immune = 1, +} diff --git a/game/modules/tome/data/zones/mount-doom/objects.lua b/game/modules/tome/data/zones/mount-doom/objects.lua index fa9642c33d..1eb1d6e551 100644 --- a/game/modules/tome/data/zones/mount-doom/objects.lua +++ b/game/modules/tome/data/zones/mount-doom/objects.lua @@ -19,29 +19,25 @@ load("/data/general/objects/objects.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, - combat = { - dam = 10, - apr = 0, - physcrit = 1.5, - dammod = {mag=1.1}, - }, +local Stats = require"engine.interface.ActorStats" + +newEntity{ base = "BASE_AMULET", + define_as = "FIERY_CHOKER", rarity=false, + name = "Fiery Choker", unique=true, + desc = [[A choker made of pure flame, forever shifting patterns around the neck of its wearer. Its fire seems to not harm the wearer.]], + cost = 50, wielder = { - see_invisible = 2, + inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 }, combat_spellpower = 7, combat_spellcrit = 8, + resists = { + [DamageType.FIRE] = 20, + [DamageType.COLD] = -20, + }, inc_damage={ - [DamageType.FIRE] = 4, - [DamageType.COLD] = 4, - [DamageType.ACID] = 4, - [DamageType.LIGHTNING] = 4, - [DamageType.BLIGHT] = 4, + [DamageType.FIRE] = 10, + [DamageType.COLD] = -10, }, + blind_immune = 1, }, } diff --git a/game/modules/tome/data/zones/mount-doom/zone.lua b/game/modules/tome/data/zones/mount-doom/zone.lua index cfcaf8d1a7..8e61d6e50b 100644 --- a/game/modules/tome/data/zones/mount-doom/zone.lua +++ b/game/modules/tome/data/zones/mount-doom/zone.lua @@ -51,8 +51,20 @@ return { post_process = function(level) level.turn_counter = 700 * 10 end, + + on_enter = function(lev, old_lev, newzone) + if newzone then + game.player:grantQuest("mount-doom") + end + end, + on_turn = function(self) require("mod.class.generator.actor.MountDoom").new(self, game.level.map, game.level, {}):tick() 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") + end end, } diff --git a/game/modules/tome/data/zones/tol-falas/objects.lua b/game/modules/tome/data/zones/tol-falas/objects.lua index aa730f7885..f99caafd4d 100644 --- a/game/modules/tome/data/zones/tol-falas/objects.lua +++ b/game/modules/tome/data/zones/tol-falas/objects.lua @@ -60,6 +60,7 @@ newEntity{ base = "BASE_AMULET", life_regen = 3, size_category = 3, rank = 3, + infravision = 20, resolvers.tmasteries{ ["technique/other"]=0.5, ["spell/phantasm"]=0.8, }, diff --git a/ideas/factions.ods b/ideas/factions.ods index 53e32d0cc0e2c1b3cbdf3a56ded8033c8e190381..587c672daecaf62f0644aba1e1e992ab0a401c6c 100644 GIT binary patch delta 4847 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 b@k9{|0I<db0I2@wq#t5LgbSBg__z3f^kw$v delta 4789 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 -- GitLab