diff --git a/game/modules/tome/data/chats/yeek-wayist.lua b/game/modules/tome/data/chats/yeek-wayist.lua index 9fa02f6f884fae2c3acff5c93776e8c251af6841..5663f53e8570a372054f052c79a957729bcd0d16 100644 --- a/game/modules/tome/data/chats/yeek-wayist.lua +++ b/game/modules/tome/data/chats/yeek-wayist.lua @@ -17,6 +17,10 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org +----------------------------------------------------------- +-- Non-yeek version +----------------------------------------------------------- + newChat{ id="welcome", text = [[#LIGHT_GREEN#*Before you stands a creature about as tall as a halfling, covered in small white fur and with a disproportionate head. You also notice he does not wield its greatsword, it seems to float in the air - bound to his will.*#WHITE# @@ -66,4 +70,25 @@ This is the way.]], } } -return "welcome" +----------------------------------------------------------- +-- Yeek version +----------------------------------------------------------- + +newChat{ id="yeek-welcome", + text = [[Thank the Way, this ..thing.. would have killed me.]], + answers = { + {"The Way sent me to explore this side of the tunnel.", jump="explore"}, + } +} + +newChat{ id="explore", + text = [[Yes me too, we should split up to cover more ground.]], + answers = { + {"Farewell, we are the Way, always.", action=function() + game:setAllowedBuild("psionic") + game:setAllowedBuild("psionic_mindslayer", true) + end}, + } +} + +return (game.party:findMember{main=true}.descriptor.race == "Yeek") and "yeek-welcome" or "welcome" diff --git a/game/modules/tome/data/maps/wilderness/eyal.lua b/game/modules/tome/data/maps/wilderness/eyal.lua index b92aed427ef6e146f6708f8ec0bde292c0704ce9..d2d3584f89aeedda95fc3659019bc7bbac291f4e 100644 --- a/game/modules/tome/data/maps/wilderness/eyal.lua +++ b/game/modules/tome/data/maps/wilderness/eyal.lua @@ -78,7 +78,7 @@ quickEntity('unremarkable-cave', {always_remember = true, show_tooltip=true, nam quickEntity('irkkk', {always_remember = true, show_tooltip=true, name="Irkkk (Town)", desc="Yeek Wayist capital", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/town1.png", notice = true}) quickEntity('ritch-tunnels', {always_remember = true, show_tooltip=true, name="Tunnel into the ritchs grounds",display='>', color=colors.UMBER, notice = true, change_level=1, change_zone="ritch-tunnels"}) quickEntity('murgol-lair', {always_remember = true, show_tooltip=true, name="Way into the lair of Murgol",display='>', color=colors.LIGHT_BLUE, notice = true, change_level=1, change_zone="murgol-lair"}) -quickEntity('rel-tunnel', {always_remember = true, show_tooltip=true, name="Tunnel to Maj'Eyal", display='>', color=colors.LIGHT_BLUE, notice = true, force_down=true, change_level=4, change_zone="halfling-ruins", change_level_check = function() local p = game.party:findMember{main=true} if p:hasQuest("start-yeek") and not p:isQuestStatus("start-yeek", engine.Quest.DONE) then require("engine.ui.Dialog"):simplePopup("Long tunnel", "You can not abandon the yeeks of Rel to the dangers that lie within the island.") return false end return true end}) +quickEntity('rel-tunnel', {always_remember = true, show_tooltip=true, name="Tunnel to Maj'Eyal", display='>', color=colors.LIGHT_BLUE, notice = true, force_down=true, change_level=4, change_zone="halfling-ruins", change_level_check = function() local p = game.party:findMember{main=true} if p:hasQuest("start-yeek") and not p:isQuestStatus("start-yeek", engine.Quest.DONE) then require("engine.ui.Dialog"):simplePopup("Long tunnel", "You can not abandon the yeeks of Rel to the dangers that lie within the island.") return true end p:setQuestStatus("rel-tunnel", engine.Quest.DONE) return false end}) -- Angolwen is only know from the start to mages if game.player:knowTalent(game.player.T_TELEPORT_ANGOLWEN) then diff --git a/game/modules/tome/data/quests/rel-tunnel.lua b/game/modules/tome/data/quests/rel-tunnel.lua new file mode 100644 index 0000000000000000000000000000000000000000..280df01d75a28d587d2bd14122531bf5b43530f3 --- /dev/null +++ b/game/modules/tome/data/quests/rel-tunnel.lua @@ -0,0 +1,25 @@ +-- 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 = "Light at the end of the tunnel" +desc = function(self, who) + local desc = {} + desc[#desc+1] = "You must find a way to Maj'Eyal through the tunnel to the north of the island.\n" + return table.concat(desc, "\n") +end diff --git a/game/modules/tome/data/quests/start-yeek.lua b/game/modules/tome/data/quests/start-yeek.lua index b1fb4592338ae3bb645d2a9620049259f27cecf6..de5581d88935fbc577c78734bb84c539c37164dd 100644 --- a/game/modules/tome/data/quests/start-yeek.lua +++ b/game/modules/tome/data/quests/start-yeek.lua @@ -39,7 +39,7 @@ on_status_change = function(self, who, status, sub) if sub then if self:isCompleted("ritch") and self:isCompleted("murgol") then who:setQuestStatus(self.id, engine.Quest.DONE) - who:grantQuest("starter-zones") + who:grantQuest("rel-tunnel") game.logPlayer(game.player, "You should head to the tunnel to Maj'Eyal and explore the world. For the Way.") end end diff --git a/game/modules/tome/data/texts/unlock-psionic_mindslayer.lua b/game/modules/tome/data/texts/unlock-psionic_mindslayer.lua new file mode 100644 index 0000000000000000000000000000000000000000..cdc4100e2d48bcdfb81ef7a9b3a644c04d6ffb1a --- /dev/null +++ b/game/modules/tome/data/texts/unlock-psionic_mindslayer.lua @@ -0,0 +1,36 @@ +-- 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 "New Class: #LIGHT_GREEN#Mindslayer (Psionic)", +[[Mindslayers are the frontline fighters of the yeek's Way. Absolutly devoted to serving the Way, and thus all yeeks, they dive into battle with nothing but their own mind. +Yeeks are natively psionic and thus most of them are yeeks, but psionic powers do happen - rarely - in other races too. + +You have saved a fellow yeek mindslayer and can now create characters with the #LIGHT_GREEN#Mindslayer class#WHITE#. + +Mindslayers use their powerful psionic powers to supplement their low physical strength and dive into battle. +Class features:#YELLOW# +- Erect psionic shields around you both for protection and to absorb energy +- Engulf yourself in psionic auras - unleashing pain to all those near you +- Use your psionic "third hand" to hold a second weapon, floating in front of you +- Unleash the power of your sustained auras and shields by spiking them in great bursts of power#WHITE# + +Mindslayers use their mind to manipulate the world. +They require energy to do so, which they take from the world around them. +While their shields are up incomming damage will be partly absorbed and the energy stored for later use. +]] diff --git a/game/modules/tome/data/zones/halfling-ruins/npcs.lua b/game/modules/tome/data/zones/halfling-ruins/npcs.lua index cec0fad62aed2d862d7f8fb282fefb435c020e42..6a92cf876ecfc314a2c9521d8f4728431025639c 100644 --- a/game/modules/tome/data/zones/halfling-ruins/npcs.lua +++ b/game/modules/tome/data/zones/halfling-ruins/npcs.lua @@ -92,6 +92,9 @@ newEntity{ define_as="SUBJECT_Z", if p.descriptor.race == "Halfling" then wayist:doEmote("Halfling?! DIE!!!!!", 70) wayist:checkAngered(p, false, -200) + elseif p.descriptor.race == "Yeek" then + wayist:doEmote("The Way sent you?", 70) + wayist.can_talk = "yeek-wayist" else wayist:doEmote("You.. saved me?", 70) wayist.can_talk = "yeek-wayist" diff --git a/game/modules/tome/data/zones/murgol-lair/npcs.lua b/game/modules/tome/data/zones/murgol-lair/npcs.lua index d13d1c2bebe7b0b6c85c24e99d86f6bed0d0087e..ed9b73fda1c89588d039d306597ad3899a12f600 100644 --- a/game/modules/tome/data/zones/murgol-lair/npcs.lua +++ b/game/modules/tome/data/zones/murgol-lair/npcs.lua @@ -23,44 +23,3 @@ load("/data/general/npcs/ant.lua", rarity(2)) load("/data/general/npcs/jelly.lua", rarity(3)) local Talents = require("engine.interface.ActorTalents") - - - -newEntity{ base = "BASE_NPC_RITCH_REL", define_as = "HIVE_MOTHER", - type = "humanoid", subtype="atch", unique = true, - name = "Murgol", - display = "y", color=colors.VIOLET, - desc = [[This monstrous yeek depravity opposes all that the Way stands for. The Way commands that he is eliminated.]], - level_range = {7, nil}, exp_worth = 2, - max_life = 190, life_rating = 17, fixed_rating = true, - infravision = 20, - stats = { str=15, dex=10, cun=8, mag=16, wil=10, con=15 }, - move_others=true, - - instakill_immune = 1, - rank = 4, - size_category = 4, - no_breath = 1, - - combat = { dam=30, atk=22, apr=7, dammod={str=1.1} }, - - body = { INVEN = 10, BODY=1 }, - - resolvers.drops{chance=100, nb=1, {defined="FLAMEWROUGHT", random_art_replace={chance=75}}, }, - resolvers.drops{chance=100, nb=3, {ego_chance=100} }, - - resolvers.talents{ - }, - resolvers.sustains_at_birth(), - - summon = { - {type="insect", subtype="ritch", number=1, hasxp=false}, - }, - - autolevel = "dexmage", - ai = "tactical", ai_state = { talent_in=2, }, - - on_die = function(self, who) - game.player:setQuestStatus("start-yeek", engine.Quest.COMPLETED, "murgol") - end, -}