diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 008357af7e86176043d8c1a7aeae337f20b74f12..cce119af8840cefc00e62bb7a7e24708de578931 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -1819,15 +1819,26 @@ function _M:setupCommands() print("===============") end end, [{"_g","ctrl"}] = function() if config.settings.cheat then - for i in pairs{ - "iron longsword", "steel longsword", "dwarven-steel longsword", "stralite longsword", "voratun longsword", - } do - local o = game.zone:makeEntity(game.level, "object", {name=i}, nil, true) - if o then - o:identify(true) - game.zone:addEntity(game.level, o, "object", game.player.x, game.player.y-1) + local list = {} + local loaded = {} + for i, file in ipairs{"/data/general/objects/objects-maj-eyal.lua", "/data/general/objects/objects-far-east.lua"} do + require("mod.class.Object"):loadList(file, nil, list, nil, loaded) + end + local images = {} + for i, e in ipairs(list) do + if e.unique and not e.randart and not e.lore and type(e.image) == "string" then + print("===== ", e.name, "::", e.image) + images[e.image] = images[e.image] or {} + table.insert(images[e.image], e.name) + end + end + local filter = {} + for i, n in pairs(images) do + if #n > 1 then + filter[i] = n end end + table.print(filter) do return end self:changeLevel(game.level.level + 1) do return end diff --git a/game/modules/tome/class/GameState.lua b/game/modules/tome/class/GameState.lua index 2f90581b30e8d7332f44b29c80301e4729ac8be8..f56bb9f807b0ead0eae989539fa25f6ada5ad1d4 100644 --- a/game/modules/tome/class/GameState.lua +++ b/game/modules/tome/class/GameState.lua @@ -25,6 +25,7 @@ local Map = require "engine.Map" local NameGenerator = require "engine.NameGenerator" local NameGenerator2 = require "engine.NameGenerator2" local Donation = require "mod.dialogs.Donation" +local Dialog = require "engine.ui.Dialog" module(..., package.seeall, class.inherit(engine.Entity)) @@ -2474,10 +2475,11 @@ function _M:infiniteDungeonChallenge(zone, lev, data, id_layout_name, id_grids_n self.id_challenge.count = self.id_challenge.count + 1 local challenges = { - { id = "pacifist", rarity = 3 }, - { id = "exterminator", rarity = 1 }, - { id = "dream-horror", rarity = 10, min_lev = 15 }, - { id = "fast-exit", rarity = 3, min_lev = 8 }, + -- { id = "pacifist", rarity = 3 }, + -- { id = "exterminator", rarity = 1 }, + -- { id = "dream-horror", rarity = 10, min_lev = 15 }, + -- { id = "fast-exit", rarity = 3, min_lev = 8 }, + { id = "near-sighted", rarity = 3, min_lev = 4 }, } self:triggerHook{"InfiniteDungeon:getChallenges", challenges=challenges} @@ -2493,7 +2495,7 @@ function _M:infiniteDungeonChallenge(zone, lev, data, id_layout_name, id_grids_n print("[INFINITE DUNGEON] Selected challenge", data.id_challenge) end -function _M:makeChallengeQuest(level, name, desc, data) +function _M:makeChallengeQuest(level, name, desc, data, alter_effect) local q = { id = "id-challenge-"..level.level, name = "Infinite Dungeon Challenge: "..name.." (Level "..level.level..")", @@ -2528,7 +2530,11 @@ function _M:makeChallengeQuest(level, name, desc, data) table.merge(q, data) local p = game:getPlayer(true) p:grantQuest(q) - game:onTickEnd(function() p:setEffect(p.EFF_ZONE_AURA_CHALLENGE, 1, {id_challenge_quest = q.id}) end) + game:onTickEnd(function() + p:setEffect(p.EFF_ZONE_AURA_CHALLENGE, 1, {id_challenge_quest = q.id}) + local eff = p:hasEffect(p.EFF_ZONE_AURA_CHALLENGE) + if eff and alter_effect then alter_effect(p, eff) end + end) return q end @@ -2614,6 +2620,15 @@ function _M:infiniteDungeonChallengeFinish(zone, level) zone:addEntity(level, m, "actor", x, y) end end + elseif id_challenge == "near-sighted" then + Dialog:yesnoPopup("Challenge: #PURPLE#Near Sighted", "Finish the level with -7 sight range for a reward.", function(r) if not r then + self:makeChallengeQuest(level, "Near Sighted", "Finish the level with -7 sight range.", { + on_exit_check = function(self, who) who:setQuestStatus(self.id, self.COMPLETED) end, + }, function(actor, eff) + actor:effectTemporaryValue(eff, "sight", -7) + end) + + end end, "Refuse", "Accept", true) else self:triggerHook{"InfiniteDungeon:setupChallenge", id_challenge=id_challenge, zone=zone, level=level} end