0
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
1 { Level generating routines. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
2
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
3 {$Q+R+}
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
4
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
5 UNIT Level;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
6
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
7 INTERFACE
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
8 USES Global;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
9
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
10 PROCEDURE GenerateLevel;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
11
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
12 IMPLEMENTATION
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
13
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
14 USES Console, Items, Creature;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
15
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
16 CONST GEN_EMPTY=0; { level generator values }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
17 GEN_DOOR=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
18 GEN_OCCUPY=2;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
19
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
20 TYPE TmpMap=ARRAY[0..MAPXSIZE,0..MAPYSIZE] OF BYTE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
21
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
22 VAR gen: TmpMap;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
23 m: TmpMap;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
24
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
25 PROCEDURE ClearMap;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
26 VAR x,y: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
27 m: pMap;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
28 nothing: TileDef;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
29 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
30 nothing:=FindTile(0);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
31 GetMap(playchr^.x,playchr^.y)^.crt:=NIL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
32 FOR y:=0 TO MAPYSIZE DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
33 FOR x:=0 TO MAPXSIZE DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
34 m:=GetMap(x,y);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
35 IF m^.slt<>NIL THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
36 Dispose(m^.slt);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
37 m^.slt:=NIL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
38 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
39 IF m^.crt<>NIL THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
40 Dispose(m^.crt);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
41 m^.crt:=NIL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
42 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
43 m^.flg:=[];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
44 m^.ter:=nothing;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
45 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
46 allmonsters:=NIL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
47 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
48
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
49 PROCEDURE GenMap;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
50 VAR x,y: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
51 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
52 FOR y:=0 TO MAPYSIZE DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
53 FOR x:=0 TO MAPXSIZE DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
54 GetMap(x,y)^.ter:=FindTile(m[x,y]);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
55 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
56 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
57
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
58 PROCEDURE GenBack(lev: pLevel);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
59 VAR r,i,s,x,y,a,b: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
60 frak: TmpMap;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
61
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
62 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
63 FOR y:=0 TO MAPYSIZE DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
64 FOR x:=0 TO MAPXSIZE DO m[x,y]:=lev^.back[0];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
65 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
66
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
67 PROCEDURE Erode(lev:pLevel);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
68 VAR x,y,r: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
69 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
70 FOR y:=0 TO MAPYSIZE DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
71 FOR x:=0 TO MAPXSIZE DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
72 IF lev^.erosion>Random(100) THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
73 r:=FindTile(m[x,y])^.dst;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
74 IF r>0 THEN m[x,y]:=r;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
75 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
76 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
77
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
78
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
79 PROCEDURE GenLevel(lev:pLevel);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
80
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
81 VAR r,i,j,p,x1,y1,x,y: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
82 door: BYTE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
83 rom: pRoom;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
84 place: BYTE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
85 pmap: tmpmap;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
86 tmpplaces: Places;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
87
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
88 FUNCTION TryRoom(x,y: INTEGER; rom: pRoom): BOOLEAN;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
89 VAR x1,y1: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
90
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
91
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
92 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
93 IF rom=NIL THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
94 TryRoom:=FALSE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
95 FOR y1:=0 TO 15 DO FOR x1:=0 TO 15 DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
96 IF (rom^.map[x1,y1]<>GEN_EMPTY) THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
97 IF (NOT InMap(x+x1,y+y1)) THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
98 IF (gen[x+x1,y+y1]=GEN_OCCUPY) THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
99 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
100 TryRoom:=TRUE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
101 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
102
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
103 PROCEDURE RotateRoom(rom:pRoom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
104 VAR x,y: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
105 tmp: ARRAY[0..15,0..15] OF BYTE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
106 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
107 FOR y:=0 TO 15 DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
108 FOR x:=0 TO 15 DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
109 tmp[x,y]:=rom^.map[y,15-x];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
110 FOR y:=0 TO 15 DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
111 FOR x:=0 TO 15 DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
112 rom^.map[x,y]:=tmp[x,y];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
113 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
114
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
115 PROCEDURE PutDoor(x,y:INTEGER);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
116 VAR p: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
117
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
118 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
119 gen[x,y]:=GEN_OCCUPY;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
120 IF door=0 THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
121 m[x,y]:=door;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
122 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
123
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
124
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
125 PROCEDURE PutRoom(x,y: INTEGER; rom: pRoom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
126 VAR x1,y1: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
127 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
128 IF rom=NIL THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
129 IF tmpplaces[place].qnt>0 THEN Dec(tmpplaces[place].qnt);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
130 door:=tmpplaces[place].dor;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
131 FOR y1:=0 TO 15 DO FOR x1:=0 TO 15 DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
132 IF InMap(x+x1,y+y1) AND (gen[x+x1,y+y1]<>GEN_OCCUPY) THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
133 CASE rom^.map[x1,y1] OF
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
134 GEN_EMPTY: {nothing};
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
135 GEN_OCCUPY: gen[x+x1,y+y1]:=GEN_EMPTY;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
136 GEN_DOOR: IF gen[x+x1,y+y1]=GEN_EMPTY THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
137 gen[x+x1,y+y1]:=GEN_DOOR;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
138 pmap[x+x1,y+y1]:=place;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
139 END ELSE BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
140 IF (ROOM_EASYDOOR IN rom^.flg) AND (gen[x+x1,y+y1]=GEN_DOOR) THEN PutDoor(x+x1,y+y1) ELSE
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
141 gen[x+x1,y+y1]:=GEN_OCCUPY;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
142 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
143 ELSE BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
144 gen[x+x1,y+y1]:=GEN_OCCUPY;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
145 m[x+x1,y+y1]:=rom^.map[x1,y1];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
146 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
147 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
148 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
149 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
150
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
151
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
152 PROCEDURE NextRoom(x,y: INTEGER);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
153 VAR a: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
154 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
155 a:=place;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
156 place:=pmap[x1,y1];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
157 REPEAT
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
158 Inc(a);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
159 IF a>MAXROOMS THEN a:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
160 UNTIL (tmpplaces[place].con[a]<>0) AND (tmpplaces[tmpplaces[place].con[a]].qnt<>0);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
161
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
162 place:=tmpplaces[place].con[a];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
163 rom:=FindRoom(tmpplaces[place].rom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
164
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
165 a:=Random(100);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
166 IF (a<70) THEN RotateRoom(rom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
167 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
168
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
169 PROCEDURE RandomRoom(x,y: INTEGER);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
170 VAR a: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
171 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
172 place:=pmap[x1,y1];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
173 a:=Random(MAXROOMS)+1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
174 WHILE (tmpplaces[place].con[a]=0) OR (tmpplaces[tmpplaces[place].con[a]].qnt=0) DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
175 Inc(a);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
176 IF a>MAXROOMS THEN a:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
177 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
178
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
179 place:=tmpplaces[place].con[a];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
180 rom:=FindRoom(tmpplaces[place].rom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
181
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
182 a:=Random(100);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
183 IF (a<70) THEN RotateRoom(rom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
184 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
185
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
186 FUNCTION PickRoom: BOOLEAN;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
187 VAR i,j,k,l: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
188 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
189 place:=pmap[x1,y1];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
190 door:=tmpplaces[place].dor;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
191
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
192 PickRoom:=FALSE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
193
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
194 IF tmpplaces[place].con[1]=0 THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
195
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
196 { IF (gen[x1+1,y1]<>GEN_EMPTY) AND
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
197 (gen[x1-1,y1]<>GEN_EMPTY) AND
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
198 (gen[x1,y1+1]<>GEN_EMPTY) AND
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
199 (gen[x1,y1-1]<>GEN_EMPTY) THEN Exit;}
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
200
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
201 PickRoom:=TRUE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
202
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
203 RandomRoom(x1,y1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
204
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
205
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
206 FOR k:=1 TO 4 DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
207 x:=Random(15);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
208 y:=Random(15);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
209
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
210 FOR j:=1 TO 2 DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
211 i:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
212 REPEAT
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
213 Inc(x);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
214 IF x>15 THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
215 x:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
216 Inc(y);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
217 IF y>15 THEN y:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
218 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
219 Inc(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
220 IF (i>200) THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
221 NextRoom(x1,y1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
222 x:=Random(15);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
223 y:=Random(15);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
224 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
225 UNTIL (rom^.map[x,y]=GEN_DOOR);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
226 IF TryRoom(x1-x,y1-y,rom) THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
227 RotateRoom(rom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
228 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
229 NextRoom(x1,y1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
230 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
231 PickRoom:=FALSE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
232 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
233
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
234
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
235 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
236 tmpplaces:=lev^.rooms;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
237
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
238 FOR y:=0 TO MAPYSIZE DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
239 FOR x:=0 TO MAPXSIZE DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
240 gen[x,y]:=GEN_EMPTY;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
241 pmap[x,y]:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
242 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
243
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
244 place:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
245 rom:=FindRoom(tmpplaces[place].rom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
246 door:=rom^.dor;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
247
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
248
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
249 Msg('@cTrying first room...');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
250 REPEAT
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
251
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
252 x:=Random(MAPXSIZE);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
253 dec(x,8);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
254 y:=Random(MAPYSIZE);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
255 dec(y,8);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
256 Msg(Concat('@cx=',Num(x),';y=',Num(y)));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
257 UNTIL TryRoom(x,y,rom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
258 Msg('@cPutting first room...');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
259
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
260 PutRoom(x,y,rom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
261
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
262
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
263 Msg('@cFirst room put...');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
264
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
265 REPEAT
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
266
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
267 x1:=Random(MAPXSIZE);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
268 y1:=Random(MAPYSIZE);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
269
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
270 i:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
271 r:=Random(4);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
272 CASE r OF
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
273 0:WHILE gen[x1,y1]<>GEN_DOOR DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
274 Inc(x1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
275 IF x1>MAPXSIZE-1 THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
276 x1:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
277 Inc(y1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
278 IF y1>MAPYSIZE-1 THEN y1:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
279 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
280 Inc(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
281 IF i>MAPXSIZE*MAPYSIZE THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
282
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
283 Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
284 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
285 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
286 1:WHILE gen[x1,y1]<>GEN_DOOR DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
287 Dec(x1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
288 IF x1<1 THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
289 x1:=MAPXSIZE-1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
290 Dec(y1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
291 IF y1<1 THEN y1:=MAPYSIZE-1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
292 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
293 Inc(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
294 IF i>MAPXSIZE*MAPYSIZE THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
295
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
296 Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
297 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
298 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
299 2:WHILE gen[x1,y1]<>GEN_DOOR DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
300 Inc(y1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
301 IF y1>MAPYSIZE-1 THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
302 y1:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
303 Inc(x1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
304 IF x1>MAPXSIZE-1 THEN x1:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
305 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
306 Inc(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
307 IF i>MAPXSIZE*MAPYSIZE THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
308
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
309 Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
310 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
311 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
312 3: WHILE gen[x1,y1]<>GEN_DOOR DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
313 Dec(y1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
314 IF y1<1 THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
315 y1:=MAPYSIZE-1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
316 Dec(x1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
317 IF x1<1 THEN x1:=MAPXSIZE-1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
318 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
319 Inc(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
320 IF i>MAPXSIZE*MAPYSIZE THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
321
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
322 Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
323 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
324 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
325 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
326
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
327 Msg('@cPicking room...');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
328
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
329 IF PickRoom THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
330 Msg('@cPutting room...');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
331 PutDoor(x1,y1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
332 PutRoom(x1-x,y1-y,rom);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
333 END ELSE BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
334 gen[x1,y1]:=GEN_EMPTY;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
335 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
336
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
337 UNTIL FALSE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
338 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
339
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
340
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
341 PROCEDURE GenerateLevel;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
342 VAR x,y,i,a,b: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
343 l: pLevel;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
344 p: pCreat;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
345 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
346 ClearMap;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
347 l:=FindLevel(pc.lev);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
348 Msg(Replace(msgs[12],'@v',l^.name));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
349 GenBack(l);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
350 Msg('@cGenerated back...');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
351 GenLevel(l);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
352 Msg('@cGenerated rooms...');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
353 Erode(l);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
354 Msg('@cEroded...');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
355 GenMap;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
356
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
357 FOR y:=0 TO MAPYSIZE DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
358 FOR x:=0 TO MAPXSIZE DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
359 IF (TILE_ENTER IN GetMap(x,y)^.ter^.flg) THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
360 p:=playchr;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
361 MoveMonster(x,y,p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
362 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
363 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
364 Inc(pc.lev);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
365 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
366
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
367
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
368 END. |