Skip to content
Snippets Groups Projects
Commit b3ad7355 authored by dg's avatar dg
Browse files

nagaevent

git-svn-id: http://svn.net-core.org/repos/t-engine4@5211 51575b47-30f0-44d4-a5cc-537603b46e54
parent b321ce2c
No related branches found
No related tags found
No related merge requests found
......@@ -289,10 +289,10 @@ function _M:makeEntity(level, type, filter, force_level, prob_filter)
-- Generate a specific probability list, slower to generate but no need to "try and be lucky"
elseif filter then
local base_list = nil
if type == "actor" then base_list = self.npc_list
if filter.base_list then base_list = filter.base_list
elseif type == "actor" then base_list = self.npc_list
elseif type == "object" then base_list = self.object_list
elseif type == "trap" then base_list = self.trap_list
elseif filter.base_list then base_list = filter.base_list end
else base_list = self:getEntities(level, type) if not base_list then return nil end end
local list = self:computeRarities(type, base_list, level, function(e) return self:checkFilter(e, filter, type) end, filter.add_levels, filter.special_rarity)
e = self:pickEntity(list)
......
......@@ -1185,7 +1185,7 @@ function _M:setupCommands()
end end,
[{"_g","ctrl"}] = function() if config.settings.cheat then
-- self:registerDialog(require("mod.dialogs.DownloadCharball").new())
local f, err = loadfile("/data/general/events/old-battle-field.lua")
local f, err = loadfile("/data/general/events/naga-portal.lua")
print(f, err)
setfenv(f, setmetatable({level=self.level, zone=self.zone}, {__index=_G}))
print(pcall(f))
......
......@@ -32,8 +32,22 @@ local changer = function(id)
local npcs = mod.class.NPC:loadList{"/data/general/npcs/naga.lua"}
local objects = mod.class.Object:loadList("/data/general/objects/objects.lua")
local terrains = mod.class.Grid:loadList{"/data/general/grids/basic.lua", "/data/general/grids/water.lua"}
terrains.WATER_UP_WILDERNESS.change_level_shift_back = true
terrains.WATER_UP_WILDERNESS.change_zone_auto_stairs = true
terrains.PORTAL_BACK = mod.class.Grid.new{
type = "floor", subtype = "underwater",
display = "&", color = colors.BLUE,
name = "coral invasion portal",
image = "terrain/underwater/subsea_floor_02.png",
add_displays = {mod.class.Grid.new{z=18, image="terrain/naga_portal.png", display_h=2, display_y=-1, embed_particles = {
{name="naga_portal_smoke", rad=2, args={smoke="particles_images/smoke_whispery_bright"}},
{name="naga_portal_smoke", rad=2, args={smoke="particles_images/smoke_heavy_bright"}},
{name="naga_portal_smoke", rad=2, args={smoke="particles_images/smoke_dark"}},
}}},
change_level = 1, change_zone = "wilderness",
change_level_shift_back = true,
change_zone_auto_stairs = true,
does_block_move = true,
pass_projectile = true,
}
local zone = mod.class.Zone.new(id, {
name = "water cavern",
level_range = {zone:level_adjust_level(level, zone, "actor"), zone:level_adjust_level(level, zone, "actor")},
......@@ -51,11 +65,12 @@ local changer = function(id)
class = "engine.generator.map.Cavern",
zoom = 12,
min_floor = 250,
floor = "WATER_FLOOR",
floor = {"WATER_FLOOR","WATER_FLOOR","WATER_FLOOR","WATER_FLOOR","WATER_FLOOR","WATER_FLOOR","WATER_FLOOR","WATER_FLOOR","WATER_FLOOR","WATER_FLOOR","WATER_FLOOR_BUBBLE"},
wall = "WATER_WALL",
up = "WATER_UP",
down = "WATER_DOWN",
up = "WATER_FLOOR",
down = "PORTAL_BACK",
door = "WATER_FLOOR",
force_last_stair = true,
},
actor = {
class = "mod.class.generator.actor.Random",
......@@ -110,7 +125,7 @@ g.block_move = function(self, x, y, who, act, couldpass)
require("engine.ui.Dialog"):yesnoPopup("Coral Portal", "Do you wish to enter the portal or just destroy it?", function(ret)
game.log("#VIOLET#The portal is broken!")
if ret then
if not ret then
self:change_level_check()
end
self.broken = true
......@@ -123,7 +138,9 @@ end
game.zone:addEntity(game.level, g, "terrain", x, y)
local respawn = function(self)
local i, j = util.findFreeGrid(self.naga_portal_x, self.naga_portal_y, 10, true, {[engine.Map.ACTOR]=true})
local portal = game.level.map(self.naga_portal_x, self.naga_portal_y, engine.Map.TERRAIN)
if not portal or portal.broken then return end
local i, j = util.findFreeGrid(self.naga_portal_x, self.naga_portal_y+1, 10, true, {[engine.Map.ACTOR]=true})
if not i then return end
local npcs = mod.class.NPC:loadList{"/data/general/npcs/naga.lua"}
......
......@@ -130,6 +130,7 @@ if tries < 100 then
game:changeLevel(1, self.real_change(self.change_zone), {temporary_zone_shift=true})
self.change_level_check = nil
self.real_change = nil
self.change_level = nil
return true
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment