diff --git a/game/engines/default/engine/HotkeysDisplay.lua b/game/engines/default/engine/HotkeysDisplay.lua index 93b967469140e198497b3e5301eb0fd2193fb01c..1e7d69ce9010381c28f09b3b50e80bc9b6dfaf50 100644 --- a/game/engines/default/engine/HotkeysDisplay.lua +++ b/game/engines/default/engine/HotkeysDisplay.lua @@ -156,7 +156,7 @@ function _M:onMouse(button, mx, my, click, on_over) text:merge(self.actor:getTalentFullDescription(t)) elseif a.hotkey[i] and a.hotkey[i][1] == "inventory" then local o = a:findInAllInventories(a.hotkey[i][2]) - text = o:getDesc() + if o then text = o:getDesc() else text = "Missing!" end end on_over(text) end diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 13852d82a538f5d68ee88c16e59b2852e22dddcc..031afc03109641db17c80749100ddb778841d58b 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -963,11 +963,14 @@ function _M:onQuit() end end ---- Requests the game to save -function _M:saveGame() +--- When a save is being made, stop running/resting +function _M:onSavefilePush() self.player:runStop("saving") self.player:restStop("saving") +end +--- Requests the game to save +function _M:saveGame() -- savefile_pipe is created as a global by the engine savefile_pipe:push(self.save_name, "game", self) world:saveWorld() diff --git a/game/modules/tome/data/chats/gates-of-morning-welcome.lua b/game/modules/tome/data/chats/gates-of-morning-welcome.lua index 9575dcebd1e9ddfecaf44007a535285cdb0af018..786840141644d66e35f6f36304da69295b1ea50d 100644 --- a/game/modules/tome/data/chats/gates-of-morning-welcome.lua +++ b/game/modules/tome/data/chats/gates-of-morning-welcome.lua @@ -65,7 +65,7 @@ You may now enter the Gates of Morning.]], {"Thank you, my lady.", action=function(npc, player) world:gainAchievement("SPYDRIC_INFESTATION", game.player) player:setQuestStatus("spydric-infestation", engine.Quest.DONE) - npc:move(162, 28, true) + npc:move(46, 27, true) npc.can_talk = "gates-of-morning-main" game:setAllowedBuild("divine") game:setAllowedBuild("divine_sun_paladin", true) diff --git a/game/modules/tome/data/chats/zemekkys.lua b/game/modules/tome/data/chats/zemekkys.lua index 83a999448c183ddfbc53b1ec77bf49ea33ac594a..66a368aba37b235531ce79d1320b95cd50233b2f 100644 --- a/game/modules/tome/data/chats/zemekkys.lua +++ b/game/modules/tome/data/chats/zemekkys.lua @@ -82,14 +82,14 @@ I blow myself up quite enough already without that thing in the house, thank you Besides, I still can't help you unless you have a Blood-Runed Athame to etch a portal. Er, and that portal must be etched on a piece of prepared Resonating Marble. The Gates of the Morning has a slab of Marble that once could have served, but a number of, uh, incidents have taken their toll. -It'll require a Resonating Diamond to get it properly prepared. Oh, and I want 200 gold.]], +It'll require a Resonating Diamond to get it properly prepared. Oh, and I want 100 gold.]], answers = { {"Where can I find all that?", jump="quest"}, } } newChat{ id="quest", - text = [[Try your purse for the 200 gold. As for an Athame and a Resonating Diamond, I assume the orcs have some if they're cooking up portals to use that Orb on. Try the Vor Armory. It so happens that I know a back way in. Never mind why.]], + text = [[Try your purse for the 100 gold. As for an Athame and a Resonating Diamond, I assume the orcs have some if they're cooking up portals to use that Orb on. Try the Vor Armory. It so happens that I know a back way in. Never mind why.]], answers = { {"Thank you.", action=function(npc, player) player:grantQuest("west-portal") @@ -124,9 +124,9 @@ newChat{ id="athame3", -- Return gem ----------------------------------------------------------------- newChat{ id="complete", - text = [[[Yes? You got the athame, the gem and 200 gold?]], + text = [[[Yes? You got the athame, the gem and 100 gold?]], answers = { - {"[Give him the gem, the athame and 200 gold]", jump="complete2", cond=check_materials, action=remove_materials}, + {"[Give him the gem, the athame and 100 gold]", jump="complete2", cond=check_materials, action=remove_materials}, {"Sorry it seems I miss some stuff. I will be back."}, } } diff --git a/game/modules/tome/data/general/npcs/major-demon.lua b/game/modules/tome/data/general/npcs/major-demon.lua index b5cf517bf36df426ea91628b51f5c486e1004073..cb24ef6af627743417dc68f479c69fd28401da91 100644 --- a/game/modules/tome/data/general/npcs/major-demon.lua +++ b/game/modules/tome/data/general/npcs/major-demon.lua @@ -142,3 +142,39 @@ newEntity{ base = "BASE_NPC_MAJOR_DEMON", }, resolvers.sustains_at_birth(), } + +newEntity{ base = "BASE_NPC_MAJOR_DEMON", + name = "daelach", color=colors.PURPLE, -- Shadow flame + desc = [[You can only discern the real shape of this demon, its body is surrounded by a cloud of fiery darkness. +It moves switftly toward you, casting terrible spells and swinging its weapons at you.]], + level_range = {39, nil}, exp_worth = 1, + rarity = 6, + rank = 3, + energy = {mod=1.3}, + size_category = 4, + autolevel = "warriormage", + life_rating = 25, + combat_armor = 12, combat_def = 20, + mana_regen = 100, positive_regen = 100, negative_regen = 100, equilibrium_regen = -100, vim_regen = 100, + + resolvers.equip{ {type="weapon", subtype="longsword", autoreq=true}, }, + resolvers.equip{ {type="weapon", subtype="waraxe", autoreq=true}, }, + + resists={all = resolvers.mbonus(25, 20)}, + + stun_immune = 1, + blind_immune = 1, + knockback_immune = 1, + + resolvers.talents{ + [Talents.T_CORRUPTED_STRENGTH]=5, + [Talents.T_DISARM]=5, + [Talents.T_RUSH]=8, + [Talents.T_WEAPON_COMBAT]=8, + [Talents.T_WEAPONS_MASTERY]=7, + [Talents.T_FIRE_STORM]=5, + [Talents.T_FIREBEAM]=5, + [Talents.T_SHADOW_BLAST]=5, + [Talents.T_TWILIGHT_SURGE]=5, + }, +} diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua index ed82bd829c1db4884c4c5e3ea5d688b6c59e4750..386b29ddb529f83cd320b154d2707191fde80ebf 100644 --- a/game/modules/tome/data/general/objects/boss-artifacts.lua +++ b/game/modules/tome/data/general/objects/boss-artifacts.lua @@ -23,9 +23,10 @@ local Talents = require "engine.interface.ActorTalents" -- This file describes artifacts associated with a boss of the game, they have a high chance of dropping their respective ones, but they can still be found elsewhere newEntity{ base = "BASE_LONGSWORD", - define_as = "LONGSWORD_RINGIL", rarity=false, unided_name = "glittering longsword", - name = "Ringil, the glittering sword of Fingolfin", unique=true, - desc = [[The sword of Fingolfin, said to have glittered like ice. With it he wounded Morgoth in single combat after the Dagor Bragollach.]], + define_as = "LONGSWORD_WINTERTIDE", rarity=false, unided_name = "glittering longsword", + name = "Wintertide", unique=true, + desc = [[The air seems to freeze around the blade of this sword, draining all heat from the area. +It is said the Conclave created this weapon for their warmaster during the dark times of the first allure war.]], require = { stat = { str=35 }, }, level_range = {35, 45}, rarity = 280, @@ -51,7 +52,7 @@ newEntity{ base = "BASE_LONGSWORD", local tg = {type="ball", range=0, radius=4, friendlyfire=false} who:project(tg, who.x, who.y, engine.DamageType.ICE, 10 + (who:getMag() + who:getWil()) / 2, {type="freeze"}) game:playSoundNear(who, "talents/ice") - game.logSeen(who, "%s invokes the power of Ringil!", who.name:capitalize()) + game.logSeen(who, "%s invokes the power of %s!", who.name:capitalize(), self.name) return true end }, @@ -226,9 +227,9 @@ newEntity{ base = "BASE_RING", } newEntity{ base = "BASE_HELM", - define_as = "HELM_OF_HAMMERHAND", - name = "Steel Helm of Hammerhand", unique=true, - desc = [[A great helm as steady as the heroes of the Westdike. Mighty were the blows of Helm, the Hammerhand!]], + define_as = "HELM_OF_GARKUL", + name = "Steel Helm of Garkul", unique=true, + desc = [[A great helm that belonged to Garkul the Devourer, one of the greatest orcs to live.]], require = { stat = { str=16 }, }, level_range = {12, 22}, rarity = 200, @@ -278,9 +279,9 @@ newEntity{ base = "BASE_SHIELD", } newEntity{ base = "BASE_SHIELD", - define_as = "OLD_MAN_WILLOW_SHIELD", - name = "Old Man Willow's Barkwood", unique=true, - desc = [[The barkwood of the Old Man's Willow, made into roughly the shape of a shield.]], + define_as = "WILLOWRATH_SHIELD", + name = "Willowrath's Barkwood", unique=true, + desc = [[The barkwood of the Willowrath, made into roughly the shape of a shield.]], require = { stat = { str=25 }, }, level_range = {12, 2}, rarity = 200, @@ -575,11 +576,10 @@ newEntity{ base = "BASE_SHIELD", } newEntity{ base = "BASE_WHIP", - define_as = "WHIP_GOTHMOG", + define_as = "WHIP_URH_ROK", unided_name = "fiery whip", - name = "Whip of Gothmog, High Captain of the Balrogs", color=colors.PURPLE, unique = true, - desc = [[With this unbearably bright whip of flame, the Balrog Gothmog has become known for never having lost in combat. -But nothing lasts forever and he was finally defeated by Echtelion in the First Age. His whip must have been taken by the other balrogs from his corpse.]], + name = "Whip of Urh'Rok", color=colors.PURPLE, unique = true, + desc = [[With this unbearably bright whip of flame, the demon master Urh'Rok has become known for never having lost in combat.]], require = { stat = { dex=48 }, }, level_range = {40, 50}, rarity = 390, diff --git a/game/modules/tome/data/quests/orc-hunt.lua b/game/modules/tome/data/quests/orc-hunt.lua index 53b75beb83e2aa8543ead33c61713cdec30930bd..56b51c78d8deb4ba66c4fbd7f8618987e0ec9dbe 100644 --- a/game/modules/tome/data/quests/orc-hunt.lua +++ b/game/modules/tome/data/quests/orc-hunt.lua @@ -21,7 +21,7 @@ name = "Let's hunt some Orc" desc = function(self, who) local desc = {} - desc[#desc+1] = "The elder in Last Hope sent you to the old dwarven kingdom of Reknor, deep under the misty mountains, to investigate the orc presence." + desc[#desc+1] = "The elder in Last Hope sent you to the old dwarven kingdom of Reknor, deep under the Iron Throne, to investigate the orc presence." desc[#desc+1] = "Find out if they are in any way linked to the lost staff." desc[#desc+1] = "But be careful, even the dwarves did not venture in the old halls for many years." return table.concat(desc, "\n") diff --git a/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua b/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua index 087529df423c465444e0594045ce05a91c305783..774b57d50fbc7f1867a1317835fbebf4ee5e7b2a 100644 --- a/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua +++ b/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua @@ -46,7 +46,7 @@ newEntity{ define_as = "GREATER_MUMMY_LORD", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, }, equipment = resolvers.equip{ - {type="weapon", subtype="longsword", defined="LONGSWORD_RINGIL", random_art_replace={chance=75}, autoreq=true}, + {type="weapon", subtype="longsword", defined="LONGSWORD_WINTERTIDE", random_art_replace={chance=75}, autoreq=true}, {type="armor", subtype="shield", ego_chance=100, autoreq=true}, {type="armor", subtype="mummy", ego_chance=100, autoreq=true}, }, diff --git a/game/modules/tome/data/zones/maze/npcs.lua b/game/modules/tome/data/zones/maze/npcs.lua index c87425d0241fc303078fa3682c08be1226874faf..b08eae6449821e32c504c343404cb7fe86848ade 100644 --- a/game/modules/tome/data/zones/maze/npcs.lua +++ b/game/modules/tome/data/zones/maze/npcs.lua @@ -50,7 +50,7 @@ newEntity{ define_as = "MINOTAUR_MAZE", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, }, resolvers.equip{ {type="weapon", subtype="battleaxe", autoreq=true}, - {type="armor", subtype="head", defined="HELM_OF_HAMMERHAND", random_art_replace={chance=75}, autoreq=true}, + {type="armor", subtype="head", defined="HELM_OF_GARKUL", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=5, {ego_chance=100} }, diff --git a/game/modules/tome/data/zones/old-forest/npcs.lua b/game/modules/tome/data/zones/old-forest/npcs.lua index f598f41df4a1006ad952c07d32c130cd70b7ef46..10d58d74a14768be27ee4b0c36221f9b2a6b9da7 100644 --- a/game/modules/tome/data/zones/old-forest/npcs.lua +++ b/game/modules/tome/data/zones/old-forest/npcs.lua @@ -30,15 +30,12 @@ load("/data/general/npcs/all.lua", rarity(4, 35)) local Talents = require("engine.interface.ActorTalents") -- The boss of trollshaws, no "rarity" field means it will not be randomly generated -newEntity{ define_as = "OLD_MAN_WILLOW", +newEntity{ define_as = "WILLOWRATH", type = "giant", subtype = "huorn", unique = true, - name = "Old Man Willow", + name = "Willowrath", display = "#", color=colors.OLIVE_DRAB, desc = [[The ancient grey willow tree, ruler of the Old Forest. He despises - trespassers in his territory. "...a huge willow-tree, old and hoary - Enormous it looked, its sprawling branches going up like racing arms - with may long-fingered hands, its knotted and twisted trunk gaping in - wide fissures that creaked faintly as the boughs moved."]], + trespassers in his territory.]], level_range = {12, 35}, exp_worth = 2, max_life = 200, life_rating = 17, fixed_rating = true, max_stamina = 85, @@ -55,7 +52,7 @@ newEntity{ define_as = "OLD_MAN_WILLOW", resists = { [DamageType.FIRE] = -50 }, body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, - equipment = resolvers.equip{ {type="armor", subtype="shield", defined="OLD_MAN_WILLOW_SHIELD", random_art_replace={chance=75}, autoreq=true}, }, + equipment = resolvers.equip{ {type="armor", subtype="shield", defined="WILLOWRATH_SHIELD", random_art_replace={chance=75}, autoreq=true}, }, drops = resolvers.drops{chance=100, nb=5, {ego_chance=100} }, resolvers.talents{ @@ -91,7 +88,7 @@ newEntity{ define_as = "SNAPROOT", -- backup guardian type = "giant", subtype = "ent", unique = true, name = "Snaproot", display = "#", color=VIOLET, - desc = [[This ancient Ent's bark is scorched almost black. It sees humanity as a scourge, to be purged.]], + desc = [[This ancient Treant's bark is scorched almost black. It sees humanity as a scourge, to be purged.]], level_range = {50, 75}, exp_worth = 3, max_life = 1000, life_rating = 40, fixed_rating = true, diff --git a/game/modules/tome/data/zones/old-forest/zone.lua b/game/modules/tome/data/zones/old-forest/zone.lua index 810d02016384cc85ca9078767f4de2b0689e53fd..92018e96427e11b489a036017daf3813fe956a21 100644 --- a/game/modules/tome/data/zones/old-forest/zone.lua +++ b/game/modules/tome/data/zones/old-forest/zone.lua @@ -48,7 +48,7 @@ return { actor = { class = "engine.generator.actor.Random", nb_npc = {20, 30}, - guardian = "OLD_MAN_WILLOW", + guardian = "WILLOWRATH", }, object = { class = "engine.generator.object.Random", diff --git a/game/modules/tome/data/zones/valley-moon/npcs.lua b/game/modules/tome/data/zones/valley-moon/npcs.lua index e7c19673bcbf6d8bccaa98f9ffeee1d4f70444db..ee1d54bd91f834d681e38dc3ba80373ee08472fa 100644 --- a/game/modules/tome/data/zones/valley-moon/npcs.lua +++ b/game/modules/tome/data/zones/valley-moon/npcs.lua @@ -45,7 +45,7 @@ newEntity{ define_as = "CORRUPTED_BALROG", body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, resolvers.equip{ - {type="weapon", subtype="whip", defined="WHIP_GOTHMOG", random_art_replace={chance=75}, autoreq=true}, + {type="weapon", subtype="whip", defined="WHIP_URH_ROK", random_art_replace={chance=75}, autoreq=true}, }, resolvers.drops{chance=100, nb=3, {ego_chance=100} }, diff --git a/ideas/setting.ods b/ideas/setting.ods index 49f0d1a480d4a726963d7d072c7d7094d52f06af..40bc7f9dfd8ae2f61f1ab0523c71c16abb69970c 100644 Binary files a/ideas/setting.ods and b/ideas/setting.ods differ