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