diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 6427744eb7dd8003e378f13817ee8d911fbabfdf..7da4f75e1f2ff0da6e7ee127fdf26783f03230a2 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -80,12 +80,12 @@ function _M:init() end function _M:run() + self.calendar = Calendar.new("/data/calendar_allied.lua", "Today is the %s %s of the %s year of the Age of Ascendancy of Maj'Eyal.\nThe time is %02d:%02d.", 122, 167, 11) self.flash = LogFlasher.new(0, 0, self.w, 20, nil, nil, nil, {255,255,255}, {0,0,0}) self.logdisplay = LogDisplay.new(0, self.h * 0.8 + 7, self.w * 0.5 - 30, self.h * 0.2 - 7, nil, nil, nil, {255,255,255}, "/data/gfx/ui/message-log.png") self.player_display = PlayerDisplay.new(0, 230, 200, self.h * 0.8 - 230, {30,30,0}) self.hotkeys_display = HotkeysDisplay.new(nil, self.w * 0.5 + 30, self.h * 0.8 + 7, self.w * 0.5 - 30, self.h * 0.2 - 7, "/data/gfx/ui/talents-list.png") self.npcs_display = ActorsSeenDisplay.new(nil, self.w * 0.5 + 30, self.h * 0.8 + 7, self.w * 0.5 - 30, self.h * 0.2 - 7, "/data/gfx/ui/talents-list.png") - self.calendar = Calendar.new("/data/calendar_allied.lua", "Today is the %s %s of the %s year of the Age of Ascendancy of Maj'Eyal.\nThe time is %02d:%02d.", 122, 167, 11) self.tooltip = Tooltip.new(nil, nil, {255,255,255}, {30,30,30,230}) self.tooltip2 = Tooltip.new(nil, nil, {255,255,255}, {30,30,30,230}) self.flyers = FlyingText.new() @@ -126,6 +126,7 @@ function _M:run() if self.level then self:setupDisplayMode(false, "postinit") end if self.level and self.level.data.day_night then self.state:dayNightCycle() end + if self.level and self.player then self.calendar = Calendar.new("/data/calendar_"..(self.player.calendar or "allied")..".lua", "Today is the %s %s of the %s year of the Age of Ascendancy of Maj'Eyal.\nThe time is %02d:%02d.", 122, 167, 11) end end --- Checks if the current character is "tainted" by cheating @@ -175,6 +176,7 @@ function _M:newGame() self.creating_player = true local birth; birth = Birther.new("Character Creation: "..self.player.name.." ("..nb_unlocks.."/"..max_unlocks.." unlocked birth options)", self.player, {"base", "difficulty", "world", "race", "subrace", "sex", "class", "subclass" }, function() + self.calendar = Calendar.new("/data/calendar_"..(self.player.calendar or "allied")..".lua", "Today is the %s %s of the %s year of the Age of Ascendancy of Maj'Eyal.\nThe time is %02d:%02d.", 122, 167, 11) self.player:check("make_tile") self.player.make_tile = nil @@ -184,8 +186,18 @@ function _M:newGame() save:close() self.player:check("before_starting_zone") - self.player.wild_x, self.player.wild_y = self.player.default_wilderness[1], self.player.default_wilderness[2] + + -- Configure & create the worldmap self.player.last_wilderness = self.player.default_wilderness[3] or "wilderness" + self.player.wild_x, self.player.wild_y = 1, 1 + self:changeLevel(1, self.player.last_wilderness) + self.player.wild_x, self.player.wild_y = self.player.default_wilderness[1], self.player.default_wilderness[2] + if type(self.player.wild_x) == "string" and type(self.player.wild_y) == "string" then + local spot = self.level:pickSpot{type=self.player.wild_x, subtype=self.player.wild_y} or {x=1,y=1} + self.player.wild_x, self.player.wild_y = spot.x, spot.y + end + + -- Generate if self.player.__game_difficulty then self:setupDifficulty(self.player.__game_difficulty) end self:changeLevel(self.player.starting_level or 1, self.player.starting_zone, nil, self.player.starting_level_force_down) print("[PLAYER BIRTH] resolve...") @@ -239,6 +251,7 @@ function _M:newGame() self.party = qb self.player = nil self.party:setPlayer(1, true) + self.calendar = Calendar.new("/data/calendar_"..(self.player.calendar or "allied")..".lua", "Today is the %s %s of the %s year of the Age of Ascendancy of Maj'Eyal.\nThe time is %02d:%02d.", 122, 167, 11) Map:setViewerFaction(self.player.faction) if self.player.__game_difficulty then self:setupDifficulty(self.player.__game_difficulty) end diff --git a/game/modules/tome/data/achievements/quests.lua b/game/modules/tome/data/achievements/quests.lua index 94a1adf8f525edaf0ec2c354131064a57c3a5677..612994ad0782c16dbe2c77031306a8072e01ab54 100644 --- a/game/modules/tome/data/achievements/quests.lua +++ b/game/modules/tome/data/achievements/quests.lua @@ -157,3 +157,7 @@ newAchievement{ name = "Home sweet home", id = "SHERTUL_FORTRESS", desc = [[Dispatched the Weirdling Beast and taken possession of Yiilkgur, the Sher'Tul Fortress for your own usage.]], } +newAchievement{ + name = "Squadmate", id = "NORGAN_SAVED", + desc = [[Escaped from Reknor alive with your squadmate Norgan.]], +} diff --git a/game/modules/tome/data/birth/races/construct.lua b/game/modules/tome/data/birth/races/construct.lua index 6f745601cc4f8aef0f08c3aa0dcd5ff4c0ef34cc..d4faa4720fc6a1ba104151aa11f5411faaea9ac1 100644 --- a/game/modules/tome/data/birth/races/construct.lua +++ b/game/modules/tome/data/birth/races/construct.lua @@ -79,7 +79,7 @@ newBirthDescriptor copy = { resolvers.generic(function(e) e.descriptor.class = "Golem" e.descriptor.subclass = "Golem" end), resolvers.genericlast(function(e) e.faction = "undead" end), - default_wilderness = {28, 13}, + default_wilderness = {"playerpop", "allied"}, starting_zone = "ruins-kor-pul", starting_quest = "start-allied", blood_color = colors.GREY, diff --git a/game/modules/tome/data/birth/races/dwarf.lua b/game/modules/tome/data/birth/races/dwarf.lua index b7161c2c244636be2af0ed166885eda196d032ab..40a65ee10298860968f911a8bb81dcc31dec3378 100644 --- a/game/modules/tome/data/birth/races/dwarf.lua +++ b/game/modules/tome/data/birth/races/dwarf.lua @@ -38,7 +38,8 @@ newBirthDescriptor{ copy = { faction = "iron-throne", type = "humanoid", subtype="dwarf", - default_wilderness = {28, 13}, + calendar = "dwarf", + default_wilderness = {"playerpop", "dwarf"}, starting_zone = "reknor-escape", starting_quest = "start-dwarf", starting_intro = "dwarf", diff --git a/game/modules/tome/data/birth/races/elf.lua b/game/modules/tome/data/birth/races/elf.lua index 3a383eb4881469bbbd11b0ad30a34f662ec5b11b..132ed9d553277705de8719d572d3d9737acbfb75 100644 --- a/game/modules/tome/data/birth/races/elf.lua +++ b/game/modules/tome/data/birth/races/elf.lua @@ -44,7 +44,6 @@ newBirthDescriptor{ }, copy = { type = "humanoid", subtype="elf", - default_wilderness = {28, 13}, starting_zone = "trollmire", starting_quest = "start-allied", resolvers.inventory{ id=true, {defined="ORB_SCRYING"} }, @@ -73,7 +72,7 @@ newBirthDescriptor experience = 1.3, talents = { [ActorTalents.T_SHALOREN_SPEED]=1 }, copy = { - default_wilderness = {17, 42}, + default_wilderness = {"playerpop", "shaloren"}, starting_zone = "scintillating-caves", starting_quest = "start-shaloren", faction = "shalore", @@ -108,6 +107,7 @@ newBirthDescriptor faction = "thalore", starting_intro = "thalore", life_rating = 11, + default_wilderness = {"playerpop", "allied"}, resolvers.inscription("INFUSION:_REGENERATION", {cooldown=10, dur=5, heal=60}), resolvers.inscription("INFUSION:_WILD", {cooldown=12, what={poison=true}, dur=4, power=14}), }, diff --git a/game/modules/tome/data/birth/races/halfling.lua b/game/modules/tome/data/birth/races/halfling.lua index c9a780f9cfd89ee09d2f13ef021472799caf5b80..bc41ed81bf84466735a787a5691afc2bad72c2f4 100644 --- a/game/modules/tome/data/birth/races/halfling.lua +++ b/game/modules/tome/data/birth/races/halfling.lua @@ -44,7 +44,7 @@ newBirthDescriptor{ copy = { faction = "allied-kingdoms", type = "humanoid", subtype="halfling", - default_wilderness = {28, 13}, + default_wilderness = {"playerpop", "allied"}, starting_zone = "trollmire", starting_quest = "start-allied", starting_intro = "halfling", diff --git a/game/modules/tome/data/birth/races/human.lua b/game/modules/tome/data/birth/races/human.lua index 6cbfaf88c00a71c458fa06ad626e50f0beee333b..963dd28f606cd2702d232106088ca24407f7bc25 100644 --- a/game/modules/tome/data/birth/races/human.lua +++ b/game/modules/tome/data/birth/races/human.lua @@ -79,7 +79,7 @@ newBirthDescriptor }, copy = { life_rating = 11, - default_wilderness = {28, 13}, + default_wilderness = {"playerpop", "allied"}, starting_zone = "trollmire", starting_quest = "start-allied", starting_intro = "higher", @@ -103,7 +103,7 @@ newBirthDescriptor copy = { unused_talents_types = 1, life_rating = 10, - default_wilderness = {28, 13}, + default_wilderness = {"playerpop", "allied"}, starting_zone = "trollmire", starting_quest = "start-allied", starting_intro = "cornac", diff --git a/game/modules/tome/data/birth/races/orc.lua b/game/modules/tome/data/birth/races/orc.lua index baea9644162afe3e62ac001163fa9ddb8f4f6eaf..9fc4739bf3e1978a68bf69278f69fc9ce288ebac 100644 --- a/game/modules/tome/data/birth/races/orc.lua +++ b/game/modules/tome/data/birth/races/orc.lua @@ -52,7 +52,7 @@ newBirthDescriptor{ copy = { faction = "orc-pride", type = "humanoid", subtype="orc", - default_wilderness = {10, 39, "wilderness"}, + default_wilderness = {"playerpop", "allied"}, starting_zone = "wilderness", starting_quest = "start-dunadan", starting_intro = "orc", diff --git a/game/modules/tome/data/birth/races/troll.lua b/game/modules/tome/data/birth/races/troll.lua index 516042e1661a3419a1e976120575e842852ca0bb..e69c5cadf2c6907c4029d4223b39e6e9a4611a0d 100644 --- a/game/modules/tome/data/birth/races/troll.lua +++ b/game/modules/tome/data/birth/races/troll.lua @@ -46,7 +46,7 @@ newBirthDescriptor{ copy = { faction = "orc-pride", type = "humanoid", subtype="troll", - default_wilderness = {26, 7, "wilderness"}, + default_wilderness = {"playerpop", "allied"}, starting_zone = "trollmire", starting_quest = "start-dunadan", starting_intro = "dwarf", diff --git a/game/modules/tome/data/birth/races/undead.lua b/game/modules/tome/data/birth/races/undead.lua index 82acdaaa884efb3a2a802aaf1fffcc84349a7904..17beacf8f0219a4f7e39a112cf44fc393c9c462b 100644 --- a/game/modules/tome/data/birth/races/undead.lua +++ b/game/modules/tome/data/birth/races/undead.lua @@ -48,7 +48,6 @@ newBirthDescriptor{ copy = { -- Force undead faction to undead resolvers.genericlast(function(e) e.faction = "undead" end), - default_wilderness = {39, 38}, starting_zone = "blighted-ruins", starting_level = 8, starting_level_force_down = true, starting_quest = "start-undead", @@ -97,6 +96,7 @@ newBirthDescriptor }, copy = { type = "undead", subtype="ghoul", + default_wilderness = {"playerpop", "low-undead"}, starting_intro = "ghoul", life_rating=14, poison_immune = 0.8, @@ -143,6 +143,7 @@ newBirthDescriptor }, copy = { type = "undead", subtype="skeleton", + default_wilderness = {"playerpop", "low-undead"}, starting_intro = "skeleton", life_rating=12, poison_immune = 1, diff --git a/game/modules/tome/data/birth/races/yeek.lua b/game/modules/tome/data/birth/races/yeek.lua index 8c8830e638882f7ccf0aa4f300be25871077b01e..ea0d5e5e2c1d13945cadb30a407400b5412f2dfb 100644 --- a/game/modules/tome/data/birth/races/yeek.lua +++ b/game/modules/tome/data/birth/races/yeek.lua @@ -41,7 +41,7 @@ newBirthDescriptor{ faction = "the-way", type = "humanoid", subtype="yeek", size_category = 2, - default_wilderness = {28, 49}, + default_wilderness = {"playerpop", "yeek"}, starting_zone = "wilderness", starting_quest = "start-yeek", starting_intro = "yeek", diff --git a/game/modules/tome/data/calendar_dwarf.lua b/game/modules/tome/data/calendar_dwarf.lua new file mode 100644 index 0000000000000000000000000000000000000000..b7591b0dec7f047ea25719b6df4baf71cbc09c55 --- /dev/null +++ b/game/modules/tome/data/calendar_dwarf.lua @@ -0,0 +1,32 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +return { + { 31, "Iron", }, + { 45, "Steel", }, + { 30, "Gold", }, + { 45, "Stralite", }, + { 31, "Voratun", }, + { 3, "Acuisition", }, + { 45, "Profit", }, + { 30, "Wealth", }, + { 45, "Dearth", }, + { 30, "Loss", }, + { 30, "Shortage", }, +} diff --git a/game/modules/tome/data/chats/norgan-saved.lua b/game/modules/tome/data/chats/norgan-saved.lua new file mode 100644 index 0000000000000000000000000000000000000000..302a91f1491bae27147a4c351926a76888cf43a4 --- /dev/null +++ b/game/modules/tome/data/chats/norgan-saved.lua @@ -0,0 +1,32 @@ +-- ToME - Tales of Maj'Eyal +-- 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 = [[Thank you @playername@ we both survived for the wealth of the Empire. I will bring them the news and then rest. +I do not think I want to see death so closely for some time now. +Farewell.]], + answers = { + {"For the Empite! Take care.", action=function(npc, player) + npc:disappear() + world:gainAchievement("NORGAN_SAVED", player) + end}, + } +} + +return "welcome" diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua index b40de107e3f18ac29a6d57e65dd5cffc5fd7ee88..7ed1dd8d4e4f17d54a80db98471e732339940f3d 100644 --- a/game/modules/tome/data/damage_types.lua +++ b/game/modules/tome/data/damage_types.lua @@ -701,7 +701,7 @@ newDamageType{ projector = function(src, x, y, type, dam) local realdam = DamageType:get(DamageType.FIRE).projector(src, x, y, DamageType.FIRE, dam) local target = game.level.map(x, y, Map.ACTOR) - if target and src:attr("cleansing_flames") then + if target and src:attr("cleansing_flames") and rng.percent(src:attr("cleansing_flames")) then local effs = {} local status = (src:reactionToward(target) >= 0) and "detrimental" or "beneficial" for eff_id, p in pairs(target.tmp) do diff --git a/game/modules/tome/data/maps/towns/iron-council.lua b/game/modules/tome/data/maps/towns/iron-council.lua index ad6425b8d56bed4a5785b2330a76b1b2cf9bb180..41d964f80f529f715610de16ed7ee804d587ef84 100644 --- a/game/modules/tome/data/maps/towns/iron-council.lua +++ b/game/modules/tome/data/maps/towns/iron-council.lua @@ -17,6 +17,11 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org +startx = 34 +starty = 3 +endx = 6 +endy = 43 + -- defineTile section defineTile("D", "DEEP_BELLOW") defineTile("#", "HARDWALL") diff --git a/game/modules/tome/data/maps/wilderness/eyal.lua b/game/modules/tome/data/maps/wilderness/eyal.lua index 2534b0cbddcf429734d6f980ba499b5cf0131010..468ce1119cb3b06fab2a6412d679fe79c46400f6 100644 --- a/game/modules/tome/data/maps/wilderness/eyal.lua +++ b/game/modules/tome/data/maps/wilderness/eyal.lua @@ -98,6 +98,13 @@ else quickEntity('zigur', ')') end +-- Iron Council is only known to dwarves +if game.player:knowTalent(game.player.T_DWARVEN_RESILIENCE) then + quickEntity('iron-council', {always_remember = true, show_tooltip=true, name="Iron Council (Town)", desc="Heart of the dwarven Empire", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/town1.png", notice = true, change_level=1, change_zone="town-iron-council"}) +else + quickEntity('iron-council', '#') +end + -- Load encounters for this map prepareEntitiesList("maj_eyal_encounters", "mod.class.Encounter", "/data/general/encounters/maj-eyal.lua") prepareEntitiesList("maj_eyal_encounters_npcs", "mod.class.WorldNPC", "/data/general/encounters/maj-eyal-npcs.lua") @@ -168,6 +175,11 @@ addSpot({32, 23}, "zone-pop", "shertul-fortress") addSpot({37, 32}, "zone-pop", "halfling-ruins") addSpot({31, 47}, "zone-pop", "rel-tunnel") addSpot({60, 9}, "zone-pop", "tempest-peak") +addSpot({28, 13}, "playerpop", "allied") +addSpot({70, 23}, "playerpop", "dwarf") +addSpot({17, 42}, "playerpop", "shaloren") +addSpot({27, 49}, "playerpop", "yeek") +addSpot({39, 38}, "playerpop", "low-undead") -- addZone section addZone({5, 1, 82, 43}, "zonename", "Maj'Eyal") @@ -215,7 +227,7 @@ return { {[[~]],[[~]],[[~]],[[~]],[[|]],[[|]],[[|]],[[|]],[[.]],[[T]],[[T]],[[!]],[[^]],[[^]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[.]],[[.]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[v]],[[T]],[[.]],[[!]],[[^]],[[^]],[[^]],[[^]],[[^]],[[!]],[[.]],[[!]],[[^]],[[^]],[[!]],[[.]],[[.]],[[-]],[[!]],[[!]],[[.]],[[.]],[[.]],[[.]],[[.]],[[T]],[[T]],[[T]],[[.]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[-]],[[#]],[[#]],[[#]],[[#]],[[#]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[.]],[[.]],[[!]],[[!]],[[!]],[[!]],[[-]],[[!]],[[!]],[[!]],[[.]],[[.]],[[.]],[[.]],[[-]],[[-]],[[-]],[[.]],[[.]],[[.]],[[!]],[[^]],[[^]],[[^]],[[^]],[[^]],[[^]],[[(]],[[T]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[.]],[[w]],[[w]],[[!]],[[w]],[[w]],[[w]],[[w]],[[!]],[[.]],[[~]],[[~]],[[~]],}, {[[~]],[[~]],[[~]],[[~]],[[|]],[[|]],[[|]],[[|]],[[T]],[[T]],[[!]],[[!]],[[^]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[.]],[[.]],[[.]],[[T]],[[T]],[[T]],[[T]],[[.]],[[T]],[[v]],[[v]],[[v]],[[v]],[[.]],[[.]],[[!]],[[!]],[[!]],[[^]],[[^]],[[!]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[-]],[[-]],[[!]],[[!]],[[.]],[[.]],[[.]],[[T]],[[T]],[[T]],[[T]],[[T]],[[.]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[-]],[[-]],[[#]],[[#]],[[#]],[[#]],[[#]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[.]],[[.]],[[.]],[[!]],[[!]],[[!]],[[-]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[-]],[[-]],[[.]],[[.]],[[.]],[[.]],[[!]],[[^]],[[^]],[[^]],[[^]],[[!]],[[!]],[[^]],[[(]],[[(]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[.]],[[w]],[[w]],[[w]],[[w]],[[w]],[[w]],[[w]],[[w]],[[.]],[[~]],[[~]],[[~]],}, {[[~]],[[~]],[[~]],[[~]],[[|]],[[|]],[[|]],[[.]],[[T]],[[T]],[[!]],[[!]],[[^]],[[^]],[[maze]],[[!]],[[!]],[[.]],[[.]],[[.]],[[.]],[[.]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[.]],[[v]],[[v]],[[v]],[[.]],[[v]],[[v]],[[v]],[[!]],[[^]],[[^]],[[^]],[[^]],[[^]],[[^]],[[!]],[[.]],[[.]],[[-]],[[!]],[[!]],[[.]],[[.]],[[.]],[[.]],[[T]],[[T]],[[T]],[[T]],[[.]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[-]],[[.]],[[#]],[[#]],[[#]],[[#]],[[#]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[.]],[[.]],[[.]],[[!]],[[!]],[[-]],[[-]],[[.]],[[.]],[[-]],[[-]],[[-]],[[-]],[[T]],[[T]],[[.]],[[.]],[[.]],[[!]],[[^]],[[^]],[[!]],[[!]],[[!]],[[.]],[[.]],[[(]],[[(]],[[(]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[!]],[[w]],[[w]],[[w]],[[w]],[[w]],[[w]],[[.]],[[~]],[[~]],[[~]],[[~]],}, -{[[~]],[[~]],[[~]],[[~]],[[|]],[[|]],[[|]],[[.]],[[T]],[[T]],[[^]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[old-forest]],[[v]],[[v]],[[v]],[[v]],[[!]],[[v]],[[v]],[[v]],[[v]],[[!]],[[^]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[)]],[[)]],[[)]],[[)]],[[.]],[[.]],[[.]],[[.]],[[T]],[[T]],[[.]],[[.]],[[T]],[[T]],[[T]],[[.]],[[.]],[[T]],[[T]],[[T]],[[T]],[[.]],[[-]],[[.]],[[!]],[[#]],[[#]],[[#]],[[#]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[.]],[[.]],[[.]],[[.]],[[.]],[[-]],[[.]],[[-]],[[-]],[[T]],[[T]],[[T]],[[T]],[[T]],[[.]],[[.]],[[.]],[[!]],[[^]],[[!]],[[!]],[[!]],[[.]],[[.]],[[.]],[[(]],[[(]],[[(]],[[(]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[!]],[[w]],[[w]],[[w]],[[w]],[[w]],[[.]],[[~]],[[~]],[[~]],[[~]],}, +{[[~]],[[~]],[[~]],[[~]],[[|]],[[|]],[[|]],[[.]],[[T]],[[T]],[[^]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[old-forest]],[[v]],[[v]],[[v]],[[v]],[[!]],[[v]],[[v]],[[v]],[[v]],[[!]],[[^]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[)]],[[)]],[[)]],[[)]],[[.]],[[.]],[[.]],[[.]],[[T]],[[T]],[[.]],[[.]],[[T]],[[T]],[[T]],[[.]],[[.]],[[T]],[[T]],[[T]],[[T]],[[.]],[[-]],[[.]],[[!]],[[iron-council]],[[#]],[[#]],[[#]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[.]],[[.]],[[.]],[[.]],[[.]],[[-]],[[.]],[[-]],[[-]],[[T]],[[T]],[[T]],[[T]],[[T]],[[.]],[[.]],[[.]],[[!]],[[^]],[[!]],[[!]],[[!]],[[.]],[[.]],[[.]],[[(]],[[(]],[[(]],[[(]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[!]],[[w]],[[w]],[[w]],[[w]],[[w]],[[.]],[[~]],[[~]],[[~]],[[~]],}, {[[~]],[[~]],[[~]],[[~]],[[sandworm]],[[|]],[[|]],[[.]],[[T]],[[T]],[[^]],[[^]],[[angolwen]],[[^]],[[angolwen-teleport]],[[!]],[[.]],[[.]],[[.]],[[.]],[[westreach-lake]],[[westreach-lake]],[[westreach-lake]],[[.]],[[.]],[[.]],[[v]],[[v]],[[v]],[[*]],[[*]],[[-]],[[-]],[[v]],[[v]],[[v]],[[!]],[[!]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[)]],[[)]],[[)]],[[)]],[[)]],[[)]],[[)]],[[.]],[[.]],[[T]],[[T]],[[.]],[[.]],[[T]],[[T]],[[T]],[[.]],[[.]],[[.]],[[T]],[[T]],[[.]],[[.]],[[-]],[[.]],[[!]],[[!]],[[#]],[[#]],[[#]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[.]],[[.]],[[.]],[[.]],[[.]],[[-]],[[-]],[[-]],[[!]],[[!]],[[T]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[!]],[[!]],[[!]],[[.]],[[.]],[[.]],[[.]],[[(]],[[(]],[[(]],[[(]],[[(]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[!]],[[w]],[[w]],[[w]],[[!]],[[!]],[[.]],[[.]],[[~]],[[~]],[[~]],}, {[[~]],[[~]],[[~]],[[~]],[[|]],[[|]],[[|]],[[.]],[[.]],[[T]],[[^]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[.]],[[.]],[[westreach-lake]],[[westreach-lake]],[[westreach-lake]],[[westreach-lake]],[[westreach-lake]],[[.]],[[.]],[[v]],[[v]],[[v]],[[*]],[[*]],[[v]],[[-]],[[-]],[[v]],[[v]],[[!]],[[!]],[[^]],[[^]],[[^]],[[!]],[[.]],[[.]],[[)]],[[)]],[[)]],[[)]],[[)]],[[)]],[[)]],[[)]],[[.]],[[.]],[[T]],[[T]],[[T]],[[T]],[[T]],[[T]],[[.]],[[.]],[[.]],[[T]],[[T]],[[.]],[[.]],[[-]],[[.]],[[.]],[[!]],[[#]],[[#]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[.]],[[.]],[[.]],[[.]],[[.]],[[-]],[[!]],[[!]],[[!]],[[T]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[.]],[[!]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[(]],[[(]],[[(]],[[(]],[[T]],[[.]],[[.]],[[.]],[[.]],[[.]],[[!]],[[w]],[[w]],[[!]],[[w]],[[w]],[[w]],[[.]],[[~]],[[~]],[[~]],}, {[[~]],[[~]],[[~]],[[~]],[[|]],[[|]],[[|]],[[.]],[[.]],[[T]],[[T]],[[^]],[[^]],[[^]],[[!]],[[!]],[[.]],[[.]],[[.]],[[westreach-lake]],[[westreach-lake]],[[westreach-lake]],[[westreach-lake]],[[westreach-lake]],[[.]],[[.]],[[.]],[[v]],[[v]],[[*]],[[*]],[[v]],[[v]],[[-]],[[-]],[[v]],[[v]],[[v]],[[^]],[[^]],[[^]],[[!]],[[.]],[[.]],[[)]],[[)]],[[)]],[[)]],[[)]],[[)]],[[)]],[[)]],[[.]],[[.]],[[T]],[[T]],[[T]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[T]],[[T]],[[T]],[[.]],[[irondeep-lake]],[[irondeep-lake]],[[.]],[[!]],[[!]],[[!]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[~]],[[.]],[[.]],[[.]],[[.]],[[-]],[[!]],[[!]],[[T]],[[T]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[!]],[[!]],[[(]],[[T]],[[T]],[[.]],[[.]],[[.]],[[.]],[[.]],[[.]],[[!]],[[w]],[[w]],[[w]],[[w]],[[.]],[[.]],[[~]],[[~]],[[~]],}, diff --git a/game/modules/tome/data/quests/deep-bellow.lua b/game/modules/tome/data/quests/deep-bellow.lua new file mode 100644 index 0000000000000000000000000000000000000000..40a2d18de2dd1daa803b061959221fcc0310d521 --- /dev/null +++ b/game/modules/tome/data/quests/deep-bellow.lua @@ -0,0 +1,34 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +name = "From bellow, it devours" +desc = function(self, who) + local desc = {} + desc[#desc+1] = "Your escape from Reknor got your heart pounding and your desire for wealth and power increased tenfolds." + desc[#desc+1] = "Maybe it is time for you to start an adventurer's career. Deep down the Iron Throne mountains lies the Deep Bellow." + desc[#desc+1] = "It has been long sealed away but still, from time to time adventurers go there looking for wealth." + desc[#desc+1] = "None that you know of has come back yet, but you did survive Reknor. You are great." + return table.concat(desc, "\n") +end + +on_status_change = function(self, who, status, sub) + if self:isCompleted() then + who:setQuestStatus(self.id, engine.Quest.DONE) + end +end diff --git a/game/modules/tome/data/quests/start-dwarf.lua b/game/modules/tome/data/quests/start-dwarf.lua new file mode 100644 index 0000000000000000000000000000000000000000..b0b489a371fc36d0ef15918838654a68fb2f75d3 --- /dev/null +++ b/game/modules/tome/data/quests/start-dwarf.lua @@ -0,0 +1,51 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +name = "Reknor is lost!" +desc = function(self, who) + local desc = {} + desc[#desc+1] = "You were part of a group of dwarves sent to investigate the situation of the kingdom of Reknor." + desc[#desc+1] = "When you arrived there you found nothing but orcs, well organized and very powerful." + desc[#desc+1] = "Most of your team was killed there and now you and Norgan (the sole survivor besides you) must hurry to go back to the Iron Council to bring the news." + desc[#desc+1] = "Let nothing stop you." + if self:isCompleted("norgan-survived") then + desc[#desc+1] = "Both Norgan and you made it home." + end + return table.concat(desc, "\n") +end + +on_status_change = function(self, who, status, sub) + if self:isCompleted() then + who:setQuestStatus(self.id, engine.Quest.DONE) + who:grantQuest("deep-bellow") + who:grantQuest("starter-zones") + end +end + +on_grant = function(self, who) + local x, y = util.findFreeGrid(game.player.x, game.player.y, 20, true, {[engine.Map.ACTOR]=true}) + local norgan = game.zone:makeEntityByName(game.level, "actor", "NORGAN") + game.zone:addEntity(game.level, norgan, "actor", x, y) + + game.party:addMember(norgan, { + control="order", type="squadmate", title="Norgan", + orders = {leash=true, follow=true}, -- behavior=true}, + }) + norgan.ai_state.tactic_follow_leader = true +end diff --git a/game/modules/tome/data/zones/reknor-escape/grids.lua b/game/modules/tome/data/zones/reknor-escape/grids.lua new file mode 100644 index 0000000000000000000000000000000000000000..7da9005e8968dc1ca17ceea5d237dc8a6fa806a4 --- /dev/null +++ b/game/modules/tome/data/zones/reknor-escape/grids.lua @@ -0,0 +1,20 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +load("/data/general/grids/basic.lua") diff --git a/game/modules/tome/data/zones/reknor-escape/npcs.lua b/game/modules/tome/data/zones/reknor-escape/npcs.lua new file mode 100644 index 0000000000000000000000000000000000000000..741129f961073da28ac7d7145c3b0b9549b311a8 --- /dev/null +++ b/game/modules/tome/data/zones/reknor-escape/npcs.lua @@ -0,0 +1,110 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +load("/data/general/npcs/rodent.lua", rarity(0)) +load("/data/general/npcs/vermin.lua", rarity(2)) +load("/data/general/npcs/molds.lua", rarity(1)) +load("/data/general/npcs/skeleton.lua", rarity(0)) +load("/data/general/npcs/snake.lua", rarity(2)) + +load("/data/general/npcs/all.lua", rarity(4, 35)) + +local Talents = require("engine.interface.ActorTalents") + +newEntity{ define_as = "BROTOQ", + allow_infinite_dungeon = true, + type = "undead", subtype = "skeleton", unique = true, + name = "The Shade", + display = "s", color=colors.VIOLET, + shader = "unique_glow", + desc = [[This skeleton looks nasty. There are red flames in its empty eye sockets. It wields a nasty sword and strides toward you, throwing spells.]], + level_range = {7, nil}, exp_worth = 2, + max_life = 150, life_rating = 15, fixed_rating = true, + max_mana = 85, + max_stamina = 85, + rank = 4, + size_category = 3, + undead = 1, + infravision = 20, + stats = { str=16, dex=12, cun=14, mag=25, con=16 }, + instakill_immune = 1, + blind_immune = 1, + bleed_immune = 1, + move_others=true, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, + equipment = resolvers.equip{ {type="weapon", subtype="staff", defined="STAFF_KOR", random_art_replace={chance=75}, autoreq=true}, {type="armor", subtype="light", autoreq=true}, }, + drops = resolvers.drops{chance=100, nb=3, {ego_chance=100} }, + + resolvers.talents{ + [Talents.T_MANATHRUST]=4, [Talents.T_FREEZE]=4, [Talents.T_TIDAL_WAVE]=2, + [Talents.T_WEAPONS_MASTERY]=3, + }, + resolvers.inscriptions(1, {"shielding rune", "phase door rune"}), + resolvers.inscriptions(1, {"manasurge rune"}), + inc_damage = {all=-20}, + + autolevel = "warriormage", + ai = "tactical", ai_state = { talent_in=3, ai_move="move_astar", }, + + on_die = function(self, who) + game.state:activateBackupGuardian("KOR_FURY", 5, 35, ".. yes I tell you! The old ruins of Kor'Pul are still haunted!") + game.player:resolveSource():grantQuest("start-allied") + game.player:resolveSource():setQuestStatus("start-allied", engine.Quest.COMPLETED, "kor-pul") + end, +} + +-- Your ally +newEntity{ define_as = "NORGAN", + type = "humanoid", subtype = "dwarf", unique = true, + name = "Norgan", + display = "@", color=colors.UMBER, + faction = "iron-throne", + desc = [[Norgan and you are the sole survivors of the Reknor expedition, your duty is to make sure the news come back to the Iron Council.]], + level_range = {1, 1}, + max_life = 120, life_rating = 12, fixed_rating = true, + rank = 3, + stats = { str=19, dex=10, cun=12, mag=8, con=16, wil=13 }, + move_others=true, + never_anger = true, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, LITE=1 }, + equipment = resolvers.equip{ + {type="weapon", subtype="greatmaul", name="iron greatmaul", autoreq=true}, + {type="armor", subtype="heavy", name="iron mail armour", autoreq=true}, + {type="lite", subtype="lite", name="brass lantern"}, + }, + + resolvers.talents{ + [Talents.T_DWARF_RESILIENCE]=1, + [Talents.T_HEAVY_ARMOUR_TRAINING]=1, + [Talents.T_STUNNING_BLOW]=2, + [Talents.T_WEAPON_COMBAT]=2, + [Talents.T_WEAPONS_MASTERY]=2, + }, + resolvers.inscriptions(1, {"regeneration infusion"}), + + autolevel = "zerker", + ai = "tactical", ai_state = { talent_in=1, ai_move="move_astar", }, + ai_tactic = resolvers.tactic"melee", + + on_die = function(self, who) + game.player:resolveSource():setQuestStatus("start-dwarf", engine.Quest.COMPLETED, "norgan-dead") + end, +} diff --git a/game/modules/tome/data/zones/reknor-escape/objects.lua b/game/modules/tome/data/zones/reknor-escape/objects.lua new file mode 100644 index 0000000000000000000000000000000000000000..4e7b8c6c6405bb629806f2279b08ee9e45700cf7 --- /dev/null +++ b/game/modules/tome/data/zones/reknor-escape/objects.lua @@ -0,0 +1,20 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +load("/data/general/objects/objects.lua") diff --git a/game/modules/tome/data/zones/reknor-escape/traps.lua b/game/modules/tome/data/zones/reknor-escape/traps.lua new file mode 100644 index 0000000000000000000000000000000000000000..f8f844f583d30b1999a9bf7a520221cdebdfa557 --- /dev/null +++ b/game/modules/tome/data/zones/reknor-escape/traps.lua @@ -0,0 +1,20 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +load("/data/general/traps/elemental.lua") diff --git a/game/modules/tome/data/zones/reknor-escape/zone.lua b/game/modules/tome/data/zones/reknor-escape/zone.lua new file mode 100644 index 0000000000000000000000000000000000000000..7c739855de842ef48091ce41b759174ed7b55354 --- /dev/null +++ b/game/modules/tome/data/zones/reknor-escape/zone.lua @@ -0,0 +1,102 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +return { + name = "Escape from Reknor", + level_range = {1, 5}, + level_scheme = "player", + max_level = 5, + 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, +-- all_remembered = true, +-- all_lited = true, + persistent = "zone", + ambient_music = "Swashing the buck.ogg", + generator = { + map = { + class = "engine.generator.map.TileSet", + tileset = {"7x7/base", "7x7/tunnel",}, + ['.'] = "FLOOR", + ['#'] = "WALL", + ['+'] = "DOOR", + ["'"] = "DOOR", + up = "UP", + down = "DOWN", + force_down = true, + }, + actor = { + class = "engine.generator.actor.Random", + nb_npc = {50, 60}, + filters = { {max_ood=2}, }, + nb_spots = 2, on_spot_chance = 35, + }, + object = { + class = "engine.generator.object.Random", + nb_object = {6, 9}, + nb_spots = 2, on_spot_chance = 80, + }, + trap = { + class = "engine.generator.trap.Random", + nb_trap = {6, 9}, + }, + }, + levels = + { + [1] = { + generator = { map = { + up = "UP_WILDERNESS", + }, }, + }, + }, + + on_enter = function(lev, old_lev, new_zone) + if lev == 2 then + game.player:forceLevelup(2) + local norgan = game.party:findMember{type="squadmate"} + if norgan then norgan:forceLevelup(2) end + end + if lev == 4 then + game.player:forceLevelup(3) + local norgan = game.party:findMember{type="squadmate"} + if norgan then norgan:forceLevelup(3) end + end + end, + + on_turn = function(self) + if not game.level.turn_counter then return end + game.level.turn_counter = game.level.turn_counter - 1 + game.player.changed = true + if game.level.turn_counter < 0 then + game.level.turn_counter = nil + game.player:hasQuest("master-jeweler"):ritual_end() + end + end, + on_leave = function(lev, old_lev, newzone) + if not newzone then return end + + local norgan = game.party:findMember{type="squadmate"} + if norgan then game.player:setQuestStatus("start-dwarf", engine.Quest.COMPLETED, "norgan") end + game.player:setQuestStatus("start-dwarf", engine.Quest.COMPLETED) + if norgan then + local chat = require("engine.Chat").new("norgan-saved", norgan, game.player) + chat:invoke() + end + end, +} diff --git a/game/modules/tome/data/zones/town-iron-council/grids.lua b/game/modules/tome/data/zones/town-iron-council/grids.lua new file mode 100644 index 0000000000000000000000000000000000000000..1cfa068e90d54558d52045cb1f256bab2409743d --- /dev/null +++ b/game/modules/tome/data/zones/town-iron-council/grids.lua @@ -0,0 +1,46 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +load("/data/general/grids/basic.lua") +load("/data/general/grids/underground.lua") + +for i = 1, 20 do +newEntity{ + define_as = "CRYSTAL_WALL"..(i > 1 and i or ""), + type = "wall", subtype = "underground", + name = "crystals", + image = "terrain/oldstone_floor.png", + add_displays = class:makeCrystals("terrain/crystal_alpha"), + display = '#', color=colors.LIGHT_BLUE, back_color=colors.UMBER, + always_remember = true, + can_pass = {pass_wall=1}, + does_block_move = true, + block_sight = true, + dig = "CRYSTAL_FLOOR", +} +end + +newEntity{ base = "DOWN", define_as = "ESCAPE_REKNOR", change_zone="reknor-escape" } +newEntity{ base = "DOWN", define_as = "DEEP_BELLOW", change_zone="deep-bellow" } + +newEntity{ define_as = "STATUE", + display = '@', image="terrain/oldstone_floor.png", add_displays = {mod.class.Grid.new{image="terrain/statue1.png"}}, + does_block_move = true, + block_sight = true, +} diff --git a/game/modules/tome/data/zones/town-iron-council/npcs.lua b/game/modules/tome/data/zones/town-iron-council/npcs.lua new file mode 100644 index 0000000000000000000000000000000000000000..8995e719f66918efda60c1ce44bd8af42a275773 --- /dev/null +++ b/game/modules/tome/data/zones/town-iron-council/npcs.lua @@ -0,0 +1,73 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +load("/data/general/npcs/gwelgoroth.lua", function(e) if e.rarity then e.derth_rarity, e.rarity = e.rarity, nil end end) + +local Talents = require("engine.interface.ActorTalents") + +newEntity{ + define_as = "BASE_NPC_ELVALA_TOWN", + type = "humanoid", subtype = "elf", + display = "p", color=colors.WHITE, + faction = "shalore", + anger_emote = "Catch @himher@!", + + combat = { dam=resolvers.rngavg(1,2), atk=2, apr=0, dammod={str=0.4} }, + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 }, + lite = 3, + + life_rating = 10, + rank = 2, + size_category = 3, + + open_door = true, + + resolvers.inscriptions(1, "rune"), + + autolevel = "warrior", + ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, }, + energy = { mod=1 }, + stats = { str=12, dex=8, mag=6, con=10 }, +} + +newEntity{ base = "BASE_NPC_ELVALA_TOWN", + name = "elvala guard", color=colors.LIGHT_UMBER, + desc = [[A stern-looking guard, he will not let you disturb the town.]], + level_range = {1, nil}, exp_worth = 1, + rarity = 3, + max_life = resolvers.rngavg(70,80), + resolvers.equip{ + {type="weapon", subtype="longsword", autoreq=true}, + {type="armor", subtype="shield", autoreq=true}, + }, + combat_armor = 2, combat_def = 0, + resolvers.talents{ [Talents.T_RUSH]=1, [Talents.T_PERFECT_STRIKE]=1, }, +} + +newEntity{ base = "BASE_NPC_ELVALA_TOWN", + name = "shalore rune master", color=colors.RED, + desc = [[A tall elf, his skin covered in runes.]], + level_range = {1, nil}, exp_worth = 1, + rarity = 3, + max_life = resolvers.rngavg(50,60), + ai_state = { talent_in=1, }, + autolevel = "caster", + resolvers.inscriptions(3, {"heat beam rune", "frozen spear rune", "acid wave rune", "lightning rune"}), +} diff --git a/game/modules/tome/data/zones/town-iron-council/objects.lua b/game/modules/tome/data/zones/town-iron-council/objects.lua new file mode 100644 index 0000000000000000000000000000000000000000..4e7b8c6c6405bb629806f2279b08ee9e45700cf7 --- /dev/null +++ b/game/modules/tome/data/zones/town-iron-council/objects.lua @@ -0,0 +1,20 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +load("/data/general/objects/objects.lua") diff --git a/game/modules/tome/data/zones/town-iron-council/traps.lua b/game/modules/tome/data/zones/town-iron-council/traps.lua new file mode 100644 index 0000000000000000000000000000000000000000..39d3369e9a311954c8b25ff9828e5246889d1dcf --- /dev/null +++ b/game/modules/tome/data/zones/town-iron-council/traps.lua @@ -0,0 +1,44 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +load("/data/general/traps/store.lua") + +newEntity{ base = "BASE_STORE", define_as = "ARMOR_STORE", + name="Armoury", + display='2', color=colors.UMBER, + resolvers.store("ARMOR", "iron-throne"), +} + +newEntity{ base = "BASE_STORE", define_as = "WEAPON_STORE", + name="Weapon Store", + display='3', color=colors.UMBER, + resolvers.store("WEAPON", "iron-throne"), +} + +newEntity{ base = "BASE_STORE", define_as = "RUNIC_STORE", + name="Runemaster", + display='5', color=colors.RED, + resolvers.store("SCROLL", "iron-throne"), +} + +newEntity{ base = "BASE_STORE", define_as = "GEM_STORE", + name="Jewelry", + display='9', color=colors.LIGHT_RED, + resolvers.store("GEMSTORE", "iron-throne"), +} diff --git a/game/modules/tome/data/zones/town-iron-council/zone.lua b/game/modules/tome/data/zones/town-iron-council/zone.lua new file mode 100644 index 0000000000000000000000000000000000000000..d452aaa899b0aaa32e5a0c535f77a847c12d8fbf --- /dev/null +++ b/game/modules/tome/data/zones/town-iron-council/zone.lua @@ -0,0 +1,47 @@ +-- ToME - Tales of Maj'Eyal +-- 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 + +return { + name = "Iron Council", + level_range = {1, 15}, + level_scheme = "player", + actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end, + update_base_level_on_enter = true, + max_level = 1, + width = 196, height = 80, + decay = {300, 800, only={object=true}, no_respawn=true}, + persistent = "zone", + all_remembered = true, + all_lited = true, + ambient_music = "Virtue lost.ogg", + generator = { + map = { + class = "engine.generator.map.Static", + map = "towns/iron-council", + }, + actor = { + class = "engine.generator.actor.Random", + nb_npc = {10, 10}, + }, + object = { + class = "engine.generator.object.Random", + nb_object = {0, 0}, + }, + }, +} diff --git a/tiled-maps/eyal2.tmx b/tiled-maps/eyal2.tmx index 44ef05d285ef47744abdb4c715810db45a390096..adb07f7951909e14c67acbe92c82c4b61482c8ce 100644 --- a/tiled-maps/eyal2.tmx +++ b/tiled-maps/eyal2.tmx @@ -267,10 +267,15 @@ <property name="display" value="rhaloren-camp"/> </properties> </tile> + <tile id="24"> + <properties> + <property name="display" value="iron-council"/> + </properties> + </tile> </tileset> <layer name="Terrain" width="170" height="100"> <data encoding="base64" compression="zlib"> - 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 </data> </layer> <objectgroup name="addSpot#pops" width="170" height="100"> @@ -556,6 +561,36 @@ <property name="type" value=""zone-pop""/> </properties> </object> + <object name="Start: Allied" x="899" y="419" width="26" height="24"> + <properties> + <property name="subtype" value=""allied""/> + <property name="type" value=""playerpop""/> + </properties> + </object> + <object name="Start: Dwarves" x="2243" y="740" width="26" height="24"> + <properties> + <property name="subtype" value=""dwarf""/> + <property name="type" value=""playerpop""/> + </properties> + </object> + <object name="Start: Shaloren" x="547" y="1347" width="26" height="24"> + <properties> + <property name="subtype" value=""shaloren""/> + <property name="type" value=""playerpop""/> + </properties> + </object> + <object name="Start: Yeek" x="866" y="1571" width="26" height="24"> + <properties> + <property name="subtype" value=""yeek""/> + <property name="type" value=""playerpop""/> + </properties> + </object> + <object name="Start: Low Undeads" x="1250" y="1219" width="26" height="24"> + <properties> + <property name="subtype" value=""low-undead""/> + <property name="type" value=""playerpop""/> + </properties> + </object> </objectgroup> <objectgroup name="addZone#zonenames" width="170" height="100" visible="0"> <object name="Maj'Eyal" x="171" y="56" width="2478" height="1344">