Commit 772e73c1f7fa210814b5b508a5bb2548e2f5c93e

Authored by dg
1 parent 2e876d74

The endgame boss zone has been put in its own level, things should not teleport out


git-svn-id: http://svn.net-core.org/repos/t-engine4@2629 51575b47-30f0-44d4-a5cc-537603b46e54
... ... @@ -805,7 +805,8 @@ function _M:useOrbPortal(portal)
805 805
806 806 if portal.on_preuse then portal:on_preuse(self) end
807 807
808   - if portal.teleport_level then
  808 + if portal.nothing then -- nothing
  809 + elseif portal.teleport_level then
809 810 local x, y = util.findFreeGrid(portal.teleport_level.x, portal.teleport_level.y, 2, true, {[Map.ACTOR]=true})
810 811 if x and y then self:move(x, y, true) end
811 812 else
... ...
... ... @@ -36,28 +36,16 @@ defineTile('U', "ORB_UNDEATH", nil, nil, nil, {lite=true, no_teleport=true})
36 36 defineTile('A', "FLOOR", nil, "ELANDAR", nil, {lite=true, no_teleport=true})
37 37 defineTile('P', "FLOOR", nil, "ARGONIEL", nil, {lite=true, no_teleport=true})
38 38
39   -subGenerator{
40   - x = 0, y = 23, w = 50, h = 52,
41   - generator = "engine.generator.map.Roomer",
42   - data = {
43   - nb_rooms = 7,
44   - rooms = {"random_room"},
45   - ['.'] = "FLOOR",
46   - ['#'] = "WALL",
47   - up = "FLOOR",
48   - down = "PORTAL_BOSS",
49   - door = "DOOR",
50   - force_last_stair = true,
51   - },
52   - define_up = true,
53   - define_down = true,
54   -}
55   -
56 39 addSpot({16, 4}, "portal", "demon")
57 40 addSpot({33, 4}, "portal", "dragon")
58 41 addSpot({33, 18}, "portal", "undead")
59 42 addSpot({16, 18}, "portal", "elemental")
60 43
  44 +startx = 25
  45 +starty = 8
  46 +endx = 25
  47 +endy = 8
  48 +
61 49 return [[
62 50 **************************************************
63 51 ******************..............******************
... ... @@ -81,56 +69,4 @@ return [[
81 69 ***********..............#.............***********
82 70 ************..........................************
83 71 ******************..............******************
84   -**************************************************
85   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
86   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
87   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
88   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
89   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
90   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
91   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
92   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
93   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
94   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
95   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
96   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
97   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
98   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
99   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
100   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
101   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
102   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
103   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
104   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
105   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
106   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
107   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
108   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
109   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
110   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
111   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
112   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
113   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
114   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
115   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
116   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
117   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
118   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
119   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
120   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
121   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
122   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
123   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
124   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
125   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
126   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
127   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
128   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
129   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
130   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
131   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
132   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
133   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
134   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
135   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
136   -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]]
  72 +**************************************************]]
... ...
... ... @@ -66,17 +66,6 @@ end
66 66
67 67 function start_end_combat(self)
68 68 local p = game.party:findMember{main=true}
69   - p.entered_level = {x=25, y= 8}
70   -
71   - -- Allow teleporting inside
72   - for i = 11, 38 do for j = 1, 21 do
73   - game.level.map.lites(i, j, true)
74   - game.level.map.attrs(i, j, "no_teleport", false)
75   - end end
76   - -- Forbid teleporting outside
77   - for i = 0, game.level.map.w - 1 do for j = 22, game.level.map.h - 1 do
78   - game.level.map.attrs(i, j, "no_teleport", true)
79   - end end
80 69 game.level.allow_portals = true
81 70 end
82 71
... ...
... ... @@ -158,12 +158,15 @@ newEntity{
158 158 show_tooltip = true,
159 159 desc = [[This portal seems to connect to an other part of this level.]],
160 160 orb_portal = {
161   - teleport_level = {x=25, y=8},
  161 + nothing = true,
162 162 message = "#VIOLET#You enter the swirling portal and appear in a large room with other portals and the two wizards.",
163 163 on_use = function()
  164 + game:changeLevel(16) -- Special level, can not get to it any other way
  165 + if game.player:hasQuest("high-peak"):isCompleted("sanctum-chat") then return end
164 166 local Chat = require "engine.Chat"
165 167 local chat = Chat.new("sorcerer-fight", {name="Elandar"}, game.player)
166 168 chat:invoke()
  169 + game.player:hasQuest("high-peak"):setStatus(engine.Quest.COMPLETED, "sanctum-chat")
167 170 game.player:hasQuest("high-peak"):start_end_combat()
168 171 end,
169 172 },
... ...
... ... @@ -19,6 +19,10 @@
19 19
20 20 return {
21 21 name = "High Peak",
  22 + display_name = function(x, y)
  23 + if game.level.level == 16 then return "High Peak: The Sanctum" end
  24 + return "High Peak ("..game.level.level..")"
  25 + end,
22 26 level_range = {55, 80},
23 27 level_scheme = "player",
24 28 max_level = 15,
... ... @@ -78,14 +82,21 @@ return {
78 82 {
79 83 [15] = {
80 84 generator = {
81   - map = {
82   - class = "engine.generator.map.Static",
83   - map = "zones/high-peak-last",
84   - },
85   - actor = {
86   - nb_npc = {30, 40},
87   - area = {x1=0, x2=49, y1=23, y2=23+50},
88   - },
  85 + map = {
  86 + down = "PORTAL_BOSS",
  87 + force_last_stair = true,
  88 + }
  89 + }
  90 + },
  91 + [16] = {
  92 + generator = {
  93 + map = {
  94 + class = "engine.generator.map.Static",
  95 + map = "zones/high-peak-last",
  96 + },
  97 + actor = {
  98 + nb_npc = {0, 0},
  99 + },
89 100 },
90 101 },
91 102 },
... ...