diff --git a/game/engines/default/engine/Level.lua b/game/engines/default/engine/Level.lua index e0c06618f5fe67e8c22e06523319760b0d4474e0..75f96397162663282770c3e93b03c600a5d5fb45 100644 --- a/game/engines/default/engine/Level.lua +++ b/game/engines/default/engine/Level.lua @@ -160,7 +160,7 @@ function _M:setEntitiesList(type, list, permanent) else self.entities_list[type] = list end - print("Stored entities list", type, list) +-- print("Stored entities list", type, list) end --- Gets an entity list for the level, this allows the Zone to pick objects/actors/... diff --git a/game/engines/default/engine/interface/ActorTalents.lua b/game/engines/default/engine/interface/ActorTalents.lua index 4c21f8bb704f5d08b4729cbb016d577fa389a32f..94fd23a0fda9185b0ee109a110422367f2d98682 100644 --- a/game/engines/default/engine/interface/ActorTalents.lua +++ b/game/engines/default/engine/interface/ActorTalents.lua @@ -263,7 +263,7 @@ end -- @param nb the amount to increase the raw talent level by, default 1 -- @return true if the talent was learnt, nil and an error message otherwise function _M:learnTalent(t_id, force, nb) - print("[TALENT]", self.name, self.uid, "learning", t_id, force, nb) +-- print("[TALENT]", self.name, self.uid, "learning", t_id, force, nb) local t = _M.talents_def[t_id] if not force then diff --git a/game/engines/default/engine/resolvers.lua b/game/engines/default/engine/resolvers.lua index 4896c6c8f34b04aa66a2bb2b3f74c269c4ad2ef5..1e7e270a8066beaf7aa6ec2e44fab550cf878efa 100644 --- a/game/engines/default/engine/resolvers.lua +++ b/game/engines/default/engine/resolvers.lua @@ -86,7 +86,7 @@ function resolvers.calc.talents(t, e) level = level.base lvls = true end - print("Talent resolver for", e.name, ":", tid, "=>", level) +-- print("Talent resolver for", e.name, ":", tid, "=>", level) e:learnTalent(tid, true, level) end if lvls then e._levelup_talents = levelup_talents end @@ -108,7 +108,7 @@ function resolvers.calc.rngtalent(t, e) level = level.base lvls = true end - print("RNG Talent resolver for", e.name, ":", tid, "=>", level) +-- print("RNG Talent resolver for", e.name, ":", tid, "=>", level) e:learnTalent(tid, true, level) if lvls then e._levelup_talents = levelup_talents end diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index bf86bbfb7135aece5341200ce27680c5316af773..c0f11528542a37424682f67415dbc37835046e4a 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -610,7 +610,7 @@ function _M:act() end end if self:attr("stoned") then self.energy.value = 0 end --- if self:attr("dazed") then self.energy.value = 0 end + if self:attr("dont_act") then self.energy.value = 0 end if self:attr("sleep") and not self:attr("lucid_dreamer") then self.energy.value = 0 end if self:attr("time_stun") then self.energy.value = 0 end if self:attr("time_prison") then self.energy.value = 0 end diff --git a/game/modules/tome/class/GameState.lua b/game/modules/tome/class/GameState.lua index 919356aeb0ccc867aa0dcddcfef430fe7748a6dc..a8fdfc7eeb00b811de5586bc3b221f10f1cb1cbe 100644 --- a/game/modules/tome/class/GameState.lua +++ b/game/modules/tome/class/GameState.lua @@ -1007,7 +1007,7 @@ local loot_mod = { local default_drops = function(zone, level, what) if zone.default_drops then return zone.default_drops end local lev = util.bound(math.ceil(zone:level_adjust_level(level, "object") / 10), 1, 5) - print("[TOME ENTITY FILTER] making default loot table for", what, lev) +-- print("[TOME ENTITY FILTER] making default loot table for", what, lev) return table.clone(drop_tables[what][lev]) end @@ -1038,7 +1038,7 @@ function _M:entityFilterAlter(zone, level, type, filter) t = table.clone(t) if _G.type(filter.tome_mod) == "string" then filter.tome_mod = loot_mod[filter.tome_mod] end for k, v in pairs(filter.tome_mod) do - print(" ***** LOOT MOD", k, v) +-- print(" ***** LOOT MOD", k, v) t[k] = (t[k] or 0) * v end end diff --git a/game/modules/tome/class/Grid.lua b/game/modules/tome/class/Grid.lua index 5a04a351e7c28eb4ea43d977f86b15619c989a91..0b2c34744431f6bbfd14b37d2fdc8ae44a034fab 100644 --- a/game/modules/tome/class/Grid.lua +++ b/game/modules/tome/class/Grid.lua @@ -54,6 +54,8 @@ function _M:block_move(x, y, e, act, couldpass) if ret then game.level.map(x, y, engine.Map.TERRAIN, game.zone.grid_list[self.door_opened]) game:playSoundNear({x=x,y=y}, {"ambient/door_creaks/creak_%d",1,4}) + + if game.level.map.attrs(x, y, "vault_id") and e.openVault then e:openVault(game.level.map.attrs(x, y, "vault_id")) end end end, "Open", "Leave") end @@ -64,6 +66,8 @@ function _M:block_move(x, y, e, act, couldpass) else game.level.map(x, y, engine.Map.TERRAIN, game.zone.grid_list[self.door_opened]) game:playSoundNear({x=x,y=y}, {"ambient/door_creaks/creak_%d",1,4}) + + if game.level.map.attrs(x, y, "vault_id") and e.openVault then e:openVault(game.level.map.attrs(x, y, "vault_id")) end end return true elseif self.door_opened and not couldpass then diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua index d00d61c06a9e1596f49a11c76bb0cf133284b05e..4fa241d2fdff0d66548a5213e1319e205ebacb51 100644 --- a/game/modules/tome/class/Player.lua +++ b/game/modules/tome/class/Player.lua @@ -201,6 +201,22 @@ function _M:describeFloor(x, y, force) end end +function _M:openVault(vault_id) + local v = game.level.vaults_list[vault_id] + if not v then return end + + print("Vault id", vault_id, "opens:", v.x, v.y, v.w, v.h) + for i = v.x, v.x + v.w - 1 do for j = v.y, v.y + v.h - 1 do + if game.level.map.attrs(i, j, "vault_id") == vault_id then + game.level.map.attrs(i, j, "vault_id", false) + local act = game.level.map(i, j, Map.ACTOR) + if act and not act.player then + act:removeEffect(act.EFF_VAULTED, true, true) + end + end + end end +end + function _M:move(x, y, force) local ox, oy = self.x, self.y local moved = mod.class.Actor.move(self, x, y, force) @@ -217,6 +233,8 @@ function _M:move(x, y, force) game.level.map.attrs(self.x, self.y, "walked", true) if self.describeFloor then self:describeFloor(self.x, self.y) end + + if not force and game.level.map.attrs(self.x, self.y, "vault_id") and not game.level.map.attrs(self.x, self.y, "vault_only_door_open") then self:openVault(game.level.map.attrs(self.x, self.y, "vault_id")) end end -- if not force and ox == self.x and oy == self.y and self.tryPlayerSlide then diff --git a/game/modules/tome/class/interface/ActorInscriptions.lua b/game/modules/tome/class/interface/ActorInscriptions.lua index 8b483b58748516bf3c8ef94ccbc77dff11d175ad..9234b41506082851f961273d581a145574e1147f 100644 --- a/game/modules/tome/class/interface/ActorInscriptions.lua +++ b/game/modules/tome/class/interface/ActorInscriptions.lua @@ -99,7 +99,7 @@ function _M:setInscription(id, name, data, cooldown, vocal, src, bypass_max_same if src and src.obj then data.item_name = src.obj:getName{do_color=true, no_count=true}:toTString() end self.inscriptions_data[name] = data self.inscriptions[id] = name - print("Inscribing on "..self.name..": "..tostring(name)) +-- print("Inscribing on "..self.name..": "..tostring(name)) self:learnTalent(self["T_"..name], true, 1, {no_unlearn=true}) local t = self:getTalentFromId(self["T_"..name]) if cooldown then self:startTalentCooldown(t) end diff --git a/game/modules/tome/data/maps/vaults/amon-sul-crypt.lua b/game/modules/tome/data/maps/vaults/amon-sul-crypt.lua index f23d93c546e5eb328255e994b599b03fb98edfe7..20b6ab5970911ff3bc682769d4acd5a58af53beb 100644 --- a/game/modules/tome/data/maps/vaults/amon-sul-crypt.lua +++ b/game/modules/tome/data/maps/vaults/amon-sul-crypt.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} defineTile('.', "FLOOR") defineTile('#', "WALL") diff --git a/game/modules/tome/data/maps/vaults/bandit-fortress.lua b/game/modules/tome/data/maps/vaults/bandit-fortress.lua index 7c74cff6d204d8377d92b9480189d34ab2cd6967..298e7a80822638b6e6a8aeaa99681072b47fb942 100644 --- a/game/modules/tome/data/maps/vaults/bandit-fortress.lua +++ b/game/modules/tome/data/maps/vaults/bandit-fortress.lua @@ -18,7 +18,7 @@ -- darkgod@te4.org --bandit fortress -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} rotates = {"default", "90", "180", "270", "flipx", "flipy"} defineTile('%', "WALL") defineTile('.', "FLOOR") diff --git a/game/modules/tome/data/maps/vaults/circle.lua b/game/modules/tome/data/maps/vaults/circle.lua index fddddad503f6ba18571964af877be6a59c63db9d..35349b00320a7affde9a50a10f3299b2e21ac2bb 100644 --- a/game/modules/tome/data/maps/vaults/circle.lua +++ b/game/modules/tome/data/maps/vaults/circle.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} defineTile('.', "FLOOR") defineTile('X', "HARDWALL") diff --git a/game/modules/tome/data/maps/vaults/diggers.lua b/game/modules/tome/data/maps/vaults/diggers.lua index b74b8dc1fc6e50778dc5b7d3a43b42f0dc19de9e..9637fca902ab5bc654c1b04bafd347b2bb412ac2 100644 --- a/game/modules/tome/data/maps/vaults/diggers.lua +++ b/game/modules/tome/data/maps/vaults/diggers.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} defineTile(';', "FLOOR", nil, nil, nil, {room_map={special=false, room=false, can_open=true}}) defineTile('.', "FLOOR") diff --git a/game/modules/tome/data/maps/vaults/dragon_lair.lua b/game/modules/tome/data/maps/vaults/dragon_lair.lua index f261f4f9ab00e1ee920a110f0a57965d0e5bf797..20856126f40f91de75093797404ac220fb870a03 100644 --- a/game/modules/tome/data/maps/vaults/dragon_lair.lua +++ b/game/modules/tome/data/maps/vaults/dragon_lair.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} startx = 25 starty = 6 diff --git a/game/modules/tome/data/maps/vaults/forest-snake-pit.lua b/game/modules/tome/data/maps/vaults/forest-snake-pit.lua index ad9555f99e93571efa6227d3a12452795f9ca032..11a17f932e3233c5312530d21facd8de1d4bf2f3 100644 --- a/game/modules/tome/data/maps/vaults/forest-snake-pit.lua +++ b/game/modules/tome/data/maps/vaults/forest-snake-pit.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} rotates = {"default", "90", "180", "270", "flipx", "flipy"} diff --git a/game/modules/tome/data/maps/vaults/greater-checkerboard.lua b/game/modules/tome/data/maps/vaults/greater-checkerboard.lua index 170f9365ff8f610700c91718cb93c25ef540e99b..1d39a06c6567141806650c649d46f4be5d7f6207 100644 --- a/game/modules/tome/data/maps/vaults/greater-checkerboard.lua +++ b/game/modules/tome/data/maps/vaults/greater-checkerboard.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} defineTile('.', "FLOOR") defineTile('#', "WALL") diff --git a/game/modules/tome/data/maps/vaults/honey_glade.lua b/game/modules/tome/data/maps/vaults/honey_glade.lua index 12c4600e4a05d2734cebc2a73386c7be691ed91b..02b129bb88b0346a71d71a4bf75efb9f723e0a27 100644 --- a/game/modules/tome/data/maps/vaults/honey_glade.lua +++ b/game/modules/tome/data/maps/vaults/honey_glade.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} defineTile('!', "ROCK_VAULT", nil, nil, nil, {room_map={special=false, room=false, can_open=true}}) defineTile(' ', "GRASS") diff --git a/game/modules/tome/data/maps/vaults/horror-chamber.lua b/game/modules/tome/data/maps/vaults/horror-chamber.lua index b7d94185e90a66cef2e12ea91565ba6c38404a2a..3e398f09f599dbdad8942bddef3f4170c4dba29a 100644 --- a/game/modules/tome/data/maps/vaults/horror-chamber.lua +++ b/game/modules/tome/data/maps/vaults/horror-chamber.lua @@ -19,7 +19,7 @@ -- Horror Chamber -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} startx = 2 starty = 1 diff --git a/game/modules/tome/data/maps/vaults/lava_island.lua b/game/modules/tome/data/maps/vaults/lava_island.lua index 088926ca64aa02149a876072aec5cbb5cdd3810e..da3255dddb3f4a5439414145b1210249e49603e5 100644 --- a/game/modules/tome/data/maps/vaults/lava_island.lua +++ b/game/modules/tome/data/maps/vaults/lava_island.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, no_vaulted=true} rotates = {"default", "90", "180", "270", "flipx", "flipy"} diff --git a/game/modules/tome/data/maps/vaults/loot-vault.lua b/game/modules/tome/data/maps/vaults/loot-vault.lua index 33c7b6e454757b4ea6299d76116b957adf2f161b..f86d0268b3e5b2b160abd33881c19dc3c63eae65 100644 --- a/game/modules/tome/data/maps/vaults/loot-vault.lua +++ b/game/modules/tome/data/maps/vaults/loot-vault.lua @@ -16,7 +16,7 @@ -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} rotates = {"default", "90", "180", "270", "flipx", "flipy"} diff --git a/game/modules/tome/data/maps/vaults/mage-hideout.lua b/game/modules/tome/data/maps/vaults/mage-hideout.lua index eba67bd8ecfbf5629f6552bb90a60604817e9ba2..df4c0a37ac14e1fc3064b5d4c870bb8501576fe1 100644 --- a/game/modules/tome/data/maps/vaults/mage-hideout.lua +++ b/game/modules/tome/data/maps/vaults/mage-hideout.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, no_vaulted=true} rotates = {"default", "90", "180", "270", "flipx", "flipy"} diff --git a/game/modules/tome/data/maps/vaults/old-forest-swamp.lua b/game/modules/tome/data/maps/vaults/old-forest-swamp.lua index 6839c069c3a98418d72cf5f9117ba356690ab71c..4c8110f6851371972d472caf13c6ab5ce1b973e5 100644 --- a/game/modules/tome/data/maps/vaults/old-forest-swamp.lua +++ b/game/modules/tome/data/maps/vaults/old-forest-swamp.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, no_vaulted=true} defineTile(',', "GRASS") defineTile(';', "GRASS_DARK1") diff --git a/game/modules/tome/data/maps/vaults/orc-necromancer.lua b/game/modules/tome/data/maps/vaults/orc-necromancer.lua index 7d4673cc1953c5f4c597d7c599dbcdc6dabc524b..bed278b2fde1bbef671a635f6165c791e106fdb3 100644 --- a/game/modules/tome/data/maps/vaults/orc-necromancer.lua +++ b/game/modules/tome/data/maps/vaults/orc-necromancer.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} rotates = {"default", "90", "180", "270", "flipx", "flipy"} defineTile('.', "FLOOR") diff --git a/game/modules/tome/data/maps/vaults/rat-nest.lua b/game/modules/tome/data/maps/vaults/rat-nest.lua index 8b3fc652876e46cee26255f4f79a2ff343a7ecc9..76d176e2daa843f1902e48eea7f090a8d094bc41 100644 --- a/game/modules/tome/data/maps/vaults/rat-nest.lua +++ b/game/modules/tome/data/maps/vaults/rat-nest.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, no_vaulted=true} defineTile('.', "FLOOR") defineTile('D', "DOOR") diff --git a/game/modules/tome/data/maps/vaults/skeleton-mage-cabal.lua b/game/modules/tome/data/maps/vaults/skeleton-mage-cabal.lua index 563e4b66f273f3ea2baeaabb84e02c3a14aeaa0e..36822059a37fabeb0794e431a0a99e3ad84ee930 100644 --- a/game/modules/tome/data/maps/vaults/skeleton-mage-cabal.lua +++ b/game/modules/tome/data/maps/vaults/skeleton-mage-cabal.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} defineTile('.', "FLOOR") defineTile('D', "DOOR") diff --git a/game/modules/tome/data/maps/vaults/spider-den.lua b/game/modules/tome/data/maps/vaults/spider-den.lua index 6d31a6119dd46c385a4aa754281afcb2d23ba2eb..a5bb2e27a03ecf838858ca4f0eed01a082c05075 100644 --- a/game/modules/tome/data/maps/vaults/spider-den.lua +++ b/game/modules/tome/data/maps/vaults/spider-den.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} rotates = {"default", "90", "180", "270", "flipx", "flipy"} startx = 7 starty = 0 diff --git a/game/modules/tome/data/maps/vaults/thief-hideout.lua b/game/modules/tome/data/maps/vaults/thief-hideout.lua index 7f10a540349c782a46311e6aaf3b833d5904bbd9..6aa4c97313f848dc01c6d2ffb7ceb2c57470ee4a 100644 --- a/game/modules/tome/data/maps/vaults/thief-hideout.lua +++ b/game/modules/tome/data/maps/vaults/thief-hideout.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} rotates = {"default", "90", "180", "270", "flipx", "flipy"} diff --git a/game/modules/tome/data/maps/vaults/treasure1.lua b/game/modules/tome/data/maps/vaults/treasure1.lua index 90149ecd586256ecb83b0a262ce0f57dc42148b6..797a2776711a931a915f7ce8326830cbdbe0f6c7 100644 --- a/game/modules/tome/data/maps/vaults/treasure1.lua +++ b/game/modules/tome/data/maps/vaults/treasure1.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} defineTile(';', "FLOOR", nil, nil, nil, {room_map={special=false, room=false, can_open=true}}) defineTile('.', "FLOOR") diff --git a/game/modules/tome/data/maps/vaults/trickvault.lua b/game/modules/tome/data/maps/vaults/trickvault.lua index 28807af6d4f556938b5680f6f769b6646a826bd3..98ebf2df07f00ccc2ae61b07375f5ce1800ebb60 100644 --- a/game/modules/tome/data/maps/vaults/trickvault.lua +++ b/game/modules/tome/data/maps/vaults/trickvault.lua @@ -25,7 +25,6 @@ setStatusAll{no_teleport=true} specialList("terrain", { "/data/general/grids/basic.lua", "/data/general/grids/lava.lua", - "/data/general/grids/.lua", }) defineTile('#', "HARDWALL") diff --git a/game/modules/tome/data/maps/vaults/troll-hideout.lua b/game/modules/tome/data/maps/vaults/troll-hideout.lua index 8acd39334c6c1cf4a6fe57ebb3e8c8b34e8d73a9..18787248b092cc01107c379973d80a1dba3ffdc4 100644 --- a/game/modules/tome/data/maps/vaults/troll-hideout.lua +++ b/game/modules/tome/data/maps/vaults/troll-hideout.lua @@ -17,7 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -setStatusAll{no_teleport=true} +setStatusAll{no_teleport=true, vault_only_door_open=true} rotates = {"default", "90", "180", "270", "flipx", "flipy"} diff --git a/game/modules/tome/data/rooms/greater_vault.lua b/game/modules/tome/data/rooms/greater_vault.lua index e06010327b5539e7bf5e4870d639202e8d64fd31..36d794ef0c65cd3b9afb068145cb8b915d7368da 100644 --- a/game/modules/tome/data/rooms/greater_vault.lua +++ b/game/modules/tome/data/rooms/greater_vault.lua @@ -44,12 +44,27 @@ return function(gen, id, lev, old_lev) local w = vault_map.w local h = vault_map.h return { name="greater_vault-"..vaultid.."-"..w.."x"..h, w=w, h=h, generator = function(self, x, y, is_lit) + gen.level.vaults_list = gen.level.vaults_list or {} + gen.level.vaults_list[#gen.level.vaults_list+1] = {x=x, y=y, w=w, h=h} + local vaultuid = #gen.level.vaults_list + gen.map:import(vault_map, x, y) -- Make it a room, and make it special so that we do not tunnel through for i = x, x + w - 1 do for j = y, y + h - 1 do gen.map.room_map[i][j].special = true gen.map.room_map[i][j].room = id gen.map.attrs(i, j, "no_decay", true) + gen.map.attrs(i, j, "vault_id", vaultuid) + + -- Creatures in vaults dont get to act until it is opened + if not gen.map.attrs(i, j, "no_vaulted") and gen.map.room_map[i][j].add_entities then for _, rm in ipairs(gen.map.room_map[i][j].add_entities) do + if rm[1] == "actor" then + local act = rm[2] + if act and not act.player then + act:setEffect(act.EFF_VAULTED, 1, {}) + end + end + end end end end if vault.gen_map.startx and vault.gen_map.starty then gen.spots[#gen.spots+1] = {x=vault.gen_map.startx + x, y=vault.gen_map.starty + y, check_connectivity="entrance", type="vault", subtype="greater"} diff --git a/game/modules/tome/data/rooms/lesser_vault.lua b/game/modules/tome/data/rooms/lesser_vault.lua index fef77f3eab272f3ea3c87a68c5b75b760af80e2a..6a159f50da5b907faa54e12553cf3c1440e4c4ca 100644 --- a/game/modules/tome/data/rooms/lesser_vault.lua +++ b/game/modules/tome/data/rooms/lesser_vault.lua @@ -41,12 +41,27 @@ return function(gen, id, lev, old_lev) local w = vault_map.w local h = vault_map.h return { name="lesser_vault-"..vaultid.."-"..w.."x"..h, w=w, h=h, generator = function(self, x, y, is_lit) + gen.level.vaults_list = gen.level.vaults_list or {} + gen.level.vaults_list[#gen.level.vaults_list+1] = {x=x, y=y, w=w, h=h} + local vaultuid = #gen.level.vaults_list + gen.map:import(vault_map, x, y) -- Make it a room, and make it special so that we do not tunnel through for i = x, x + w - 1 do for j = y, y + h - 1 do gen.map.room_map[i][j].special = true gen.map.room_map[i][j].room = id gen.map.attrs(i, j, "no_decay", true) + gen.map.attrs(i, j, "vault_id", vaultuid) + + -- Creatures in vaults dont get to act until it is opened + if not gen.map.attrs(i, j, "no_vaulted") and gen.map.room_map[i][j].add_entities then for _, rm in ipairs(gen.map.room_map[i][j].add_entities) do + if rm[1] == "actor" then + local act = rm[2] + if act and not act.player then + act:setEffect(act.EFF_VAULTED, 1, {}) + end + end + end end end end if vault.gen_map.startx and vault.gen_map.starty then gen.spots[#gen.spots+1] = {x=vault.gen_map.startx + x, y=vault.gen_map.starty + y, check_connectivity="entrance", type="vault", subtype="lesser"} diff --git a/game/modules/tome/data/timed_effects/other.lua b/game/modules/tome/data/timed_effects/other.lua index 097d567ca996e9db2829741878a6dacadc686d96..913e27cac26eb7d43059078dd66c9390770773ae 100644 --- a/game/modules/tome/data/timed_effects/other.lua +++ b/game/modules/tome/data/timed_effects/other.lua @@ -2100,3 +2100,23 @@ newEffect{ deactivate = function(self, eff) end, } + +newEffect{ + name = "VAULTED", image = "talents/time_prison.png", + desc = "In Vault", + long_desc = function(self, eff) return "The target is part of a vault and can not act until it has been openend." end, + decrease = 0, no_remove = true, + type = "other", + subtype = { vault=true }, + status = "neutral", + parameters = {}, + activate = function(self, eff) + self:effectTemporaryValue(eff, "invulnerable", 1) + self:effectTemporaryValue(eff, "dont_act", 1) + self:effectTemporaryValue(eff, "no_timeflow", 1) + self:effectTemporaryValue(eff, "status_effect_immune", 1) + self.energy.value = 0 + end, + deactivate = function(self, eff) + end, +} diff --git a/game/modules/tome/data/zones/dreadfell/zone.lua b/game/modules/tome/data/zones/dreadfell/zone.lua index deec144c21235c3031adf0d3aa091a55e84d6f3b..a98324ab2099e7bd00c76e655d1a8b47039a2738 100644 --- a/game/modules/tome/data/zones/dreadfell/zone.lua +++ b/game/modules/tome/data/zones/dreadfell/zone.lua @@ -37,7 +37,7 @@ return { class = "engine.generator.map.Roomer", nb_rooms = 10, rooms = {"random_room", {"money_vault",5}, {"pit",7}, {"greater_vault",8}}, --- rooms = {"random_room", "greater_vault"}, +-- rooms = {"random_room", "lesser_vault"}, -- greater_vaults_list = {"trickvault"}, rooms_config = {pit={filters={{type="undead"}}}}, lite_room_chance = 100, diff --git a/game/modules/tome/resolvers.lua b/game/modules/tome/resolvers.lua index 356232922e96ec68353d3c8a886b7908b0214f3c..7e8bf314f74f8fdbd671ce713eade5f86609b25f 100644 --- a/game/modules/tome/resolvers.lua +++ b/game/modules/tome/resolvers.lua @@ -54,7 +54,6 @@ function resolvers.calc.equip(t, e) if filter.autoreq and rawget(o, "require") and rawget(o, "require").stat then -- print("Autorequire stats") for s, v in pairs(rawget(o, "require").stat) do - print(s,v) if e:getStat(s) < v then e.unused_stats = e.unused_stats - (v - e:getStat(s)) e:incStat(s, v - e:getStat(s)) @@ -67,7 +66,7 @@ function resolvers.calc.equip(t, e) end -- Do not drop it unless it is an ego or better - if not o.unique then o.no_drop = true print(" * "..o.name.." => no drop") end + if not o.unique then o.no_drop = true --[[print(" * "..o.name.." => no drop")]] end if filter.force_drop then o.no_drop = nil end if filter.never_drop then o.no_drop = true end game.zone:addEntity(game.level, o, "object") @@ -215,7 +214,7 @@ function resolvers.calc.store(t, e) return true end e.store = game:getStore(t) - print("[STORE] created for entity", t, e, e.name) +-- print("[STORE] created for entity", t, e, e.name) -- Delete the origin field return nil @@ -442,7 +441,7 @@ function resolvers.calc.sustains_at_birth(_, e) local t = self:getTalentFromId(tid) if t and t.mode == "sustained" then self.energy.value = game.energy_to_act - print("===== activating sustain", self.name, tid) +-- print("===== activating sustain", self.name, tid) self:useTalent(tid) end end