added pristine code from debian 0.90-pa9 package
This commit is contained in:
parent
852e66f9a2
commit
1407a08c17
69
CVS/Entries
Normal file
69
CVS/Entries
Normal file
@ -0,0 +1,69 @@
|
||||
/Makefile/1.9/Mon Aug 27 09:21:25 2001//
|
||||
/Makefile.ami/1.1.1.1/Fri Jun 1 11:59:09 2001//
|
||||
/abyss.c/1.1.1.1/Fri Jun 1 11:59:09 2001//
|
||||
/aux1.c/1.2/Fri Jun 1 16:19:23 2001//
|
||||
/aux2.c/1.2/Mon Aug 27 09:22:37 2001//
|
||||
/aux3.c/1.3/Tue Jun 5 09:58:19 2001//
|
||||
/bank.c/1.2/Tue Jun 5 09:56:14 2001//
|
||||
/buglist.txt/1.3/Mon Aug 27 09:22:56 2001//
|
||||
/char.c/1.2/Mon Jun 4 11:14:28 2001//
|
||||
/city.c/1.1.1.1/Fri Jun 1 11:59:10 2001//
|
||||
/command1.c/1.1.1.1/Fri Jun 1 11:59:10 2001//
|
||||
/command2.c/1.2/Mon Aug 27 09:29:35 2001//
|
||||
/command3.c/1.2/Mon Aug 27 09:25:08 2001//
|
||||
/compress.c/1.2/Mon Aug 27 09:47:44 2001//
|
||||
/country.c/1.2/Mon Aug 27 09:22:06 2001//
|
||||
/defs.h/1.6/Thu Aug 23 11:41:11 2001//
|
||||
/effect1.c/1.4/Mon Aug 27 09:29:35 2001//
|
||||
/effect2.c/1.1.1.1/Fri Jun 1 11:59:13 2001//
|
||||
/effect3.c/1.2/Mon Aug 27 09:29:35 2001//
|
||||
/env.c/1.1.1.1/Fri Jun 1 11:59:13 2001//
|
||||
/etc.c/1.1.1.1/Fri Jun 1 11:59:13 2001//
|
||||
/extern.h/1.5/Tue Jun 12 13:32:37 2001//
|
||||
/file.c/1.5/Mon Aug 27 09:29:35 2001//
|
||||
/fixstr.c/1.1.1.1/Fri Jun 1 11:59:14 2001//
|
||||
/gen1.c/1.2/Mon Aug 27 09:30:52 2001//
|
||||
/gen2.c/1.2/Mon Aug 27 09:29:35 2001//
|
||||
/genclr.c/1.4/Mon Aug 27 09:29:35 2001//
|
||||
/glob.h/1.3/Mon Aug 27 09:24:27 2001//
|
||||
/guild1.c/1.2/Tue Jun 5 09:57:38 2001//
|
||||
/guild2.c/1.1.1.1/Fri Jun 1 11:59:15 2001//
|
||||
/house.c/1.1.1.1/Fri Jun 1 11:59:15 2001//
|
||||
/iinit.h/1.2/Mon Jun 4 11:11:36 2001//
|
||||
/init.c/1.1.1.1/Fri Jun 1 11:59:15 2001//
|
||||
/inv.c/1.5/Mon Aug 27 09:29:35 2001//
|
||||
/item.c/1.2/Mon Jun 4 11:13:49 2001//
|
||||
/itemf1.c/1.2/Mon Aug 27 09:29:35 2001//
|
||||
/itemf2.c/1.1.1.1/Fri Jun 1 11:59:16 2001//
|
||||
/itemf3.c/1.1.1.1/Fri Jun 1 11:59:16 2001//
|
||||
/lev.c/1.2/Mon Aug 27 09:29:35 2001//
|
||||
/map.c/1.1.1.1/Fri Jun 1 11:59:17 2001//
|
||||
/minit.h/1.1.1.1/Fri Jun 1 11:59:17 2001//
|
||||
/mmelee.c/1.1.1.1/Fri Jun 1 11:59:17 2001//
|
||||
/mmove.c/1.1.1.1/Fri Jun 1 11:59:17 2001//
|
||||
/mon.c/1.1.1.1/Fri Jun 1 11:59:18 2001//
|
||||
/move.c/1.1.1.1/Fri Jun 1 11:59:18 2001//
|
||||
/movef.c/1.1.1.1/Fri Jun 1 11:59:18 2001//
|
||||
/mspec.c/1.3/Mon Aug 27 09:29:35 2001//
|
||||
/mstrike.c/1.1.1.1/Fri Jun 1 11:59:18 2001//
|
||||
/mtalk.c/1.1.1.1/Fri Jun 1 11:59:19 2001//
|
||||
/newrand.c/1.1.1.1/Fri Jun 1 11:59:19 2001//
|
||||
/oldsave.h/1.1.1.1/Fri Jun 1 11:59:19 2001//
|
||||
/omega.ad/1.1.1.1/Fri Jun 1 11:59:19 2001//
|
||||
/omega.bug/1.1.1.1/Fri Jun 1 11:59:19 2001//
|
||||
/omega.bug2/1.1.1.1/Fri Jun 1 11:59:19 2001//
|
||||
/omega.c/1.2/Tue Jun 5 09:57:38 2001//
|
||||
/pdump.c/1.3/Mon Jun 4 11:09:52 2001//
|
||||
/priest.c/1.1.1.1/Fri Jun 1 11:59:20 2001//
|
||||
/save.c/1.4/Mon Aug 27 09:29:35 2001//
|
||||
/scr.c/1.10/Mon Aug 27 09:29:35 2001//
|
||||
/site1.c/1.2/Mon Jun 4 11:13:09 2001//
|
||||
/site2.c/1.1.1.1/Fri Jun 1 11:59:21 2001//
|
||||
/spell.c/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/stats.c/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/test.c/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/time.c/1.2/Tue Jun 5 09:57:38 2001//
|
||||
/trap.c/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/util.c/1.2/Mon Aug 27 09:23:58 2001//
|
||||
/village.c/1.2/Mon Aug 27 09:29:35 2001//
|
||||
D
|
3
CVS/Entries.Log
Normal file
3
CVS/Entries.Log
Normal file
@ -0,0 +1,3 @@
|
||||
A D/docs////
|
||||
A D/lib////
|
||||
A D/tools////
|
1
CVS/Repository
Normal file
1
CVS/Repository
Normal file
@ -0,0 +1 @@
|
||||
omega-roguelike/omega
|
1
CVS/Root
Normal file
1
CVS/Root
Normal file
@ -0,0 +1 @@
|
||||
:pserver:anonymous@cvs.omega-roguelike.sourceforge.net:/cvsroot/omega-roguelike
|
110
Makefile
Normal file
110
Makefile
Normal file
@ -0,0 +1,110 @@
|
||||
### These two definitions are used if you 'make install'
|
||||
### the value of LIBDIR should be the same as OMEGALIB in defs.h
|
||||
BINDIR = ./omega/
|
||||
LIBDIR = ./lib/
|
||||
|
||||
### choose your optimization level
|
||||
OFLAGS = -O2
|
||||
|
||||
### One of these should be uncommented, as appropriate, unless your compiler
|
||||
### does it for you. You can test this by simply trying to 'make' omega -
|
||||
### it will fail if none of them are defined. If you do uncomment
|
||||
### one, make sure you comment out the other definition of CFLAGS lower down
|
||||
|
||||
CFLAGS = -ggdb -Wall $(OFLAGS) -DBSD # -ansi
|
||||
#CFLAGS = -DSYSV $(OFLAGS)
|
||||
#CFLAGS = -DMSDOS $(OFLAGS)
|
||||
#CFLAGS = -DAMIGA $(OFLAGS)
|
||||
|
||||
### CPP should contain the command to run the C preprocessor.
|
||||
#CPP = cc -E
|
||||
#CPP = /lib/cpp
|
||||
CPP = gcc -E
|
||||
|
||||
### define a compiler
|
||||
CC = gcc
|
||||
|
||||
### Select one of the following that is appropriate for your curses...
|
||||
### Comment ALL of them out if you are using opcurses
|
||||
#LIBS = -lncurses -ltermcap
|
||||
#LIBS = -lcurses -ltermlib
|
||||
#LIBS = -lpdcurses
|
||||
#Linux links in term?? automatically.
|
||||
#LIBS = -lncurses
|
||||
|
||||
### uncomment to use "op-curses" package
|
||||
OPDEF = -DUSE_OPCURSES
|
||||
CUROBJ = ../opcurses/curses.o ../opcurses/curgtk.o
|
||||
|
||||
### uncomment to compile using opcurses GTK+ driver
|
||||
CPPFLAGS = `gtk-config --cflags` -DUSE_OPCURSES
|
||||
LDFLAGS = `gtk-config --libs`
|
||||
|
||||
#################### that's it for changing the Makefile ####################
|
||||
|
||||
OLIBSTUFF = tools/libsrc/maps.dat lib/maps.dat
|
||||
|
||||
TOOLS = tools/crypt tools/decrypt tools/makedate
|
||||
|
||||
CLROBJ = clrgen.o
|
||||
|
||||
OBJ = omega.o abyss.o aux1.o aux2.o aux3.o bank.o char.o city.o\
|
||||
command1.o command2.o command3.o country.o date.o effect1.o\
|
||||
effect2.o effect3.o etc.o env.o file.o gen1.o gen2.o guild1.o guild2.o\
|
||||
house.o init.o inv.o item.o itemf1.o itemf2.o itemf3.o lev.o map.o\
|
||||
mmelee.o mmove.o mon.o move.o movef.o mspec.o mstrike.o mtalk.o\
|
||||
newrand.o priest.o pdump.o save.o scr.o site1.o site2.o spell.o\
|
||||
stats.o time.o trap.o util.o village.o
|
||||
|
||||
all: maps.dat omega
|
||||
|
||||
omega: $(CUROBJ) $(CLROBJ) $(OBJ)
|
||||
$(CC) $(LDFLAGS) $(OFLAGS) $(CUROBJ) $(CLROBJ) $(OBJ) $(LIBS) -o omega
|
||||
rm date.c date.o
|
||||
|
||||
date.c:
|
||||
tools/makedate > date.c
|
||||
|
||||
maps.dat:
|
||||
cd tools; make
|
||||
cd tools/libsrc; make maps.dat
|
||||
|
||||
install: omega maps.dat $(BINDIR) $(LIBDIR)
|
||||
cp omega $(BINDIR)
|
||||
chmod 4711 $(BINDIR)/omega
|
||||
- cp lib/* $(LIBDIR)
|
||||
cp maps.dat $(LIBDIR)
|
||||
chmod 0644 $(LIBDIR)/help*.txt $(LIBDIR)/license.txt $(LIBDIR)/motd.txt $(LIBDIR)/thanks.txt $(LIBDIR)/update.txt
|
||||
chmod 0600 $(LIBDIR)/abyss.txt $(LIBDIR)/scroll[1234].txt $(LIBDIR)/maps.dat
|
||||
chmod 0600 $(LIBDIR)/omega.hi $(LIBDIR)/omega.log $(LIBDIR)/omegahi.bak
|
||||
|
||||
install_not_suid: omega maps.dat $(BINDIR) $(LIBDIR)
|
||||
cp omega $(BINDIR)
|
||||
chmod 0711 $(BINDIR)/omega
|
||||
- cp lib/* $(LIBDIR)
|
||||
cp maps.dat $(LIBDIR)
|
||||
chmod 0644 $(LIBDIR)/help*.txt $(LIBDIR)/license.txt $(LIBDIR)/motd.txt $(LIBDIR)/thanks.txt $(LIBDIR)/update.txt
|
||||
chmod 0644 $(LIBDIR)/abyss.txt $(LIBDIR)/scroll[1234].txt $(LIBDIR)/*.dat
|
||||
chmod 0666 $(LIBDIR)/omega.hi $(LIBDIR)/omega.log
|
||||
chmod 0600 $(LIBDIR)/omegahi.bak
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ) clrgen.h clrgen.c genclr.o genclr omega
|
||||
|
||||
distclean:
|
||||
rm -f $(OBJ) $(CUROBJ) $(TOOLS) $(OLIBSTUFF) clrgen.h clrgen.c genclr.o genclr omega
|
||||
cp lib/omega.hi.backup lib/omega.hi
|
||||
cp lib/omega.log.backup lib/omega.log
|
||||
|
||||
$(CUROBJ): ../opcurses/curses.h ../opcurses/cmacros.h ../opcurses/xcurses.h
|
||||
|
||||
$(CLROBJ): clrgen.h
|
||||
|
||||
$(OBJ): defs.h extern.h glob.h iinit.h minit.h clrgen.h
|
||||
|
||||
clrgen.h clrgen.c: genclr.c minit.h defs.h
|
||||
$(MAKE) genclr
|
||||
$(CPP) $(OPDEF) -DOMEGA_CLRGEN *.[ch] | ./genclr clrgen.c clrgen.h
|
||||
|
||||
genclr: genclr.o
|
||||
$(CC) $(LDFLAGS) genclr.o -o genclr
|
46
Makefile.ami
Normal file
46
Makefile.ami
Normal file
@ -0,0 +1,46 @@
|
||||
# If you have gcc and don't intend to hack around with the game,
|
||||
# I recommend setting CC to gcc and using -O (as the CFLAGS).
|
||||
|
||||
CFLAGS = -O
|
||||
LDFLAGS = -s
|
||||
CC = gcc
|
||||
|
||||
LIBS = -lc -lcurses -lamiga
|
||||
|
||||
#################### that's it for changing the Makefile ####################
|
||||
|
||||
OBJ = omega.o abyss.o aux1.o aux2.o aux3.o char.o city.o\
|
||||
command1.o command2.o command3.o compress.o\
|
||||
country.o effect1.o effect2.o effect3.o\
|
||||
etc.o env.o file.o gen1.o gen2.o guild1.o guild2.o house.o\
|
||||
init.o inv.o item.o itemf1.o itemf2.o itemf3.o lev.o\
|
||||
mmelee.o mmove.o mon.o move.o movef.o mspec.o\
|
||||
mstrike.o mtalk.o priest.o\
|
||||
save.o scr.o site1.o site2.o\
|
||||
spell.o time.o trap.o util.o village.o
|
||||
|
||||
omega: $(OBJ)
|
||||
$(CC) $(LDFLAGS) $(OBJ) $(LIBS) -o omega
|
||||
|
||||
install: omega $(BINDIR) $(LIBDIR)
|
||||
cp omega $(BINDIR)
|
||||
chmod 4711 $(BINDIR)/omega
|
||||
- cp ../omegalib/* $(LIBDIR)
|
||||
chmod 0644 $(LIBDIR)/help*.txt $(LIBDIR)/license.txt $(LIBDIR)/motd.txt $(LIBDIR)/thanks.txt $(LIBDIR)/update.txt
|
||||
chmod 0600 $(LIBDIR)/abyss.txt $(LIBDIR)/scroll[1234].txt $(LIBDIR)/*.dat
|
||||
chmod 0600 $(LIBDIR)/omega.hi $(LIBDIR)/omega.log $(LIBDIR)/omegahi.bak
|
||||
|
||||
install_not_suid: omega $(BINDIR) $(LIBDIR)
|
||||
cp omega $(BINDIR)
|
||||
chmod 0711 $(BINDIR)/omega
|
||||
- cp ../omegalib/* $(LIBDIR)
|
||||
chmod 0644 $(LIBDIR)/help*.txt $(LIBDIR)/license.txt $(LIBDIR)/motd.txt $(LIBDIR)/thanks.txt $(LIBDIR)/update.txt
|
||||
chmod 0644 $(LIBDIR)/abyss.txt $(LIBDIR)/scroll[1234].txt $(LIBDIR)/*.dat
|
||||
chmod 0666 $(LIBDIR)/omega.hi $(LIBDIR)/omega.log
|
||||
chmod 0600 $(LIBDIR)/omegahi.bak
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ)
|
||||
rm -i omega
|
||||
|
||||
$(OBJ): defs.h extern.h glob.h
|
212
abyss.c
Normal file
212
abyss.c
Normal file
@ -0,0 +1,212 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* abyss.c */
|
||||
/* some functions to make the abyss level and run the final challenge */
|
||||
|
||||
#ifdef MSDOS_SUPPORTED_ANTIQUE
|
||||
#include <sys/types.h>
|
||||
#include <malloc.h>
|
||||
#ifdef SAVE_LEVELS
|
||||
#include <sys/timeb.h>
|
||||
#include <dos.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
/* loads the abyss level into Level*/
|
||||
void load_abyss(void)
|
||||
{
|
||||
int i,j;
|
||||
char site;
|
||||
map *abyss;
|
||||
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
|
||||
clear_level(Level);
|
||||
|
||||
abyss = map_open(MAP_abyss);
|
||||
map_setLevel(abyss,0);
|
||||
Level->level_width = map_getWidth(abyss);
|
||||
Level->level_length = map_getLength(abyss);
|
||||
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
site = map_getSiteChar(abyss,i,j);
|
||||
Level->site[i][j].roomnumber = RS_ADEPT;
|
||||
switch(site) {
|
||||
case '0':
|
||||
Level->site[i][j].locchar = VOID_CHAR;
|
||||
Level->site[i][j].p_locf = L_VOID;
|
||||
break;
|
||||
case 'V':
|
||||
Level->site[i][j].locchar = VOID_CHAR;
|
||||
Level->site[i][j].p_locf = L_VOID_STATION;
|
||||
break;
|
||||
case '1':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_VOICE1;
|
||||
break;
|
||||
case '2':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_VOICE2;
|
||||
break;
|
||||
case '3':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_VOICE3;
|
||||
break;
|
||||
case '~':
|
||||
Level->site[i][j].locchar = WATER;
|
||||
Level->site[i][j].p_locf = L_WATER_STATION;
|
||||
break;
|
||||
case ';':
|
||||
Level->site[i][j].locchar = FIRE;
|
||||
Level->site[i][j].p_locf = L_FIRE_STATION;
|
||||
break;
|
||||
case '"':
|
||||
Level->site[i][j].locchar = HEDGE;
|
||||
Level->site[i][j].p_locf = L_EARTH_STATION;
|
||||
break;
|
||||
case '6':
|
||||
Level->site[i][j].locchar = WHIRLWIND;
|
||||
Level->site[i][j].p_locf = L_AIR_STATION;
|
||||
break;
|
||||
case '#':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
break;
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
map_close(abyss);
|
||||
}
|
||||
|
||||
|
||||
#ifdef SAVE_LEVELS
|
||||
/* This stuff is in this file because the file was really small. */
|
||||
|
||||
void msdos_init(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Allocate the inner level of pointers for TheLevel */
|
||||
for (i = 0; i < MAXWIDTH; i++)
|
||||
TheLevel.site[i] = (plc)checkmalloc(MAXLENGTH * sizeof(loctype));
|
||||
|
||||
/* Remove old level files */
|
||||
kill_all_levels();
|
||||
}
|
||||
|
||||
void kill_all_levels(void)
|
||||
{
|
||||
kill_levels("om*.lev");
|
||||
}
|
||||
|
||||
void kill_levels(char *str)
|
||||
{
|
||||
int i;
|
||||
struct find_t buf;
|
||||
|
||||
/* Remove old level files laying around */
|
||||
sprintf(Str1,"%s%s",Omegalib,str);
|
||||
for (i = _dos_findfirst(Str1,_A_NORMAL,&buf); !i; i = _dos_findnext(&buf))
|
||||
{
|
||||
sprintf(Str2,"%s%s",Omegalib,buf.name);
|
||||
remove(Str2);
|
||||
}
|
||||
}
|
||||
|
||||
#define MEM_CHECK_AMOUNT 0xf000
|
||||
void check_memory(void)
|
||||
{
|
||||
char *mems[50];
|
||||
long amount = 0;
|
||||
int num_mems = 0;
|
||||
unsigned try;
|
||||
|
||||
sprintf(Str1,"Heapchk returned %d.",_heapchk());
|
||||
mprint(Str1);
|
||||
|
||||
try = MEM_CHECK_AMOUNT;
|
||||
while (try > 10000)
|
||||
{
|
||||
while (try > 0 && (mems[num_mems] = checkmalloc(try)) == NULL)
|
||||
try -= 0x400;
|
||||
amount += try;
|
||||
num_mems++;
|
||||
}
|
||||
while (--num_mems >= 0)
|
||||
if (mems[num_mems] != NULL)
|
||||
free(mems[num_mems]);
|
||||
|
||||
sprintf(Str1,"Free mem approx %dK",(int)(amount / 0x400));
|
||||
mprint(Str1);
|
||||
}
|
||||
|
||||
static FILE *open_levfile(int env, int depth, int rw)
|
||||
{
|
||||
sprintf(Str1,"%som%03d%03d.lev",Omegalib,env,depth);
|
||||
return(fopen(Str1,(rw) ? "wb" : "rb"));
|
||||
}
|
||||
|
||||
/* Saves oldlevel (unless NULL), and reads in the new level,
|
||||
unless depth is < 0. */
|
||||
plv msdos_changelevel(plv oldlevel, int newenv, int newdepth)
|
||||
{
|
||||
FILE *fp;
|
||||
|
||||
if (oldlevel != NULL)
|
||||
{
|
||||
if (oldlevel->environment == newenv &&
|
||||
oldlevel->depth == newdepth)
|
||||
return(oldlevel);
|
||||
if ((fp = open_levfile(oldlevel->environment,oldlevel->depth,1)) != NULL)
|
||||
{
|
||||
save_level(fp,oldlevel);
|
||||
fclose(fp);
|
||||
}
|
||||
else
|
||||
mprint("Cannot save level!!!");
|
||||
/* Free up monsters and items */
|
||||
free_level(oldlevel);
|
||||
}
|
||||
if (newdepth >= 0)
|
||||
{
|
||||
if ((fp = open_levfile(newenv,newdepth,0)) == NULL)
|
||||
return(NULL);
|
||||
restore_level(fp);
|
||||
fclose(fp);
|
||||
return(Level);
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef DJGPP
|
||||
|
||||
void check_memory(void)
|
||||
{
|
||||
clear_screen();
|
||||
print1("There should be over 300 K free on the drive.");
|
||||
print2("Save _before_ the free space gets below 300 K.");
|
||||
morewait();
|
||||
system("dir");
|
||||
morewait();
|
||||
clear_screen();
|
||||
xredraw();
|
||||
}
|
||||
#endif
|
972
aux1.c
Normal file
972
aux1.c
Normal file
@ -0,0 +1,972 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* aux1.c */
|
||||
/* auxiliary functions for those in com.c, also see aux2.c and aux3.c */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
|
||||
/* check to see if too much tunneling has been done in this level */
|
||||
void tunnelcheck(void)
|
||||
{
|
||||
if ((Level->depth == 0 && Current_Environment != E_DLAIR) ||
|
||||
Current_Environment == E_ASTRAL)
|
||||
return;
|
||||
Level->tunnelled++;
|
||||
if ((Level->tunnelled) > (Level->level_length)/4)
|
||||
mprint("Dust and stone fragments fall on you from overhead.");
|
||||
if ((Level->tunnelled) >(Level->level_length)/2)
|
||||
mprint("You hear groaning and creaking noises.");
|
||||
if ((Level->tunnelled) > (3*(Level->level_length))/4)
|
||||
mprint("The floor trembles and you hear a loud grinding screech.");
|
||||
if ((Level->tunnelled) > Level->level_length) {
|
||||
mprint("With a scream of tortured stone, the entire dungeon caves in!!!");
|
||||
gain_experience(5000);
|
||||
if (Player.status[SHADOWFORM]) {
|
||||
change_environment(E_COUNTRYSIDE);
|
||||
switch (Country[Player.x][Player.y].base_terrain_type)
|
||||
{
|
||||
case CASTLE:
|
||||
case STARPEAK:
|
||||
case CAVES:
|
||||
case VOLCANO:
|
||||
Country[Player.x][Player.y].current_terrain_type = MOUNTAINS;
|
||||
break;
|
||||
case DRAGONLAIR:
|
||||
Country[Player.x][Player.y].current_terrain_type = DESERT;
|
||||
break;
|
||||
case MAGIC_ISLE:
|
||||
Country[Player.x][Player.y].current_terrain_type = CHAOS_SEA;
|
||||
break;
|
||||
case PALACE:
|
||||
Country[Player.x][Player.y].current_terrain_type = JUNGLE;
|
||||
break;
|
||||
}
|
||||
Country[Player.x][Player.y].base_terrain_type =
|
||||
Country[Player.x][Player.y].current_terrain_type;
|
||||
c_set(Player.x, Player.y, CHANGED);
|
||||
print1("In your shadowy state, you float back up to the surface.");
|
||||
return;
|
||||
}
|
||||
mprint("You are flattened into an unpleasant jellylike substance.");
|
||||
p_death("dungeon cave-in");
|
||||
}
|
||||
}
|
||||
|
||||
/* displays a room's name */
|
||||
void showroom(int i)
|
||||
{
|
||||
strcpy(Str1,"");
|
||||
strcpy(Str2,"");
|
||||
switch(Current_Environment) {
|
||||
case E_MANSION:
|
||||
strcpy(Str2,"A luxurious mansion: ");
|
||||
break;
|
||||
case E_HOUSE:
|
||||
strcpy(Str2,"A house: ");
|
||||
break;
|
||||
case E_HOVEL:
|
||||
strcpy(Str2,"A hovel: ");
|
||||
break;
|
||||
case E_CITY:
|
||||
strcpy(Str2,"The City of Rampart");
|
||||
break;
|
||||
case E_VILLAGE:
|
||||
switch(Villagenum) {
|
||||
case 1: strcpy(Str2,"The Village of Star View"); break;
|
||||
case 2: strcpy(Str2,"The Village of Woodmere"); break;
|
||||
case 3: strcpy(Str2,"The Village of Stormwatch"); break;
|
||||
case 4: strcpy(Str2,"The Village of Thaumaris"); break;
|
||||
case 5: strcpy(Str2,"The Village of Skorch"); break;
|
||||
case 6: strcpy(Str2,"The Village of Whorfen"); break;
|
||||
}
|
||||
break;
|
||||
case E_CAVES:
|
||||
strcpy(Str2,"The Goblin Caves: ");
|
||||
break;
|
||||
case E_CASTLE:
|
||||
strcpy(Str2,"The Archmage's Castle: ");
|
||||
break;
|
||||
case E_ASTRAL:
|
||||
strcpy(Str2,"The Astral Plane: ");
|
||||
break;
|
||||
case E_VOLCANO:
|
||||
strcpy(Str2,"The Volcano: ");
|
||||
break;
|
||||
case E_PALACE:
|
||||
strcpy(Str2,"The Palace Dungeons: ");
|
||||
break;
|
||||
case E_SEWERS:
|
||||
strcpy(Str2,"The Sewers: ");
|
||||
break;
|
||||
case E_TACTICAL_MAP:
|
||||
strcpy(Str2,"The Tactical Map ");
|
||||
break;
|
||||
default:
|
||||
strcpy(Str2,"");
|
||||
break;
|
||||
}
|
||||
if (Current_Environment == Current_Dungeon) {
|
||||
strcpy(Str1,"Level ");
|
||||
if (Level->depth < 10) {
|
||||
Str1[6] = Level->depth + '0';
|
||||
Str1[7] = 0;
|
||||
}
|
||||
else {
|
||||
Str1[6] = (Level->depth / 10) + '0';
|
||||
Str1[7] = (Level->depth % 10) + '0';
|
||||
Str1[8] = 0;
|
||||
}
|
||||
strcat(Str1," (");
|
||||
strcat(Str1,roomname(i));
|
||||
strcat(Str1,")");
|
||||
}
|
||||
else if (strlen(Str2) == 0 || Current_Environment == E_MANSION ||
|
||||
Current_Environment == E_HOUSE || Current_Environment == E_HOVEL)
|
||||
strcpy(Str1,roomname(i));
|
||||
strcat(Str2,Str1);
|
||||
locprint(Str2);
|
||||
}
|
||||
|
||||
|
||||
int player_on_sanctuary(void)
|
||||
{
|
||||
if ((Player.x==Player.sx) &&
|
||||
(Player.y==Player.sy))
|
||||
return(TRUE);
|
||||
else {
|
||||
if (Player.patron) {
|
||||
if ((Level->site[Player.x][Player.y].locchar == ALTAR) &&
|
||||
(Level->site[Player.x][Player.y].aux == Player.patron))
|
||||
return(TRUE);
|
||||
else return(FALSE);
|
||||
}
|
||||
else return(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* check a move attempt, maybe attack something, return TRUE if ok to move. */
|
||||
/* x y is the proposed place to move to */
|
||||
int p_moveable(int x, int y)
|
||||
{
|
||||
setgamestatus(SKIP_MONSTERS);
|
||||
if (! inbounds(x,y)) return (FALSE);
|
||||
else if (Player.status[SHADOWFORM]) {
|
||||
switch(Level->site[x][y].p_locf) {
|
||||
case L_CHAOS: case L_ABYSS: case L_VOID:
|
||||
return cinema_confirm("That looks dangerous.") == 'y';
|
||||
default:
|
||||
resetgamestatus(SKIP_MONSTERS);
|
||||
return(TRUE);
|
||||
}
|
||||
}
|
||||
else if (loc_statusp(x,y,SECRET)) {
|
||||
if (!gamestatusp(FAST_MOVE)) print3("Ouch!");
|
||||
return(FALSE);
|
||||
}
|
||||
else if (Level->site[x][y].creature != NULL) {
|
||||
if (! gamestatusp(FAST_MOVE)) {
|
||||
fight_monster(Level->site[x][y].creature);
|
||||
resetgamestatus(SKIP_MONSTERS);
|
||||
return(FALSE);
|
||||
}
|
||||
else return(FALSE);
|
||||
}
|
||||
else if ((Level->site[x][y].locchar == WALL) ||
|
||||
(Level->site[x][y].locchar == STATUE) ||
|
||||
(Level->site[x][y].locchar == PORTCULLIS) ||
|
||||
(Level->site[x][y].locchar == CLOSED_DOOR) ||
|
||||
(gamestatusp(FAST_MOVE) &&
|
||||
((Level->site[x][y].locchar == HEDGE) ||
|
||||
(Level->site[x][y].locchar == LAVA) ||
|
||||
(Level->site[x][y].locchar == ABYSS) ||
|
||||
(Level->site[x][y].locchar == VOID_CHAR) ||
|
||||
(Level->site[x][y].locchar == FIRE) ||
|
||||
(Level->site[x][y].locchar == WHIRLWIND) ||
|
||||
(Level->site[x][y].locchar == WATER) ||
|
||||
(Level->site[x][y].locchar == LIFT) ||
|
||||
(Level->site[x][y].locchar == TRAP)))) {
|
||||
if (! gamestatusp(FAST_MOVE)) print3("Ouch!");
|
||||
return(FALSE);
|
||||
}
|
||||
else if (optionp(CONFIRM)) {
|
||||
if ((Level->site[x][y].locchar == HEDGE) ||
|
||||
(Level->site[x][y].locchar == LAVA) ||
|
||||
(Level->site[x][y].locchar == FIRE) ||
|
||||
(Level->site[x][y].locchar == WHIRLWIND) ||
|
||||
(Level->site[x][y].locchar == ABYSS) ||
|
||||
(Level->site[x][y].locchar == VOID_CHAR) ||
|
||||
(Level->site[x][y].locchar == WATER) ||
|
||||
(Level->site[x][y].locchar == RUBBLE) ||
|
||||
(Level->site[x][y].locchar == LIFT) ||
|
||||
(Level->site[x][y].locchar == TRAP)) {
|
||||
/* horses WILL go into water... */
|
||||
if (gamestatusp(MOUNTED)) {
|
||||
if (Level->site[x][y].locchar != WATER ||
|
||||
Level->site[x][y].p_locf != L_WATER) {
|
||||
print1("You can't convince your steed to continue.");
|
||||
setgamestatus(SKIP_MONSTERS);
|
||||
return(FALSE);
|
||||
}
|
||||
else return(TRUE);
|
||||
}
|
||||
else if (cinema_confirm("Look where you're about to step!") == 'y') resetgamestatus(SKIP_MONSTERS);
|
||||
else setgamestatus(SKIP_MONSTERS);
|
||||
return(!gamestatusp(SKIP_MONSTERS));
|
||||
}
|
||||
else {
|
||||
resetgamestatus(SKIP_MONSTERS);
|
||||
return(TRUE);
|
||||
}
|
||||
}
|
||||
else {
|
||||
resetgamestatus(SKIP_MONSTERS);
|
||||
return(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* check a move attempt in the countryside */
|
||||
int p_country_moveable(int x, int y)
|
||||
{
|
||||
if (! inbounds(x,y)) return (FALSE);
|
||||
else if (optionp(CONFIRM)) {
|
||||
if ((Country[x][y].current_terrain_type == CHAOS_SEA) ||
|
||||
(Country[x][y].current_terrain_type == MOUNTAINS))
|
||||
return(cinema_confirm("That's dangerous terrain, and slow going.")=='y');
|
||||
else return(TRUE);
|
||||
}
|
||||
else return(TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* search once particular spot */
|
||||
void searchat(int x, int y)
|
||||
{
|
||||
int i;
|
||||
if (inbounds(x,y) && (random_range(3) || Player.status[ALERT])) {
|
||||
if (loc_statusp(x,y,SECRET)) {
|
||||
lreset(x,y,SECRET);
|
||||
lset(x, y, CHANGED);
|
||||
if ((Level->site[x][y].locchar==OPEN_DOOR) ||
|
||||
(Level->site[x][y].locchar==CLOSED_DOOR)) {
|
||||
mprint("You find a secret door!");
|
||||
for(i=0;i<=8;i++) { /* FIXED! 12/25/98 */
|
||||
lset(x+Dirs[0][i],y+Dirs[1][i],STOPS);
|
||||
lset(x+Dirs[0][i], y+Dirs[1][i], CHANGED);
|
||||
}
|
||||
}
|
||||
else mprint("You find a secret passage!");
|
||||
drawvision(Player.x,Player.y);
|
||||
}
|
||||
if ((Level->site[x][y].p_locf >= TRAP_BASE) &&
|
||||
(Level->site[x][y].locchar != TRAP) &&
|
||||
(Level->site[x][y].p_locf <= TRAP_BASE+NUMTRAPS)) {
|
||||
Level->site[x][y].locchar = TRAP;
|
||||
lset(x, y, CHANGED);
|
||||
mprint("You find a trap!");
|
||||
drawvision(Player.x,Player.y);
|
||||
resetgamestatus(FAST_MOVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* This is to be called whenever anything might change player performance in
|
||||
melee, such as changing weapon, statistics, etc. */
|
||||
void calc_melee(void)
|
||||
{
|
||||
calc_weight();
|
||||
|
||||
Player.maxweight = (Player.str * Player.agi * 10);
|
||||
Player.absorption = Player.status[PROTECTION];
|
||||
Player.defense = 2 * statmod(Player.agi)+(Player.level/2);
|
||||
Player.hit = Player.level + statmod(Player.dex)+1;
|
||||
Player.dmg = statmod(Player.str)+3;
|
||||
Player.speed = 5 - min(4,(statmod(Player.agi)/2));
|
||||
if (Player.status[HASTED] > 0) Player.speed = Player.speed / 2;
|
||||
if (Player.status[SLOWED] > 0) Player.speed = Player.speed * 2;
|
||||
if (Player.itemweight > 0)
|
||||
switch(Player.maxweight / Player.itemweight) {
|
||||
case 0: Player.speed+=6; break;
|
||||
case 1: Player.speed+=3; break;
|
||||
case 2: Player.speed+=2; break;
|
||||
case 3: Player.speed+=1; break;
|
||||
}
|
||||
|
||||
if (Player.status[ACCURATE]) Player.hit+=20;
|
||||
if (Player.status[HERO]) Player.hit+=Player.dex;
|
||||
if (Player.status[HERO]) Player.dmg+=Player.str;
|
||||
if (Player.status[HERO]) Player.defense+=Player.agi;
|
||||
if (Player.status[HERO]) Player.speed=Player.speed / 2;
|
||||
|
||||
Player.speed = max(1,min(25,Player.speed));
|
||||
|
||||
if (gamestatusp(MOUNTED)) {
|
||||
Player.speed = 3;
|
||||
Player.hit += 10;
|
||||
Player.dmg += 10;
|
||||
}
|
||||
#ifdef INCLUDE_MONKS
|
||||
else if (Player.rank[MONKS] > 0)
|
||||
{
|
||||
/* monks are faster when not in armor or on horseback */
|
||||
if (Player.possessions[O_ARMOR] == NULL) {
|
||||
Player.speed += (min(0,(Player.rank[MONKS] -1)));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* weapon */
|
||||
/* have to check for used since it could be a 2h weapon just carried
|
||||
in one hand */
|
||||
if (Player.possessions[O_WEAPON_HAND] != NULL)
|
||||
if (Player.possessions[O_WEAPON_HAND]->used &&
|
||||
((Player.possessions[O_WEAPON_HAND]->objchar==WEAPON)||
|
||||
(Player.possessions[O_WEAPON_HAND]->objchar==MISSILEWEAPON))) {
|
||||
Player.hit +=
|
||||
Player.possessions[O_WEAPON_HAND]->hit +
|
||||
Player.possessions[O_WEAPON_HAND]->plus;
|
||||
Player.dmg +=
|
||||
Player.possessions[O_WEAPON_HAND]->dmg +
|
||||
Player.possessions[O_WEAPON_HAND]->plus;
|
||||
}
|
||||
|
||||
#ifdef INCLUDE_MONKS
|
||||
if (Player.rank[MONKS] > 0)
|
||||
{
|
||||
/* monks */
|
||||
/* aren't monks just obscene? PGM */
|
||||
if (Player.possessions[O_WEAPON_HAND] == NULL) /*barehanded*/
|
||||
{
|
||||
/* all monks get a bonus in unarmed combat */
|
||||
Player.hit += ( Player.rank[MONKS] * Player.level );
|
||||
Player.dmg += ( Player.rank[MONKS] * Player.level );
|
||||
Player.defense += ( Player.rank[MONKS] * Player.level );
|
||||
|
||||
if (Player.rank[MONKS] == MONK_GRANDMASTER)
|
||||
{
|
||||
/* Grandmaster does 3x damage in unarmed combat. */
|
||||
Player.dmg *= 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* shield or defensive weapon */
|
||||
if (Player.possessions[O_SHIELD] != NULL) {
|
||||
Player.defense +=
|
||||
Player.possessions[O_SHIELD]->aux +
|
||||
Player.possessions[O_SHIELD]->plus;
|
||||
}
|
||||
|
||||
/* armor */
|
||||
if (Player.possessions[O_ARMOR] != NULL) {
|
||||
Player.absorption += Player.possessions[O_ARMOR]->dmg;
|
||||
Player.defense +=
|
||||
Player.possessions[O_ARMOR]->plus -
|
||||
Player.possessions[O_ARMOR]->aux;
|
||||
}
|
||||
|
||||
if (strlen(Player.meleestr) > 2*maneuvers())
|
||||
default_maneuvers();
|
||||
comwinprint();
|
||||
showflags();
|
||||
dataprint();
|
||||
}
|
||||
|
||||
|
||||
/* player attacks monster m */
|
||||
void fight_monster(struct monster *m)
|
||||
{
|
||||
int hitmod = 0;
|
||||
int reallyfight = TRUE;
|
||||
|
||||
if (Player.status[AFRAID]) {
|
||||
print3("You are much too afraid to fight!");
|
||||
reallyfight = FALSE;
|
||||
}
|
||||
else if (player_on_sanctuary()) {
|
||||
print3("You restrain yourself from desecrating this holy place.");
|
||||
reallyfight = FALSE;
|
||||
}
|
||||
else if (Player.status[SHADOWFORM]) {
|
||||
print3("Your attack has no effect in your shadowy state.");
|
||||
reallyfight = FALSE;
|
||||
}
|
||||
else if ((Player.status[BERSERK]<1) && (! m_statusp(m,HOSTILE))) {
|
||||
if (optionp(BELLICOSE)) reallyfight = TRUE;
|
||||
else reallyfight = 'y'==cinema_confirm("You're attacking without provokation.");
|
||||
}
|
||||
else reallyfight = TRUE;
|
||||
|
||||
if (reallyfight) {
|
||||
|
||||
if (Lunarity == 1) hitmod += Player.level;
|
||||
else if (Lunarity == -1) hitmod -= (Player.level / 2);
|
||||
|
||||
if (! m->attacked) Player.alignment -= 2; /* chaotic action */
|
||||
m_status_set(m,AWAKE);
|
||||
m_status_set(m,HOSTILE);
|
||||
m->attacked = TRUE;
|
||||
Player.hit += hitmod;
|
||||
tacplayer(m);
|
||||
Player.hit -= hitmod;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Attempt to break an object o */
|
||||
int damage_item(pob o)
|
||||
{
|
||||
/* special case -- break star gem */
|
||||
if (o->id == OB_STARGEM) {
|
||||
print1("The Star Gem shatters into a million glistening shards....");
|
||||
if (Current_Environment == E_STARPEAK) {
|
||||
if (! gamestatusp(KILLED_LAWBRINGER))
|
||||
print2("You hear an agonizing scream of anguish and despair.");
|
||||
morewait();
|
||||
print1("A raging torrent of energy escapes in an explosion of magic!");
|
||||
print2("The energy flows to the apex of Star Peak where there is");
|
||||
morewait();
|
||||
clearmsg();
|
||||
print1("an enormous explosion!");
|
||||
morewait();
|
||||
annihilate(1);
|
||||
print3("You seem to gain strength in the chaotic glare of magic!");
|
||||
Player.str = max(Player.str, Player.maxstr + 5); /* FIXED! 12/25/98 */
|
||||
Player.pow = max(Player.pow, Player.maxpow + 5); /* ditto */
|
||||
Player.alignment -= 200;
|
||||
dispose_lost_objects(1,o);
|
||||
}
|
||||
else {
|
||||
morewait();
|
||||
print1("The shards coalesce back together again, and vanish");
|
||||
print2("with a muted giggle.");
|
||||
dispose_lost_objects(1,o);
|
||||
Objects[o->id].uniqueness = UNIQUE_UNMADE; /* FIXED! 12/30/98 */
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
if (o->fragility < random_range(30)) {
|
||||
if (o->objchar == STICK && o->charge > 0) {
|
||||
strcpy(Str1,"Your ");
|
||||
strcat(Str1,(o->blessing >= 0 ? o->truename : o->cursestr));
|
||||
strcat(Str1," explodes!");
|
||||
print1(Str1);
|
||||
morewait();
|
||||
nprint1(" Ka-Blamm!!!");
|
||||
/* general case. Some sticks will eventually do special things */
|
||||
morewait();
|
||||
manastorm(Player.x, Player.y, o->charge*o->level*10);
|
||||
dispose_lost_objects(1,o);
|
||||
return 1;
|
||||
}
|
||||
else if ((o->blessing > 0) && (o->level > random_range(10))) {
|
||||
strcpy(Str1,"Your ");
|
||||
strcat(Str1,itemid(o));
|
||||
strcat(Str1," glows strongly.");
|
||||
print1(Str1);
|
||||
return 0;
|
||||
}
|
||||
else if ((o->blessing < -1) && (o->level > random_range(10))) {
|
||||
strcpy(Str1,"You hear an evil giggle from your ");
|
||||
strcat(Str1,itemid(o));
|
||||
print1(Str1);
|
||||
return 0;
|
||||
}
|
||||
else if (o->plus > 0) {
|
||||
strcpy(Str1,"Your ");
|
||||
strcat(Str1,itemid(o));
|
||||
strcat(Str1," glows and then fades.");
|
||||
print1(Str1);
|
||||
o->plus--;
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
if (o->blessing > 0) print1("You hear a faint despairing cry!");
|
||||
else if (o->blessing < 0) print1("You hear an agonized scream!");
|
||||
strcpy(Str1,"Your ");
|
||||
strcat(Str1,itemid(o));
|
||||
strcat(Str1," shatters in a thousand lost fragments!");
|
||||
print2(Str1);
|
||||
morewait();
|
||||
dispose_lost_objects(1,o);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* do dmg points of damage of type dtype, from source fromstring */
|
||||
void p_damage(int dmg, int dtype, char *fromstring)
|
||||
{
|
||||
if (gamestatusp(FAST_MOVE)) {
|
||||
drawvision(Player.x,Player.y);
|
||||
resetgamestatus(FAST_MOVE);
|
||||
}
|
||||
if (! p_immune(dtype)) {
|
||||
if (dtype == NORMAL_DAMAGE) Player.hp -= max(1,(dmg-Player.absorption));
|
||||
else Player.hp -= dmg;
|
||||
if (Player.hp < 1) p_death(fromstring);
|
||||
}
|
||||
else mprint("You resist the effects!");
|
||||
dataprint();
|
||||
}
|
||||
|
||||
/* game over, you lose! */
|
||||
void p_death(char *fromstring)
|
||||
{
|
||||
Player.hp = -1;
|
||||
print3("You died!");
|
||||
morewait();
|
||||
display_death(fromstring);
|
||||
player_dump();
|
||||
#ifdef SAVE_LEVELS
|
||||
kill_all_levels();
|
||||
#endif
|
||||
endgraf();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
/* move the cursor around, like for firing a wand, sets x and y to target */
|
||||
void setspot(int *x, int *y)
|
||||
{
|
||||
char c = ' ';
|
||||
mprint("Targeting.... ? for help");
|
||||
omshowcursor(*x,*y);
|
||||
while ((c != '.') && (c != ESCAPE)) {
|
||||
c = lgetc();
|
||||
switch(c) {
|
||||
case 'h':case '4': movecursor(x,y,-1,0); break;
|
||||
case 'j':case '2': movecursor(x,y,0,1); break;
|
||||
case 'k':case '8': movecursor(x,y,0,-1); break;
|
||||
case 'l':case '6': movecursor(x,y,1,0); break;
|
||||
case 'b':case '1': movecursor(x,y,-1,1); break;
|
||||
case 'n':case '3': movecursor(x,y,1,1); break;
|
||||
case 'y':case '7': movecursor(x,y,-1,-1); break;
|
||||
case 'u':case '9': movecursor(x,y,1,-1); break;
|
||||
case '?':
|
||||
clearmsg();
|
||||
mprint("Use vi keys or numeric keypad to move cursor to target.");
|
||||
mprint("Hit the '.' key when done, or ESCAPE to abort.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (c==ESCAPE) *x = *y= ABORT;
|
||||
screencheck(Player.x,Player.y);
|
||||
}
|
||||
|
||||
|
||||
/* get a direction: return index into Dirs array corresponding to direction */
|
||||
int getdir(void)
|
||||
{
|
||||
while (1) {
|
||||
mprint("Select direction [hjklyubn, ESCAPE to quit]: ");
|
||||
switch (mgetc()) {
|
||||
case '4':
|
||||
case 'h':
|
||||
case 'H': return(5);
|
||||
case '2':
|
||||
case 'j':
|
||||
case 'J': return(6);
|
||||
case '8':
|
||||
case 'k':
|
||||
case 'K': return(7);
|
||||
case '6':
|
||||
case 'l':
|
||||
case 'L': return(4);
|
||||
case '7':
|
||||
case 'y':
|
||||
case 'Y': return(3);
|
||||
case '9':
|
||||
case 'u':
|
||||
case 'U': return(1);
|
||||
case '1':
|
||||
case 'b':
|
||||
case 'B': return(2);
|
||||
case '3':
|
||||
case 'n':
|
||||
case 'N': return(0);
|
||||
case ESCAPE: return(ABORT);
|
||||
default: print3("That's not a direction! ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* functions describes monster m's state for examine function */
|
||||
char *mstatus_string(struct monster *m)
|
||||
{
|
||||
if (m_statusp(m, M_INVISIBLE) && !Player.status[TRUESIGHT])
|
||||
strcpy(Str2, "Some invisible creature");
|
||||
else if (m->uniqueness == COMMON) {
|
||||
if (m->hp < Monsters[m->id].hp / 3)
|
||||
strcpy(Str2,"a grievously injured ");
|
||||
else if (m->hp < Monsters[m->id].hp / 2)
|
||||
strcpy(Str2,"a severely injured ");
|
||||
else if (m->hp < Monsters[m->id].hp)
|
||||
strcpy(Str2,"an injured ");
|
||||
else strcpy(Str2,getarticle(m->monstring));
|
||||
if (m->level > Monsters[m->id].level) {
|
||||
strcat(Str2," (level ");
|
||||
strcat(Str2,wordnum(m->level+1-Monsters[m->id].level));
|
||||
strcat(Str2,") ");
|
||||
}
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else {
|
||||
strcpy(Str2,m->monstring);
|
||||
if (m->hp < Monsters[m->id].hp / 3)
|
||||
strcat(Str2," who is grievously injured ");
|
||||
else if (m->hp < Monsters[m->id].hp / 2)
|
||||
strcat(Str2," who is severely injured ");
|
||||
else if (m->hp < Monsters[m->id].hp)
|
||||
strcat(Str2," who is injured ");
|
||||
}
|
||||
return(Str2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* for the examine function */
|
||||
void describe_player(void)
|
||||
{
|
||||
if (Player.hp < (Player.maxhp /5))
|
||||
print1("A grievously injured ");
|
||||
else if (Player.hp < (Player.maxhp /2))
|
||||
print1("A seriously wounded ");
|
||||
else if (Player.hp < Player.maxhp)
|
||||
print1("A somewhat bruised ");
|
||||
else print1("A fit ");
|
||||
|
||||
if (Player.status[SHADOWFORM])
|
||||
nprint1("shadow");
|
||||
else
|
||||
nprint1(levelname(Player.level));
|
||||
nprint1(" named ");
|
||||
nprint1(Player.name);
|
||||
if (gamestatusp(MOUNTED))
|
||||
nprint1(" (riding a horse.)");
|
||||
}
|
||||
|
||||
|
||||
/* access to player experience... */
|
||||
/* share out experience among guild memberships */
|
||||
void gain_experience(int amount)
|
||||
{
|
||||
int i,count=0,share;
|
||||
Player.xp += (long) amount;
|
||||
gain_level(); /* actually, check to see if should gain level */
|
||||
for(i=0;i<NUMRANKS;i++)
|
||||
if (Player.guildxp[i] > 0) count++;
|
||||
share = amount/(max(count,1));
|
||||
for(i=0;i<NUMRANKS;i++)
|
||||
if (Player.guildxp[i] > 0) Player.guildxp[i]+=share;
|
||||
}
|
||||
|
||||
/* try to hit a monster in an adjacent space. If there are none
|
||||
return FALSE. Note if you're berserk you get to attack ALL
|
||||
adjacent monsters! */
|
||||
int goberserk(void)
|
||||
{
|
||||
int wentberserk=FALSE,i;
|
||||
char meleestr[80];
|
||||
strcpy(meleestr,Player.meleestr);
|
||||
strcpy(Player.meleestr,"lLlClH");
|
||||
for(i=0;i<8;i++)
|
||||
if (Level->site[Player.x+Dirs[0][i]][Player.y+Dirs[1][i]].creature
|
||||
!= NULL) {
|
||||
wentberserk=TRUE;
|
||||
fight_monster(Level->site[Player.x+Dirs[0][i]][Player.y+Dirs[1][i]].creature);
|
||||
morewait();
|
||||
}
|
||||
strcpy(Player.meleestr,meleestr);
|
||||
return(wentberserk);
|
||||
}
|
||||
|
||||
/* identifies a trap for examine() by its aux value */
|
||||
char *trapid(int trapno)
|
||||
{
|
||||
switch (trapno) {
|
||||
case L_TRAP_SIREN:return("A siren trap");
|
||||
case L_TRAP_DART:return("A dart trap");
|
||||
case L_TRAP_PIT:return("A pit");
|
||||
case L_TRAP_SNARE:return("A snare");
|
||||
case L_TRAP_BLADE:return("A blade trap");
|
||||
case L_TRAP_FIRE:return("A fire trap");
|
||||
case L_TRAP_TELEPORT:return("A teleport trap");
|
||||
case L_TRAP_DISINTEGRATE:return("A disintegration trap");
|
||||
case L_TRAP_DOOR:return("A trap door");
|
||||
case L_TRAP_MANADRAIN:return("A manadrain trap");
|
||||
case L_TRAP_ACID:return("An acid shower trap");
|
||||
case L_TRAP_SLEEP_GAS:return("A sleep gas trap");
|
||||
case L_TRAP_ABYSS:return("A concealed entrance to the abyss");
|
||||
default: return("A completely inoperative trap.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* checks current food status of player, every hour, and when food is eaten */
|
||||
void foodcheck(void)
|
||||
{
|
||||
if (Player.food > 48) {
|
||||
print3("You vomit up your huge meal.");
|
||||
Player.food = 12;
|
||||
}
|
||||
else if (Player.food == 30)
|
||||
print3("Time for a smackerel of something.");
|
||||
else if (Player.food == 20)
|
||||
print3("You feel hungry.");
|
||||
else if (Player.food == 12)
|
||||
print3("You are ravenously hungry.");
|
||||
else if (Player.food == 3) {
|
||||
print3("You feel weak.");
|
||||
if (gamestatusp(FAST_MOVE)) {
|
||||
drawvision(Player.x,Player.y);
|
||||
resetgamestatus(FAST_MOVE);
|
||||
}
|
||||
}
|
||||
else if (Player.food < 0) {
|
||||
if (gamestatusp(FAST_MOVE)) {
|
||||
drawvision(Player.x,Player.y);
|
||||
resetgamestatus(FAST_MOVE);
|
||||
}
|
||||
print3("You're starving!");
|
||||
p_damage(-5*Player.food,UNSTOPPABLE,"starvation");
|
||||
}
|
||||
showflags();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* see whether room should be illuminated */
|
||||
void roomcheck(void)
|
||||
{
|
||||
static int oldroomno = -1;
|
||||
#ifdef MSDOS_SUPPORTED_ANTIQUE
|
||||
static int oldlevel = -1;
|
||||
#else
|
||||
static plv oldlevel = NULL;
|
||||
#endif
|
||||
int roomno = Level->site[Player.x][Player.y].roomnumber;
|
||||
|
||||
if ((roomno == RS_CAVERN) ||
|
||||
(roomno == RS_SEWER_DUCT) ||
|
||||
(roomno == RS_KITCHEN) ||
|
||||
(roomno == RS_BATHROOM) ||
|
||||
(roomno == RS_BEDROOM) ||
|
||||
(roomno == RS_DININGROOM) ||
|
||||
(roomno == RS_CLOSET) ||
|
||||
(roomno > ROOMBASE))
|
||||
if ((! loc_statusp(Player.x,Player.y,LIT)) &&
|
||||
(! Player.status[BLINDED]) &&
|
||||
(Player.status[ILLUMINATION] || (difficulty() < 6))) {
|
||||
showroom(Level->site[Player.x][Player.y].roomnumber);
|
||||
spreadroomlight(Player.x,Player.y,roomno);
|
||||
levelrefresh();
|
||||
}
|
||||
if ((oldroomno != roomno) ||
|
||||
#ifdef MSDOS_SUPPORTED_ANTIQUE
|
||||
(oldlevel != Level->depth)) {
|
||||
#else
|
||||
(oldlevel != Level)) {
|
||||
#endif
|
||||
showroom(roomno);
|
||||
oldroomno = roomno;
|
||||
#ifdef MSDOS_SUPPORTED_ANTIQUE
|
||||
oldlevel = Level->depth;
|
||||
#else
|
||||
oldlevel = Level;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ask for mercy */
|
||||
void surrender(struct monster *m)
|
||||
{
|
||||
int i;
|
||||
long bestitem,bestvalue;
|
||||
|
||||
switch(random_range(4)) {
|
||||
case 0: print1("You grovel at the monster's feet..."); break;
|
||||
case 1: print1("You cry 'uncle'!"); break;
|
||||
case 2: print1("You beg for mercy."); break;
|
||||
case 3: print1("You yield to the monster."); break;
|
||||
}
|
||||
if (m->id == GUARD) {
|
||||
if (m_statusp(m,HOSTILE))
|
||||
monster_talk(m);
|
||||
else {
|
||||
print2("The guard (bored): Have you broken a law? [yn] ");
|
||||
if (ynq2() == 'y') {
|
||||
print2("The guard grabs you, and drags you to court.");
|
||||
morewait();
|
||||
send_to_jail();
|
||||
}
|
||||
else print2("Then don't bother me. Scat!");
|
||||
}
|
||||
}
|
||||
else if ((m->talkf==M_NO_OP) ||
|
||||
(m->talkf==M_TALK_STUPID))
|
||||
print3("Your plea is ignored.");
|
||||
else {
|
||||
morewait();
|
||||
print1("Your surrender is accepted.");
|
||||
if (Player.cash > 0) nprint1(" All your gold is taken....");
|
||||
Player.cash = 0;
|
||||
bestvalue = 0;
|
||||
bestitem = ABORT;
|
||||
for (i=1;i<MAXITEMS;i++)
|
||||
if (Player.possessions[i] != NULL)
|
||||
if (bestvalue < true_item_value(Player.possessions[i])) {
|
||||
bestitem = i;
|
||||
bestvalue = true_item_value(Player.possessions[i]);
|
||||
}
|
||||
if (bestitem != ABORT) {
|
||||
print2("You also give away your best item... ");
|
||||
nprint2(itemid(Player.possessions[bestitem]));
|
||||
nprint2(".");
|
||||
morewait();
|
||||
givemonster(m,Player.possessions[bestitem]);
|
||||
morewait(); /* msgs come from givemonster */
|
||||
conform_unused_object(Player.possessions[bestitem]);
|
||||
Player.possessions[bestitem] = NULL;
|
||||
}
|
||||
print2("You feel less experienced... ");
|
||||
Player.xp = max(0,Player.xp - m->xpv);
|
||||
nprint2("The monster seems more experienced!");
|
||||
m->level = (min(10,m->level+1));
|
||||
m->hp += m->level*20;
|
||||
m->hit += m->level;
|
||||
m->dmg += m->level;
|
||||
m->ac += m->level;
|
||||
m->xpv += m->level*10;
|
||||
morewait();
|
||||
clearmsg();
|
||||
if ((m->talkf == M_TALK_EVIL) && random_range(10)) {
|
||||
print1("It continues to attack you, laughing evilly!");
|
||||
m_status_set(m,HOSTILE);
|
||||
m_status_reset(m,GREEDY);
|
||||
}
|
||||
else if (m->id == HORNET || m->id == GUARD)
|
||||
print1("It continues to attack you. ");
|
||||
else {
|
||||
print1("The monster leaves, chuckling to itself....");
|
||||
m_teleport(m);
|
||||
}
|
||||
}
|
||||
dataprint();
|
||||
}
|
||||
|
||||
|
||||
/* threaten a monster */
|
||||
void threaten(struct monster *m)
|
||||
{
|
||||
char response;
|
||||
switch(random_range(4)) {
|
||||
case 0:mprint("You demand that your opponent surrender!"); break;
|
||||
case 1:mprint("You threaten to do bodily harm to it."); break;
|
||||
case 2:mprint("You attempt to bluster it into submission."); break;
|
||||
case 3:mprint("You try to cow it with your awesome presence."); break;
|
||||
}
|
||||
morewait(); /* FIXED! 12/25/98 */
|
||||
if (! m_statusp(m,HOSTILE)) {
|
||||
print3("You only annoy it with your futile demand.");
|
||||
m_status_set(m,HOSTILE);
|
||||
}
|
||||
else if (((m->level*2 > Player.level) && (m->hp > Player.dmg)) ||
|
||||
(m->uniqueness != COMMON))
|
||||
print1("It sneers contemptuously at you.");
|
||||
else if ((m->talkf != M_TALK_GREEDY) &&
|
||||
(m->talkf != M_TALK_HUNGRY) &&
|
||||
(m->talkf != M_TALK_EVIL) &&
|
||||
(m->talkf != M_TALK_MAN) &&
|
||||
(m->talkf != M_TALK_BEG) &&
|
||||
(m->talkf != M_TALK_THIEF) &&
|
||||
(m->talkf != M_TALK_MERCHANT) &&
|
||||
(m->talkf != M_TALK_IM))
|
||||
print1("Your demand is ignored");
|
||||
else {
|
||||
print1("It yields to your mercy.");
|
||||
Player.alignment+=3;
|
||||
print2("Kill it, rob it, or free it? [krf] ");
|
||||
do response = (char) mcigetc();
|
||||
while ((response != 'k')&&(response != 'r')&&(response !='f'));
|
||||
if (response == 'k') {
|
||||
m_death(m);
|
||||
print2("You treacherous rogue!");
|
||||
Player.alignment -= 13;
|
||||
}
|
||||
else if (response == 'r') {
|
||||
Player.alignment-=2;
|
||||
print2("It drops its treasure and flees.");
|
||||
m_dropstuff(m);
|
||||
m_remove( m );
|
||||
}
|
||||
else {
|
||||
Player.alignment+=2;
|
||||
print2("'If you love something set it free ... '");
|
||||
if (random_range(100)==13) {
|
||||
morewait();
|
||||
print2("'...If it doesn't come back, hunt it down and kill it.'");
|
||||
}
|
||||
print3("It departs with a renewed sense of its own mortality.");
|
||||
m_remove( m );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* name of the player's experience level */
|
||||
char *levelname(int level)
|
||||
{
|
||||
switch(level) {
|
||||
case 0:strcpy(Str3,"neophyte");break;
|
||||
case 1:strcpy(Str3,"beginner");break;
|
||||
case 2:strcpy(Str3,"tourist");break;
|
||||
case 3:strcpy(Str3,"traveller");break;
|
||||
case 4:strcpy(Str3,"wayfarer");break;
|
||||
case 5:strcpy(Str3,"peregrinator");break;
|
||||
case 6:strcpy(Str3,"wanderer");break;
|
||||
case 7:strcpy(Str3,"hunter");break;
|
||||
case 8:strcpy(Str3,"scout");break;
|
||||
case 9:strcpy(Str3,"trailblazer");break;
|
||||
case 10:strcpy(Str3,"discoverer");break;
|
||||
case 11:strcpy(Str3,"explorer");break;
|
||||
case 12:strcpy(Str3,"senior explorer");break;
|
||||
case 13:strcpy(Str3,"ranger");break;
|
||||
case 14:strcpy(Str3,"ranger captain");break;
|
||||
case 15:strcpy(Str3,"ranger knight");break;
|
||||
case 16:strcpy(Str3,"adventurer");break;
|
||||
case 17:strcpy(Str3,"experienced adventurer");break;
|
||||
case 18:strcpy(Str3,"skilled adventurer");break;
|
||||
case 19:strcpy(Str3,"master adventurer");break;
|
||||
case 20:strcpy(Str3,"hero");break;
|
||||
case 21:strcpy(Str3,"superhero");break;
|
||||
case 22:strcpy(Str3,"demigod");break;
|
||||
default:
|
||||
if (level < 100) {
|
||||
strcpy(Str3,"Order ");
|
||||
Str3[6] = ((level/10)-2) + '0';
|
||||
Str3[7] = 0;
|
||||
strcat(Str3," Master of Omega");
|
||||
}
|
||||
else strcpy(Str3,"Ultimate Master of Omega");
|
||||
break;
|
||||
}
|
||||
return(Str3);
|
||||
}
|
2
buglist.txt
Normal file
2
buglist.txt
Normal file
@ -0,0 +1,2 @@
|
||||
= 24.08.2001 (wsxyz) =
|
||||
+ Met (and killed) the Goblin King in a wilderness encounter
|
841
char.c
Normal file
841
char.c
Normal file
@ -0,0 +1,841 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* char.c */
|
||||
/* Player generation */
|
||||
|
||||
#ifndef MSDOS_SUPPORTED_ANTIQUE
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <pwd.h>
|
||||
#endif
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
/* set player to begin with */
|
||||
int initplayer(void)
|
||||
{
|
||||
int i;
|
||||
int oldchar=FALSE;
|
||||
FILE *fd;
|
||||
char *lname;
|
||||
int ret_value = FALSE;
|
||||
#ifndef MSDOS
|
||||
struct passwd *dastuff;
|
||||
#endif
|
||||
|
||||
lname = getlogin();
|
||||
#ifndef MSDOS
|
||||
if (!lname || strlen(lname) == 0)
|
||||
{
|
||||
dastuff = getpwuid(getuid());
|
||||
lname = dastuff->pw_name;
|
||||
}
|
||||
#endif
|
||||
strcpy(Player.name,lname);
|
||||
if (Player.name[0] >= 'a' && Player.name[0] <= 'z')
|
||||
Player.name[0] += 'A'-'a'; /* capitalise 1st letter */
|
||||
Player.itemweight = 0;
|
||||
Player.food = 36;
|
||||
Player.packptr = 0;
|
||||
Behavior = -1;
|
||||
Player.options = 0;
|
||||
for (i=0;i<MAXITEMS;i++)
|
||||
Player.possessions[i] = NULL;
|
||||
for (i=0;i<MAXPACK;i++)
|
||||
Player.pack[i] = NULL;
|
||||
for (i=0;i<NUMIMMUNITIES;i++) Player.immunity[i] = 0;
|
||||
for (i=0;i<NUMSTATI;i++) Player.status[i] = 0;
|
||||
for (i=0;i<NUMRANKS;i++) {
|
||||
Player.rank[i] = 0;
|
||||
Player.guildxp[i] = 0;
|
||||
}
|
||||
Player.patron = 0;
|
||||
Player.alignment = 0;
|
||||
Player.cash = 250;
|
||||
change_to_user_perms();
|
||||
if ((fd=omegarc_check())!=NULL) {
|
||||
fread((char *)&i,sizeof(int),1,fd);
|
||||
if (i != VERSION) {
|
||||
#if defined(MSDOS) || defined(AMIGA)
|
||||
print1("Out of date omega.rc! Make another!");
|
||||
#else
|
||||
print1("Out of date .omegarc! Make another!");
|
||||
#endif
|
||||
morewait();
|
||||
}
|
||||
else {
|
||||
oldchar = TRUE;
|
||||
fread((char *)&Player,sizeof(Player),1,fd);
|
||||
fread((char *)&Searchnum,sizeof(int),1,fd);
|
||||
fread((char *)&Verbosity,sizeof(char),1,fd);
|
||||
strcpy(Player.name,lname);
|
||||
if (Player.name[0] >= 'a' && Player.name[0] <= 'z')
|
||||
Player.name[0] += 'A'-'a'; /* capitalise 1st letter */
|
||||
}
|
||||
fclose(fd);
|
||||
}
|
||||
change_to_game_perms();
|
||||
if (! oldchar) {
|
||||
optionset(RUNSTOP);
|
||||
optionset(CONFIRM);
|
||||
#ifdef COMPRESS_SAVE_FILES
|
||||
optionset(COMPRESS_OPTION);
|
||||
#endif
|
||||
optionset(SHOW_COLOUR);
|
||||
ret_value = initstats() ; /* RM 04-19-2000:loading patch */ /* DAG */
|
||||
}
|
||||
/* This gets executed when the player loads from .omegarc */
|
||||
/* DAG - put the code back in the same place, rather than duplicating */
|
||||
Searchnum = max(1,min(9,Searchnum));
|
||||
Player.hp = Player.maxhp = Player.maxcon;
|
||||
Player.mana = Player.maxmana = calcmana();
|
||||
Player.click = 1;
|
||||
strcpy(Player.meleestr,"CCBC");
|
||||
calc_melee();
|
||||
ScreenOffset = -1000; /* to force a redraw */
|
||||
return ret_value; /* RM 04-19-2000: loading patch */ /* DAG */
|
||||
}
|
||||
|
||||
|
||||
FILE *omegarc_check(void)
|
||||
{
|
||||
FILE *fd;
|
||||
#if defined(MSDOS) || defined(AMIGA)
|
||||
if ((fd = fopen("omega.rc","rb")) != NULL) {
|
||||
print2("Use omega.rc charcter record in current directory? [yn] ");
|
||||
#else
|
||||
sprintf(Str1, "%s/.omegarc", getenv("HOME"));
|
||||
if ((fd = fopen(Str1,"r")) != NULL) {
|
||||
print2("Use .omegarc in home directory? [yn] ");
|
||||
#endif
|
||||
if (ynq2()!='y') {
|
||||
fclose(fd);
|
||||
fd = NULL;
|
||||
}
|
||||
}
|
||||
clearmsg();
|
||||
return(fd);
|
||||
}
|
||||
|
||||
int initstats(void)
|
||||
{
|
||||
char response;
|
||||
char savedg[80];
|
||||
print1("Do you want to run a character [c], load a game [l], or ");
|
||||
print2("play yourself [p]?"); /* RM 04-19-2000 loading patch */
|
||||
do
|
||||
response = (char) mcigetc();
|
||||
while ((response!='c')&&(response != 'p')&&(response !='l'));
|
||||
if (response == 'c') omegan_character_stats();
|
||||
else if (response == 'l')
|
||||
{
|
||||
/* RM 04-19-2000: loading patch - a blatant hack */
|
||||
clearmsg();
|
||||
print1("Enter saved game name: ");
|
||||
strcpy(savedg,msgscanstring());
|
||||
|
||||
game_restore(savedg);
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
clearmsg(); /* RM 04-19-2000 loading patch - fix the display */
|
||||
user_character_stats();
|
||||
user_intro();
|
||||
#if defined(MSDOS) || defined(AMIGA)
|
||||
print1("Do you want to save this set-up to omega.rc in this directory? [yn] ");
|
||||
#else
|
||||
print1("Do you want to save this set-up to .omegarc in your home directory? [yn] ");
|
||||
#endif
|
||||
if (ynq1()=='y')
|
||||
save_omegarc();
|
||||
}
|
||||
xredraw();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void save_omegarc(void)
|
||||
{
|
||||
int i=VERSION;
|
||||
FILE *fd;
|
||||
change_to_user_perms();
|
||||
#if defined(MSDOS) || defined(AMIGA)
|
||||
fd = fopen("omega.rc","wb");
|
||||
#else
|
||||
sprintf(Str1, "%s/.omegarc", getenv("HOME"));
|
||||
fd = fopen(Str1,"w");
|
||||
#endif
|
||||
if (fd == NULL)
|
||||
#if defined(MSDOS) || defined(AMIGA)
|
||||
print1("Sorry, couldn't save omega.rc for some reason.");
|
||||
#else
|
||||
print1("Sorry, couldn't save .omegarc for some reason.");
|
||||
#endif
|
||||
else {
|
||||
fwrite((char *)&i,sizeof(int),1,fd);
|
||||
print1("First, set options.");
|
||||
setoptions();
|
||||
fwrite((char *)&Player,sizeof(Player),1,fd);
|
||||
fwrite((char *)&Searchnum,sizeof(int),1,fd);
|
||||
fwrite((char *)&Verbosity,sizeof(char),1,fd);
|
||||
fclose(fd);
|
||||
}
|
||||
change_to_game_perms();
|
||||
}
|
||||
|
||||
|
||||
|
||||
long calcmana(void)
|
||||
{
|
||||
return(Player.pow * (long)(Player.level+1));
|
||||
}
|
||||
|
||||
|
||||
/* npcbehavior digits 1234
|
||||
|
||||
4 : alignment (LAWFUL,CHAOTIC, or NEUTRAL)
|
||||
3 : primary combat action (melee,missile,spell,thief,flight,1..5)
|
||||
2 : competence at 4 (0..9, 0 = incompetent, 9 = masterful)
|
||||
1 : conversation mode
|
||||
|
||||
status : 1 = dead, 2 = saved, 3 = retired, 4 = still playing
|
||||
*/
|
||||
int fixnpc(int status)
|
||||
{
|
||||
int npcbehavior=0;
|
||||
char response;
|
||||
if (status == 1) { /* player is dead, all undead are chaotic */
|
||||
npcbehavior+=CHAOTIC;
|
||||
npcbehavior+=10; /* melee */
|
||||
npcbehavior+=100*min(9,((int) (Player.level/3)));
|
||||
npcbehavior+=1000; /* threaten */
|
||||
}
|
||||
else if (Behavior >= 0)
|
||||
npcbehavior = Behavior;
|
||||
else {
|
||||
menuclear();
|
||||
menuprint("NPC Behavior Determination Module\n\n");
|
||||
menuprint("Your overall NPC behavior is:");
|
||||
if (Player.alignment < -10) {
|
||||
npcbehavior += CHAOTIC;
|
||||
menuprint("\n\n CHAOTIC");
|
||||
}
|
||||
else if (Player.alignment > 10) {
|
||||
npcbehavior += LAWFUL;
|
||||
menuprint("\n\n LAWFUL");
|
||||
}
|
||||
else {
|
||||
npcbehavior += NEUTRAL;
|
||||
menuprint("\n\n NEUTRAL");
|
||||
}
|
||||
menuprint("\n\n1: hand-to-hand combat");
|
||||
menuprint("\n2: missile combat");
|
||||
menuprint("\n3: spellcasting");
|
||||
menuprint("\n4: thieving");
|
||||
menuprint("\n5: escape");
|
||||
menuprint("\n\nEnter NPC response to combat: ");
|
||||
showmenu();
|
||||
response = '0';
|
||||
while ((response != '1') &&
|
||||
(response != '2') &&
|
||||
(response != '3') &&
|
||||
(response != '4') &&
|
||||
(response != '5'))
|
||||
response = menugetc();
|
||||
menuaddch(response);
|
||||
npcbehavior+=10*(response - '0');
|
||||
npcbehavior+=100*competence_check(response-'0');
|
||||
response = '0';
|
||||
menuclear();
|
||||
menuprint("1: threaten");
|
||||
menuprint("\n2: greet");
|
||||
menuprint("\n3: aid");
|
||||
menuprint("\n4: beg");
|
||||
menuprint("\n5: silence");
|
||||
menuprint("\n\nEnter NPC response to conversation: ");
|
||||
showmenu();
|
||||
while ((response != '1') &&
|
||||
(response != '2') &&
|
||||
(response != '3') &&
|
||||
(response != '4') &&
|
||||
(response != '5'))
|
||||
response = menugetc();
|
||||
menuaddch(response);
|
||||
npcbehavior+=1000*(response - '0');
|
||||
xredraw();
|
||||
}
|
||||
Behavior = npcbehavior;
|
||||
return(npcbehavior);
|
||||
}
|
||||
|
||||
|
||||
/* estimates on a 0..9 scale how good a player is at something */
|
||||
int competence_check(int attack)
|
||||
{
|
||||
int ability = 0;
|
||||
switch(attack) {
|
||||
case 1: /* melee */
|
||||
ability += statmod(Player.str);
|
||||
case 2: /* missle */
|
||||
ability += statmod(Player.dex);
|
||||
ability += Player.rank[LEGION];
|
||||
ability += ((int) (Player.dmg / 10) - 1);
|
||||
break;
|
||||
case 3: /* spellcasting */
|
||||
ability += statmod(Player.iq);
|
||||
ability += statmod(Player.pow);
|
||||
ability += Player.rank[CIRCLE];
|
||||
ability += Player.rank[COLLEGE];
|
||||
ability += Player.rank[PRIEST];
|
||||
break;
|
||||
case 4: /* thieving */
|
||||
ability += statmod(Player.dex);
|
||||
ability += statmod(Player.agi);
|
||||
ability += Player.rank[THIEVES];
|
||||
break;
|
||||
case 5: /* escape */
|
||||
ability += 2 * statmod(Player.agi);
|
||||
break;
|
||||
}
|
||||
ability += ((int) (Player.level / 5));
|
||||
if (ability < 0) ability = 0;
|
||||
if (ability > 9) ability = 9;
|
||||
return(ability);
|
||||
}
|
||||
|
||||
static int user_character_strength (void)
|
||||
{
|
||||
int num;
|
||||
|
||||
cinema_blank();
|
||||
num = (int)cinema_getnum_line(0, "How many pounds can you bench press? ");
|
||||
|
||||
if (num < 30) return 3;
|
||||
if (num < 90) return num / 10;
|
||||
|
||||
num = (num - 120) / 30 + 9;
|
||||
|
||||
if (num > 18)
|
||||
{
|
||||
num = 18;
|
||||
cinema_scene("Right, make me believe THAT's true.",
|
||||
"Even if it's true, I don't believe it.", 0);
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
static int user_character_iq_test (void)
|
||||
{
|
||||
int num = 0;
|
||||
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, "Took an official IQ test? [yn] "))
|
||||
{
|
||||
num = (int)cinema_getnum_line(1, "So, whadja get? ");
|
||||
num /= 10;
|
||||
|
||||
if (num > 18)
|
||||
{
|
||||
num = 18;
|
||||
cinema_scene("I'm not convinced...",
|
||||
"If you're so smart, why aren't you rich?", 0);
|
||||
}
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
static int user_character_undergraduate_exam (void)
|
||||
{
|
||||
int num = 0;
|
||||
char * prompt = "Took Undergraduate entrance exams? [yn] ";
|
||||
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, prompt))
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
num = (int)cinema_getnum_line(1, "So, what percentile? ");
|
||||
if (num < 100) break;
|
||||
|
||||
cinema_scene("That's impossible!", 0, 0);
|
||||
cinema_print_line(0, prompt);
|
||||
}
|
||||
|
||||
num = 9 * (num - 49) / 50 + 9;
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
static int user_character_graduate_exam (void)
|
||||
{
|
||||
int num = 0;
|
||||
char * prompt = "Took Graduate entrance exams? [yn] ";
|
||||
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, prompt))
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
num = (int)cinema_getnum_line(1, "So, what percentile? ");
|
||||
if (num < 100) break;
|
||||
|
||||
cinema_scene("That's impossible!", 0, 0);
|
||||
cinema_print_line(0, prompt);
|
||||
}
|
||||
|
||||
num = 9 * (num - 49) / 50 + 9;
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
static int user_character_dumb (void)
|
||||
{
|
||||
int num;
|
||||
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, "Pretty dumb, aren't you? [yn] "))
|
||||
{
|
||||
num = 3 + random_range(3);
|
||||
cinema_print_line(1, "I thought so...");
|
||||
}
|
||||
else
|
||||
{
|
||||
num = 6 + random_range(6);
|
||||
cinema_print_line(1, "Well, not *that* dumb.");
|
||||
}
|
||||
|
||||
morewait();
|
||||
return num;
|
||||
}
|
||||
|
||||
static int user_character_dance (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Can you dance? [yn] ")) return 0;
|
||||
if ('y' != cinema_ynq_line(1, "Well? [yn] ")) return 1;
|
||||
return 3;
|
||||
}
|
||||
|
||||
static int user_character_martial_art (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you have training in a martial art or gymnastics? [yn] ")) return 0;
|
||||
if ('y' != cinema_ynq_line(1, "Do you have dan rank or equivalent? [yn] ")) return 2;
|
||||
return 6;
|
||||
}
|
||||
|
||||
static int user_character_field_sport (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you play some field sport? [yn] ")) return 0;
|
||||
if ('y' != cinema_ynq_line(1, "Are you good? [yn] ")) return 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int user_character_cave (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you cave, mountaineer, etc.? [yn] ")) return 0;
|
||||
return 3;
|
||||
}
|
||||
|
||||
static int user_character_skate (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you skate or ski? [yn] ")) return 0;
|
||||
if ('y' != cinema_ynq_line(1, "Well? [yn] ")) return 2;
|
||||
return 4;
|
||||
}
|
||||
|
||||
static int user_character_handicapped (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Are you physically handicapped? [yn] ")) return 0;
|
||||
return -4;
|
||||
}
|
||||
|
||||
static int user_character_accident_prone (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Are you accident prone? [yn] ")) return 0;
|
||||
return -4;
|
||||
}
|
||||
|
||||
static int user_character_bicycle (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, "Can you ride a bicycle? [yn] ")) return 0;
|
||||
return -4;
|
||||
}
|
||||
|
||||
static int user_character_video_games (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you play video games? [yn] ")) return 0;
|
||||
if ('y' != cinema_ynq_line(1, "Do you get high scores? [yn] ")) return 2;
|
||||
return 6;
|
||||
}
|
||||
|
||||
static int user_character_archer (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Are you an archer, fencer, or marksman? [yn] ")) return 0;
|
||||
if ('y' != cinema_ynq_line(1, "A good one? [yn] ")) return 2;
|
||||
return 6;
|
||||
}
|
||||
|
||||
static int user_character_picked_lock (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Have you ever picked a lock? [yn] ")) return 0;
|
||||
|
||||
cinema_print_line(1, "Really? Well, the police are being notified.");
|
||||
usleep(250000);
|
||||
cinema_print_line(1, "Really? Well, the police are being notified..");
|
||||
usleep(250000);
|
||||
cinema_print_line(1, "Really? Well, the police are being notified...");
|
||||
usleep(250000);
|
||||
cinema_print_line(1, "Really? Well, the police are being notified....");
|
||||
usleep(250000);
|
||||
cinema_print_line(1, "Really? Well, the police are being notified.... done!");
|
||||
morewait();
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int user_character_typing_speed (void)
|
||||
{
|
||||
int num;
|
||||
|
||||
cinema_blank();
|
||||
num = (int)cinema_getnum_line(0, "What's your typing speed (words per minute)? ");
|
||||
|
||||
if (num > 124)
|
||||
{
|
||||
num = 124;
|
||||
cinema_print_line(1, "Tell me another one...");
|
||||
morewait();
|
||||
}
|
||||
|
||||
return num / 25;
|
||||
}
|
||||
|
||||
static int user_character_hand_shakes (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Hold your arm out. Tense your fist. Hand shaking? [yn] ")) return 0;
|
||||
return -3;
|
||||
}
|
||||
|
||||
static int user_character_ambidextrous (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Ambidextrous, are you? [yn] ")) return 0;
|
||||
return 4;
|
||||
}
|
||||
|
||||
static int user_character_can_cut_deck (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Can you cut a deck of cards with one hand? [yn] ")) return 0;
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int user_character_can_tie_shoes (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, "Can you tie your shoes blindfolded? [yn] ")) return 0;
|
||||
return -3;
|
||||
}
|
||||
|
||||
static int user_character_colds (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you ever get colds? [yn] ")) return 4;
|
||||
if ('y' != cinema_ynq_line(1, "Frequently? [yn] ")) return 0;
|
||||
return -4;
|
||||
}
|
||||
|
||||
static int user_character_recent_accident (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, "Had any serious accident or illness this year? [yn] ")) return -4;
|
||||
return 4;
|
||||
}
|
||||
|
||||
static int user_character_chronic_disease (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, "Have a chronic disease? [yn] ")) return -4;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int user_character_overweight (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, "Overweight or underweight by more than 20 percent? [yn] ")) return -2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int user_character_high_blood_pressure (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' == cinema_ynq_line(0, "High blood pressure? [yn] ")) return -2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int user_character_smoke (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you smoke? [yn] ")) return 0;
|
||||
|
||||
cinema_print_line(1, "*cough*");
|
||||
morewait();
|
||||
|
||||
return -3;
|
||||
}
|
||||
|
||||
static int user_character_aerobics (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Take aerobics classes? [yn] ")) return 0;
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int user_character_miles_run (void)
|
||||
{
|
||||
int num;
|
||||
|
||||
cinema_blank();
|
||||
num = (int)cinema_getnum_line(0, "How many miles can you run? ");
|
||||
|
||||
if (num < 1) return -3;
|
||||
if (num < 5) return 2;
|
||||
if (num < 10) return 4;
|
||||
if (num < 26) return 8;
|
||||
|
||||
cinema_print_line(1, "Right. Sure. Give me a break.");
|
||||
morewait();
|
||||
|
||||
return 8;
|
||||
}
|
||||
|
||||
static int user_character_animals (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do animals react oddly to your presence? [yn] ")) return 0;
|
||||
|
||||
cinema_print_line(1, "How curious that must be.");
|
||||
morewait();
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int user_character_auras (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Can you see auras? [yn] ")) return 0;
|
||||
|
||||
cinema_print_line(1, "How strange.");
|
||||
morewait();
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
static int user_character_out_of_body (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Ever have an out-of-body experience? [yn] ")) return 0;
|
||||
|
||||
cinema_print_line(1, "Wow, man! Fly the friendly skies...");
|
||||
morewait();
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
static int user_character_spell (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Did you ever cast a spell? [yn] ")) return 0;
|
||||
if ('y' != cinema_ynq_line(1, "Did it work? [yn] ")) return 3;
|
||||
|
||||
cinema_print_line(2, "Sure it did...");
|
||||
morewait();
|
||||
|
||||
return 7;
|
||||
}
|
||||
|
||||
static int user_character_esp (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you have ESP? [yn] ")) return 0;
|
||||
|
||||
cinema_print_line(1, "Somehow, I knew you were going to say that.");
|
||||
morewait();
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
static int user_character_pk (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you have PK? [yn] ")) return 0;
|
||||
|
||||
cinema_print_line(1, "I can't tell you how much that moves me.");
|
||||
morewait();
|
||||
|
||||
return 6;
|
||||
}
|
||||
|
||||
static int user_character_ghosts (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Do you believe in ghosts? [yn] ")) return 0;
|
||||
|
||||
cinema_print_line(1, "I do! I do! I do believe in ghosts!");
|
||||
morewait();
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int user_character_irish (void)
|
||||
{
|
||||
cinema_blank();
|
||||
if ('y' != cinema_ynq_line(0, "Are you Irish? [yn] ")) return 0;
|
||||
|
||||
cinema_print_line(1, "Is that blarney or what?");
|
||||
morewait();
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
void user_character_stats(void)
|
||||
{
|
||||
int num;
|
||||
int iqpts = 0;
|
||||
int agipts = 0;
|
||||
int dexpts = 0;
|
||||
int powpts = 0;
|
||||
int conpts = 0;
|
||||
int numints = 0;
|
||||
|
||||
cinema_scene("OK, now try to answer the following questions honestly:", 0, 0);
|
||||
|
||||
Player.str = Player.maxstr = user_character_strength();
|
||||
|
||||
num = user_character_iq_test();
|
||||
if (num) ++numints;
|
||||
iqpts += num;
|
||||
|
||||
num = user_character_undergraduate_exam();
|
||||
if (num) ++numints;
|
||||
iqpts += num;
|
||||
|
||||
num = user_character_graduate_exam();
|
||||
if (num) ++numints;
|
||||
iqpts += num;
|
||||
|
||||
if (0 == numints)
|
||||
Player.iq = user_character_dumb();
|
||||
else
|
||||
Player.iq = iqpts / numints;
|
||||
|
||||
Player.maxiq = Player.iq;
|
||||
|
||||
agipts += user_character_dance();
|
||||
agipts += user_character_martial_art();
|
||||
agipts += user_character_field_sport();
|
||||
agipts += user_character_cave();
|
||||
agipts += user_character_skate();
|
||||
agipts += user_character_handicapped();
|
||||
agipts += user_character_accident_prone();
|
||||
agipts += user_character_bicycle();
|
||||
|
||||
Player.agi = Player.maxagi = 9 + agipts / 2;
|
||||
|
||||
dexpts += user_character_video_games();
|
||||
dexpts += user_character_archer();
|
||||
dexpts += user_character_picked_lock();
|
||||
dexpts += user_character_typing_speed();
|
||||
dexpts += user_character_hand_shakes();
|
||||
dexpts += user_character_ambidextrous();
|
||||
dexpts += user_character_can_cut_deck();
|
||||
dexpts += user_character_can_tie_shoes();
|
||||
|
||||
Player.dex = Player.maxdex = 6 + dexpts / 2;
|
||||
|
||||
conpts += user_character_colds();
|
||||
conpts += user_character_recent_accident();
|
||||
conpts += user_character_chronic_disease();
|
||||
conpts += user_character_overweight();
|
||||
conpts += user_character_high_blood_pressure();
|
||||
conpts += user_character_smoke();
|
||||
conpts += user_character_aerobics();
|
||||
conpts += user_character_miles_run();
|
||||
|
||||
Player.con = Player.maxcon = 12 + conpts / 3;
|
||||
|
||||
powpts += user_character_animals();
|
||||
powpts += user_character_auras();
|
||||
powpts += user_character_out_of_body();
|
||||
powpts += user_character_spell();
|
||||
powpts += user_character_esp();
|
||||
powpts += user_character_pk();
|
||||
powpts += user_character_ghosts();
|
||||
powpts += user_character_irish();
|
||||
|
||||
Player.pow = Player.maxpow = 3 + powpts / 2;
|
||||
|
||||
Player.preference =
|
||||
cinema_interact("mfyn", "Are you sexually interested in males or females? ", 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void omegan_character_stats(void)
|
||||
{
|
||||
int share1,share2,i=0;
|
||||
print1("To reroll hit ESCAPE; hit any other key to accept these stats.");
|
||||
do {
|
||||
i++;
|
||||
#if REROLLS == -1
|
||||
sprintf(Str1, "Generated character # %d", i );
|
||||
#else
|
||||
sprintf(Str1, "You have only %d chance%s to reroll... ", REROLLS - i,
|
||||
(i == (REROLLS-1) ) ? "":"s");
|
||||
#endif
|
||||
print2(Str1);
|
||||
Player.iq = Player.maxiq = 4 + random_range(5)+
|
||||
(share1 = random_range(6)) + (share2 = random_range(6));
|
||||
Player.pow = Player.maxpow = 4 + random_range(5) + share1 +share2;
|
||||
Player.dex = Player.maxdex = 4 + random_range(5)+
|
||||
(share1 = random_range(6)) + (share2 = random_range(6));
|
||||
Player.agi = Player.maxagi = 4 + random_range(5) + share1 +share2;
|
||||
Player.str = Player.maxstr = 4 + random_range(5)+
|
||||
(share1 = random_range(6)) + (share2 = random_range(6));
|
||||
Player.con = Player.maxcon = 4 + random_range(5) + share1 +share2;
|
||||
Player.cash = random_range(100)+random_range(100)+
|
||||
random_range(100)+random_range(100)+random_range(100);
|
||||
Player.hp=Player.maxhp=Player.con;
|
||||
Player.mana=Player.maxmana = calcmana();
|
||||
calc_melee();
|
||||
dataprint();
|
||||
#if REROLLS == -1
|
||||
} while (mgetc() == ESCAPE);
|
||||
#else
|
||||
} while ((i < REROLLS) && (mgetc() == ESCAPE));
|
||||
#endif
|
||||
clearmsg();
|
||||
print1("Please enter your character's name: ");
|
||||
strcpy(Player.name,msgscanstring());
|
||||
if (Player.name[0] >= 'a' && Player.name[0] <= 'z')
|
||||
Player.name[0] += 'A'-'a'; /* capitalise 1st letter */
|
||||
print1("Is your character sexually interested in males or females? [mf] ");
|
||||
do Player.preference = (char) mcigetc();
|
||||
while ((Player.preference != 'm') && (Player.preference != 'f') &&
|
||||
(Player.preference != 'y') && (Player.preference != 'n')); /* :-) */
|
||||
|
||||
}
|
||||
|
708
city.c
Normal file
708
city.c
Normal file
@ -0,0 +1,708 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* city.c */
|
||||
/* some functions to make the city level */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
void mazesite( char,int,int,int );
|
||||
extern int WIDTH, LENGTH;
|
||||
void randommazesite( int,int,int );
|
||||
|
||||
/* loads the city level */
|
||||
void load_city(int populate)
|
||||
{
|
||||
int i,j;
|
||||
pml ml;
|
||||
char site;
|
||||
map *city;
|
||||
map *maze;
|
||||
|
||||
initrand(E_CITY, 0);
|
||||
|
||||
/* Get the hedge maze (which is in the city). */
|
||||
maze = map_open(MAP_hedges);
|
||||
/* Choose a random level from it. */
|
||||
map_setLevel(maze, random_range(map_getDepth(maze)));
|
||||
|
||||
/* Get the city. */
|
||||
city = map_open(MAP_city);
|
||||
map_setLevel(city,0);
|
||||
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
clear_level(Level);
|
||||
Level->depth = 0;
|
||||
Level->environment = E_CITY;
|
||||
|
||||
/* WDT: Rampart, as a special case, has its width stored in a
|
||||
* global variable. */
|
||||
WIDTH = Level->level_width = map_getWidth(city);
|
||||
LENGTH = Level->level_length = map_getLength(city);
|
||||
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
lset(i,j,SEEN);
|
||||
site = map_getSiteChar(city,i,j);
|
||||
switch(site) {
|
||||
/*
|
||||
case '@':
|
||||
Player.x = i; Player.y = j;
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
*/
|
||||
case 'g':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_GARDEN;
|
||||
break;
|
||||
case 'y':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_CEMETARY;
|
||||
break;
|
||||
case 'p': /* WDT: each of these places needs to be assigned
|
||||
* a function (or replaced with an 'x' in the map)
|
||||
*/
|
||||
case '!':
|
||||
case 'I':
|
||||
case 'E':
|
||||
case 'e':
|
||||
case 'x':
|
||||
assign_city_function(i,j);
|
||||
break;
|
||||
case 't':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_TEMPLE;
|
||||
CitySiteList[L_TEMPLE-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_TEMPLE-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_TEMPLE-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
#if 0 /* WDT: HACK! The new city doesn't use portcullis traps, but has other
|
||||
* uses for 'T'. Um... I'd rather have a use for them (that's what
|
||||
* the jail is supposed to be), so this will stay only for now; with
|
||||
* any luck we'll have things fixed up before the next release. */
|
||||
case 'T':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS_TRAP;
|
||||
Level->site[i][j].aux = NOCITYMOVE;
|
||||
break;
|
||||
#endif /* end of hack */
|
||||
case 'R':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_RAISE_PORTCULLIS;
|
||||
Level->site[i][j].aux = NOCITYMOVE;
|
||||
break;
|
||||
case '7':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS;
|
||||
Level->site[i][j].aux = NOCITYMOVE;
|
||||
break;
|
||||
case 'C':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_COLLEGE;
|
||||
CitySiteList[L_COLLEGE-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_COLLEGE-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_COLLEGE-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case 's':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_SORCERORS;
|
||||
CitySiteList[L_SORCERORS-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_SORCERORS-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_SORCERORS-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case 'M':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_MERC_GUILD;
|
||||
CitySiteList[L_MERC_GUILD-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_MERC_GUILD-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_MERC_GUILD-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case 'K':
|
||||
#ifdef INCLUDE_MONKS
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_MONASTERY;
|
||||
CitySiteList[L_MONASTERY-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_MONASTERY-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_MONASTERY-CITYSITEBASE][2] = j;
|
||||
#else
|
||||
assign_city_function(i,j);
|
||||
#endif
|
||||
break;
|
||||
case 'c':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_CASTLE;
|
||||
CitySiteList[L_CASTLE-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_CASTLE-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_CASTLE-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case '?':
|
||||
{
|
||||
static int myI = -1, myJ;
|
||||
char site;
|
||||
if ( myI == -1 )
|
||||
{
|
||||
/* If this is the first time we've seen the hedge maze,
|
||||
* set this as its corner. */
|
||||
myI = i; myJ = j;
|
||||
}
|
||||
site = map_getSiteChar(maze, i - myI, j - myJ);
|
||||
mazesite(site,i,j,populate);
|
||||
}
|
||||
break;
|
||||
case 'P':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_ORDER;
|
||||
CitySiteList[L_ORDER-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_ORDER-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_ORDER-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case 'H':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_CHARITY;
|
||||
CitySiteList[L_CHARITY-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_CHARITY-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_CHARITY-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case 'h':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate)
|
||||
make_horse(i,j); /* from village.c */
|
||||
break;
|
||||
case 'j':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate)
|
||||
make_justiciar(i,j);
|
||||
break;
|
||||
case 'J':
|
||||
Level->site[i][j].locchar = CLOSED_DOOR;
|
||||
Level->site[i][j].p_locf = L_JAIL;
|
||||
break;
|
||||
case 'A':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_ARENA;
|
||||
CitySiteList[L_ARENA-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_ARENA-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_ARENA-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case 'B':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_BANK;
|
||||
CitySiteList[L_BANK-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_BANK-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_BANK-CITYSITEBASE][2] = j;
|
||||
lset(i,j,STOPS);
|
||||
lset(i,j+1,STOPS);
|
||||
lset(i+1,j,STOPS);
|
||||
lset(i-1,j,STOPS);
|
||||
lset(i,j-1,STOPS);
|
||||
break;
|
||||
case 'i':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_TOURIST;
|
||||
CitySiteList[L_TOURIST-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_TOURIST-CITYSITEBASE][2] = j;
|
||||
lset(i,j,STOPS);
|
||||
lset(i,j+1,STOPS);
|
||||
lset(i+1,j,STOPS);
|
||||
lset(i-1,j,STOPS);
|
||||
lset(i,j-1,STOPS);
|
||||
break;
|
||||
case 'X':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_COUNTRYSIDE;
|
||||
CitySiteList[L_COUNTRYSIDE-CITYSITEBASE][0] = TRUE;
|
||||
CitySiteList[L_COUNTRYSIDE-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_COUNTRYSIDE-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case 'v':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_VAULT;
|
||||
Level->site[i][j].aux = NOCITYMOVE;
|
||||
lset(i,j,SECRET);
|
||||
break;
|
||||
case 'S':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].aux = NOCITYMOVE;
|
||||
lset(i,j,SECRET);
|
||||
break;
|
||||
case 'G':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,GUARD);
|
||||
Level->site[i][j].creature->aux1 = i;
|
||||
Level->site[i][j].creature->aux2 = j;
|
||||
}
|
||||
break;
|
||||
case 'u':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate)
|
||||
make_minor_undead(i,j);
|
||||
break;
|
||||
case 'U':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate)
|
||||
make_major_undead(i,j);
|
||||
break;
|
||||
case 'V':
|
||||
Level->site[i][j].showchar = WALL;
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_VAULT;
|
||||
if (populate)
|
||||
make_site_treasure(i,j,5);
|
||||
Level->site[i][j].aux = NOCITYMOVE;
|
||||
lset(i,j,SECRET);
|
||||
break;
|
||||
case '%':
|
||||
Level->site[i][j].showchar = WALL;
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_TRAP_SIREN;
|
||||
if (populate)
|
||||
make_site_treasure(i,j,5);
|
||||
Level->site[i][j].aux = NOCITYMOVE;
|
||||
lset(i,j,SECRET);
|
||||
break;
|
||||
case '$':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate)
|
||||
make_site_treasure(i,j,5);
|
||||
break;
|
||||
case '2':
|
||||
Level->site[i][j].locchar = ALTAR;
|
||||
Level->site[i][j].p_locf = L_ALTAR;
|
||||
Level->site[i][j].aux = ODIN;
|
||||
break;
|
||||
case '3':
|
||||
Level->site[i][j].locchar = ALTAR;
|
||||
Level->site[i][j].p_locf = L_ALTAR;
|
||||
Level->site[i][j].aux = SET;
|
||||
break;
|
||||
case '4':
|
||||
Level->site[i][j].locchar = ALTAR;
|
||||
Level->site[i][j].p_locf = L_ALTAR;
|
||||
Level->site[i][j].aux = ATHENA;
|
||||
break;
|
||||
case '5':
|
||||
Level->site[i][j].locchar = ALTAR;
|
||||
Level->site[i][j].p_locf = L_ALTAR;
|
||||
Level->site[i][j].aux = HECATE;
|
||||
break;
|
||||
case '6':
|
||||
Level->site[i][j].locchar = ALTAR;
|
||||
Level->site[i][j].p_locf = L_ALTAR;
|
||||
Level->site[i][j].aux = DESTINY;
|
||||
break;
|
||||
case '^':
|
||||
Level->site[i][j].showchar = WALL;
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = TRAP_BASE+random_range(NUMTRAPS);
|
||||
lset(i,j,SECRET);
|
||||
break;
|
||||
case '"':
|
||||
Level->site[i][j].locchar = HEDGE;
|
||||
break;
|
||||
case '~':
|
||||
Level->site[i][j].locchar = WATER;
|
||||
Level->site[i][j].p_locf = L_WATER;
|
||||
break;
|
||||
case '=':
|
||||
Level->site[i][j].locchar = WATER;
|
||||
Level->site[i][j].p_locf = L_MAGIC_POOL;
|
||||
break;
|
||||
case '*':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
Level->site[i][j].aux = 10;
|
||||
break;
|
||||
case '#':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
Level->site[i][j].aux = 500;
|
||||
break;
|
||||
case 'T':/* currently meaningless in large city map. */
|
||||
case '>': /* currently meaningless outside of maze.*/
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
case ',':
|
||||
Level->site[i][j].showchar = WALL;
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].aux = NOCITYMOVE;
|
||||
lset(i,j,SECRET);
|
||||
break;
|
||||
case '-':
|
||||
case 'D': /* WDT: should all Ds be changed to -, or should D be given
|
||||
* special treatment? */
|
||||
Level->site[i][j].locchar = CLOSED_DOOR;
|
||||
break;
|
||||
case '1':
|
||||
Level->site[i][j].locchar = STATUE;
|
||||
break;
|
||||
default:
|
||||
printf("\nOops... missed a case [%d,%d]: '%c' (%d)\n", i,j,site,site);
|
||||
morewait();
|
||||
}
|
||||
|
||||
if (loc_statusp(i,j,SEEN)) {
|
||||
if (loc_statusp(i,j,SECRET))
|
||||
Level->site[i][j].showchar = WALL;
|
||||
else Level->site[i][j].showchar = Level->site[i][j].locchar;
|
||||
}
|
||||
}
|
||||
}
|
||||
map_close(maze);
|
||||
map_close(city);
|
||||
City = Level;
|
||||
|
||||
/* make all city monsters asleep, and shorten their wakeup range to 2 */
|
||||
/* to prevent players from being molested by vicious monsters on */
|
||||
/* the streets */
|
||||
for(ml=Level->mlist;ml!=NULL;ml=ml->next) {
|
||||
m_status_reset(ml->m,AWAKE);
|
||||
ml->m->wakeup = 2;
|
||||
}
|
||||
initrand(E_RESTORE, 0);
|
||||
}
|
||||
|
||||
|
||||
void assign_city_function(int x, int y)
|
||||
{
|
||||
static int setup=0;
|
||||
static int next=0;
|
||||
static int permutation[64]; /* number of x's in city map */
|
||||
int i,j,k,l;
|
||||
|
||||
Level->site[x][y].aux = TRUE;
|
||||
|
||||
lset(x,y+1,STOPS);
|
||||
lset(x+1,y,STOPS);
|
||||
lset(x-1,y,STOPS);
|
||||
lset(x,y-1,STOPS);
|
||||
lset(x,y,STOPS); /* FIXED! 12/30/98 */
|
||||
|
||||
if (setup == 0) {
|
||||
setup = 1;
|
||||
for(i=0;i<64;i++)
|
||||
permutation[i] = i;
|
||||
for(i=0;i<500;i++) {
|
||||
j = random_range(64);
|
||||
k = random_range(64);
|
||||
l = permutation[j];
|
||||
permutation[j] = permutation[k];
|
||||
permutation[k] = l;
|
||||
}
|
||||
}
|
||||
if (next > 63) { /* in case someone changes the no. of x's */
|
||||
Level->site[x][y].locchar = CLOSED_DOOR;
|
||||
Level->site[x][y].p_locf = L_HOUSE;
|
||||
if(random_range(5)) Level->site[x][y].aux = LOCKED;
|
||||
}
|
||||
else switch(permutation[next]) {
|
||||
case 0:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_ARMORER;
|
||||
CitySiteList[L_ARMORER-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_ARMORER-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 1:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_CLUB;
|
||||
CitySiteList[L_CLUB-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_CLUB-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 2:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_GYM;
|
||||
CitySiteList[L_GYM-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_GYM-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 3:
|
||||
Level->site[x][y].locchar = CLOSED_DOOR;
|
||||
Level->site[x][y].p_locf = L_THIEVES_GUILD;
|
||||
CitySiteList[L_THIEVES_GUILD-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_THIEVES_GUILD-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 4:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_HEALER;
|
||||
CitySiteList[L_HEALER-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_HEALER-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 5:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_CASINO;
|
||||
CitySiteList[L_CASINO-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_CASINO-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 7:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_DINER;
|
||||
CitySiteList[L_DINER-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_DINER-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 8:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_CRAP;
|
||||
CitySiteList[L_CRAP-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_CRAP-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 6:
|
||||
case 9:
|
||||
case 20:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_COMMANDANT;
|
||||
CitySiteList[L_COMMANDANT-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_COMMANDANT-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 21:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_TAVERN;
|
||||
CitySiteList[L_TAVERN-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_TAVERN-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 10:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_ALCHEMIST;
|
||||
CitySiteList[L_ALCHEMIST-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_ALCHEMIST-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 11:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_DPW;
|
||||
CitySiteList[L_DPW-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_DPW-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 12:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_LIBRARY;
|
||||
CitySiteList[L_LIBRARY-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_LIBRARY-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 13:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_PAWN_SHOP;
|
||||
CitySiteList[L_PAWN_SHOP-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_PAWN_SHOP-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 14:
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].p_locf = L_CONDO;
|
||||
CitySiteList[L_CONDO-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_CONDO-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
case 15:
|
||||
Level->site[x][y].locchar = CLOSED_DOOR;
|
||||
Level->site[x][y].p_locf = L_BROTHEL;
|
||||
CitySiteList[L_BROTHEL-CITYSITEBASE][1] = x;
|
||||
CitySiteList[L_BROTHEL-CITYSITEBASE][2] = y;
|
||||
break;
|
||||
default:
|
||||
Level->site[x][y].locchar = CLOSED_DOOR;
|
||||
switch(random_range(6)) {
|
||||
case 0: Level->site[x][y].p_locf = L_HOVEL; break;
|
||||
case 1: case 2: case 3:
|
||||
case 4: Level->site[x][y].p_locf = L_HOUSE; break;
|
||||
case 5: Level->site[x][y].p_locf = L_MANSION; break;
|
||||
}
|
||||
if(random_range(5)) Level->site[x][y].aux = LOCKED;
|
||||
break;
|
||||
}
|
||||
next++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* makes a hiscore npc for mansions */
|
||||
void make_justiciar(int i, int j)
|
||||
{
|
||||
pml ml = ((pml) checkmalloc(sizeof(mltype)));
|
||||
ml->m = ((pmt) checkmalloc(sizeof(montype)));
|
||||
*(ml->m) = Monsters[NPC];
|
||||
make_hiscore_npc(ml->m,15);
|
||||
ml->m->x = i;
|
||||
ml->m->y = j;
|
||||
Level->site[i][j].creature = ml->m;
|
||||
ml->m->click = (Tick + 1) % 60;
|
||||
ml->next = Level->mlist;
|
||||
Level->mlist = ml;
|
||||
m_status_reset(ml->m,AWAKE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* loads the city level */
|
||||
void resurrect_guards(void)
|
||||
{
|
||||
int i,j;
|
||||
char site;
|
||||
|
||||
FILE *fd;
|
||||
|
||||
strcpy(Str3,Omegalib);
|
||||
strcat(Str3,"city.dat");
|
||||
fd = checkfopen(Str3,"rb");
|
||||
site = cryptkey("city.dat");
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
site = getc(fd)^site;
|
||||
if (site == 'G') {
|
||||
make_site_monster(i,j,GUARD);
|
||||
Level->site[i][j].creature->monstring = "undead guardsman";
|
||||
Level->site[i][j].creature->meleef = M_MELEE_SPIRIT;
|
||||
Level->site[i][j].creature->movef = M_MOVE_SPIRIT;
|
||||
Level->site[i][j].creature->strikef = M_STRIKE_MISSILE;
|
||||
Level->site[i][j].creature->immunity = EVERYTHING-pow2(NORMAL_DAMAGE);
|
||||
Level->site[i][j].creature->hp *= 2;
|
||||
Level->site[i][j].creature->hit *= 2;
|
||||
Level->site[i][j].creature->dmg *= 2;
|
||||
Level->site[i][j].creature->ac *= 2;
|
||||
m_status_set(Level->site[i][j].creature,HOSTILE);
|
||||
m_status_set(Level->site[i][j].creature,AWAKE);
|
||||
}
|
||||
}
|
||||
site = getc(fd)^site;
|
||||
}
|
||||
fclose(fd);
|
||||
}
|
||||
|
||||
|
||||
void mazesite(char site, int i, int j, int populate)
|
||||
{
|
||||
switch(site) {
|
||||
case '"':
|
||||
Level->site[i][j].locchar = HEDGE;
|
||||
if (random_range(10))
|
||||
Level->site[i][j].p_locf = L_HEDGE;
|
||||
else
|
||||
Level->site[i][j].p_locf = L_TRIFID;
|
||||
break;
|
||||
case '-':
|
||||
Level->site[i][j].locchar = CLOSED_DOOR;
|
||||
break;
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
case '>':
|
||||
Level->site[i][j].locchar = STAIRS_DOWN;
|
||||
Level->site[i][j].p_locf = L_SEWER;
|
||||
CitySiteList[L_SEWER-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_SEWER-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case 'z':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_MAZE;
|
||||
break;
|
||||
case 'O':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].p_locf = L_ORACLE;
|
||||
CitySiteList[L_ORACLE-CITYSITEBASE][1] = i;
|
||||
CitySiteList[L_ORACLE-CITYSITEBASE][2] = j;
|
||||
break;
|
||||
case '?':
|
||||
randommazesite(i,j,populate);
|
||||
break;
|
||||
}
|
||||
lreset(i,j,SEEN);
|
||||
}
|
||||
|
||||
void randommazesite(int i, int j, int populate)
|
||||
{
|
||||
switch(random_range(7)) {
|
||||
case 0: case 1:
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
/* Level->site[i][j].p_locf = TRAP_BASE+random_range(NUMTRAPS); */
|
||||
Level->site[i][j].p_locf = TRAP_BASE+random_range(NUM_SAFE_TRAPS);
|
||||
break;
|
||||
case 2: case 3:
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate)
|
||||
make_site_monster(i,j,-1);
|
||||
break;
|
||||
case 4: case 5:
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate)
|
||||
make_site_treasure(i,j,5);
|
||||
break;
|
||||
default:
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* undead are not hostile unless disturbed.... */
|
||||
void make_minor_undead(int i, int j)
|
||||
{
|
||||
int mid;
|
||||
if (random_range(2)) mid = GHOST;
|
||||
else mid = HAUNT;
|
||||
make_site_monster(i,j,mid);
|
||||
m_status_reset(Level->site[i][j].creature,AWAKE);
|
||||
m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
|
||||
/* undead are not hostile unless disturbed.... */
|
||||
void make_major_undead(int i, int j)
|
||||
{
|
||||
int mid;
|
||||
if (random_range(2)) mid = LICHE; /* lich */
|
||||
else mid = VAMP_LORD; /*vampire lord*/
|
||||
make_site_monster(i,j,mid);
|
||||
m_status_reset(Level->site[i][j].creature,AWAKE);
|
||||
m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
|
||||
|
||||
static char jail[5][11] =
|
||||
{
|
||||
{ '#', '#', '*', '#', '#', '*', '#', '#', '*', '#', '#' },
|
||||
{ '#', '#', '*', '#', '#', '*', '#', '*', '#', '#', '#' },
|
||||
{ '#', '#', 'T', '#', 'T', '#', 'T', '#', 'T', '#', '#' },
|
||||
{ '#', '#', '7', '#', '7', '#', '7', '#', '7', '#', '#' },
|
||||
{ '#', '#', 'R', '#', 'R', '#', 'R', '#', 'R', '#', '#' }
|
||||
};
|
||||
|
||||
/* fixes up the jail in case it has been munged by player action */
|
||||
void repair_jail(void)
|
||||
{
|
||||
int i,j;
|
||||
for(i=0;i<11;i++)
|
||||
for(j=0;j<5;j++) {
|
||||
switch(jail[j][i]) {
|
||||
case '#':
|
||||
City->site[i+35][j+52].locchar = WALL;
|
||||
City->site[i+35][j+52].p_locf = L_NO_OP;
|
||||
City->site[i+35][j+52].aux = NOCITYMOVE;
|
||||
break;
|
||||
case '*':
|
||||
City->site[i+35][j+52].locchar = WALL;
|
||||
City->site[i+35][j+52].p_locf = L_NO_OP;
|
||||
City->site[i+35][j+52].aux = 10;
|
||||
break;
|
||||
case 'T':
|
||||
City->site[i+35][j+52].locchar = FLOOR;
|
||||
City->site[i+35][j+52].p_locf = L_PORTCULLIS_TRAP;
|
||||
City->site[i+35][j+52].aux = NOCITYMOVE;
|
||||
break;
|
||||
case '7':
|
||||
City->site[i+35][j+52].locchar = FLOOR;
|
||||
City->site[i+35][j+52].p_locf = L_PORTCULLIS;
|
||||
City->site[i+35][j+52].aux = NOCITYMOVE;
|
||||
break;
|
||||
case 'R':
|
||||
City->site[i+35][j+52].locchar = FLOOR;
|
||||
City->site[i+35][j+52].p_locf = L_RAISE_PORTCULLIS;
|
||||
City->site[i+35][j+52].aux = NOCITYMOVE;
|
||||
break;
|
||||
}
|
||||
lreset(i+35, j+52, CHANGED);
|
||||
}
|
||||
}
|
334
command1.c
Normal file
334
command1.c
Normal file
@ -0,0 +1,334 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* command1.c */
|
||||
|
||||
/* This file has the two toplevel command scanners, p_process,
|
||||
which works everywhere but the countryside, and p_couyntry_process,
|
||||
which works.... */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
/* deal with a new player command in dungeon or city mode*/
|
||||
void p_process(void)
|
||||
{
|
||||
static int searchval=0;
|
||||
|
||||
if (Player.status[BERSERK])
|
||||
if (goberserk()) {
|
||||
setgamestatus(SKIP_PLAYER);
|
||||
drawvision(Player.x,Player.y);
|
||||
}
|
||||
if (! gamestatusp(SKIP_PLAYER)) {
|
||||
if (searchval > 0) {
|
||||
searchval--;
|
||||
if (searchval == 0) resetgamestatus(FAST_MOVE);
|
||||
}
|
||||
drawvision(Player.x,Player.y);
|
||||
if (! gamestatusp(FAST_MOVE)) {
|
||||
searchval = 0;
|
||||
Cmd = mgetc();
|
||||
clear_if_necessary();
|
||||
}
|
||||
Command_Duration = 0;
|
||||
switch (Cmd) {
|
||||
case ' ':
|
||||
case 13: setgamestatus(SKIP_MONSTERS); break; /*no op on space or return*/
|
||||
case 6: abortshadowform(); break; /* ^f */
|
||||
case 7: wizard(); break; /* ^g */
|
||||
case 4: player_dump(); break; /* ^d */
|
||||
case 9: display_pack(); morewait(); xredraw(); break; /* ^i */
|
||||
case 11: if (gamestatusp(CHEATED)) frobgamestatus();
|
||||
case 12: xredraw(); setgamestatus(SKIP_MONSTERS); break; /* ^l */
|
||||
#ifndef MSDOS_SUPPORTED_ANTIQUE
|
||||
case 16: bufferprint(); setgamestatus(SKIP_MONSTERS); break; /* ^p */
|
||||
#else
|
||||
case 15: bufferprint(); setgamestatus(SKIP_MONSTERS); break; /* ^o */
|
||||
#endif
|
||||
case 18: redraw(); setgamestatus(SKIP_MONSTERS); break; /* ^r */
|
||||
case 23: if (gamestatusp(CHEATED)) drawscreen(); break; /* ^w */
|
||||
case 24: /* ^x */
|
||||
if (gamestatusp(CHEATED) ||
|
||||
Player.rank[ADEPT])
|
||||
wish(1);
|
||||
Command_Duration = 5;
|
||||
break;
|
||||
case 'a': zapwand();
|
||||
Command_Duration = Player.speed*8/5;
|
||||
break;
|
||||
case 'c': closedoor();
|
||||
Command_Duration = Player.speed*2/5;
|
||||
break;
|
||||
case 'd': drop();
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case 'e': eat();
|
||||
Command_Duration = 30;
|
||||
break;
|
||||
case 'f': fire();
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case 'g': pickup();
|
||||
Command_Duration = Player.speed*10/5;
|
||||
break;
|
||||
case 'i':
|
||||
do_inventory_control();
|
||||
break;
|
||||
case 'm': magic();
|
||||
Command_Duration = 12;
|
||||
break;
|
||||
case 'o': opendoor();
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case 'p': pickpocket();
|
||||
Command_Duration = Player.speed*20/5;
|
||||
break;
|
||||
case 'q': quaff();
|
||||
Command_Duration = 10;
|
||||
break;
|
||||
case 'r': peruse();
|
||||
Command_Duration = 20;
|
||||
break;
|
||||
case 's': search(&searchval);
|
||||
Command_Duration = 20;
|
||||
break;
|
||||
case 't': talk();
|
||||
Command_Duration = 10;
|
||||
break;
|
||||
case 'v': vault();
|
||||
Command_Duration = Player.speed*10/5;
|
||||
break;
|
||||
case 'x': examine();
|
||||
Command_Duration = 1;
|
||||
break;
|
||||
case 'z': bash_location();
|
||||
Command_Duration = Player.speed*10/5;
|
||||
break;
|
||||
case 'A': activate();
|
||||
Command_Duration = 10;
|
||||
break;
|
||||
case 'C': callitem();
|
||||
break;
|
||||
case 'D': disarm();
|
||||
Command_Duration = 30;
|
||||
break;
|
||||
case 'E': dismount_steed();
|
||||
Command_Duration = Player.speed*10/5;
|
||||
break;
|
||||
case 'F': tacoptions();
|
||||
break;
|
||||
case 'G': give();
|
||||
Command_Duration = 10;
|
||||
break;
|
||||
case 'I':
|
||||
if (! optionp(TOPINV)) top_inventory_control();
|
||||
else {
|
||||
display_possessions();
|
||||
inventory_control();
|
||||
}
|
||||
break;
|
||||
case 'M': city_move();
|
||||
Command_Duration = 10;
|
||||
break;
|
||||
case 'O': setoptions();
|
||||
#if defined(AMIGA) || defined(MSDOS_SUPPORTED_ANTIQUE)
|
||||
show_screen();
|
||||
xredraw();
|
||||
#endif
|
||||
break;
|
||||
case 'P': show_license();
|
||||
break; /* actually show_license is in file.c */
|
||||
case 'Q': quit();
|
||||
break;
|
||||
case 'R': rename_player();
|
||||
break;
|
||||
case 'S': save(optionp(COMPRESS_OPTION), FALSE);
|
||||
break;
|
||||
case 'T': tunnel();
|
||||
Command_Duration = Player.speed*30/5;
|
||||
break;
|
||||
case 'V': version();
|
||||
break;
|
||||
#ifdef MSDOS_SUPPORTED_ANTIQUE
|
||||
case 'X': check_memory(); break;
|
||||
#endif
|
||||
case 'Z': bash_item();
|
||||
Command_Duration = Player.speed*10/5;
|
||||
break;
|
||||
case '.': rest();
|
||||
Command_Duration = 10;
|
||||
break;
|
||||
case ',':
|
||||
Command_Duration = 10;
|
||||
nap();
|
||||
break;
|
||||
case '>':
|
||||
downstairs();
|
||||
break;
|
||||
case '<':
|
||||
upstairs();
|
||||
break;
|
||||
case '@':
|
||||
p_movefunction(Level->site[Player.x][Player.y].p_locf);
|
||||
Command_Duration = 5;
|
||||
break;
|
||||
case '#': if (gamestatusp(CHEATED)) editstats(); break; /* RAC - char editor */
|
||||
case '/': charid(); setgamestatus(SKIP_MONSTERS);
|
||||
break;
|
||||
case '?': help(); setgamestatus(SKIP_MONSTERS);
|
||||
break;
|
||||
case '4':
|
||||
case 'h': moveplayer(-1,0);
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case '2':
|
||||
case 'j': moveplayer(0,1);
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case '8':
|
||||
case 'k': moveplayer(0,-1);
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case '6':
|
||||
case 'l': moveplayer(1,0);
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case '1':
|
||||
case 'b': moveplayer(-1,1);
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case '3':
|
||||
case 'n': moveplayer(1,1);
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case '7':
|
||||
case 'y': moveplayer(-1,-1);
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case '9':
|
||||
case 'u': moveplayer(1,-1);
|
||||
Command_Duration = Player.speed*5/5;
|
||||
break;
|
||||
case '5':
|
||||
setgamestatus(SKIP_MONSTERS); /* don't do anything; a dummy turn */
|
||||
Cmd = mgetc();
|
||||
while ((Cmd != ESCAPE) &&
|
||||
((Cmd < '1') || (Cmd > '9') || (Cmd=='5'))) {
|
||||
print3("Run in keypad direction [ESCAPE to abort]: ");
|
||||
Cmd = mgetc();
|
||||
}
|
||||
if (Cmd != ESCAPE) setgamestatus(FAST_MOVE);
|
||||
break;
|
||||
case 'H': setgamestatus(FAST_MOVE); Cmd = 'h'; moveplayer(-1,0);
|
||||
Command_Duration = Player.speed*4/5;
|
||||
break;
|
||||
case 'J': setgamestatus(FAST_MOVE); Cmd = 'j'; moveplayer(0,1);
|
||||
Command_Duration = Player.speed*4/5;
|
||||
break;
|
||||
case 'K': setgamestatus(FAST_MOVE); Cmd = 'k'; moveplayer(0,-1);
|
||||
Command_Duration = Player.speed*4/5;
|
||||
break;
|
||||
case 'L': setgamestatus(FAST_MOVE); Cmd = 'l'; moveplayer(1,0);
|
||||
Command_Duration = Player.speed*4/5;
|
||||
break;
|
||||
case 'B': setgamestatus(FAST_MOVE); Cmd = 'b'; moveplayer(-1,1);
|
||||
Command_Duration = Player.speed*4/5;
|
||||
break;
|
||||
case 'N': setgamestatus(FAST_MOVE); Cmd = 'n'; moveplayer(1,1);
|
||||
Command_Duration = Player.speed*4/5;
|
||||
break;
|
||||
case 'Y': setgamestatus(FAST_MOVE); Cmd = 'y'; moveplayer(-1,-1);
|
||||
Command_Duration = Player.speed*4/5;
|
||||
break;
|
||||
case 'U': setgamestatus(FAST_MOVE); Cmd = 'u'; moveplayer(1,-1);
|
||||
Command_Duration = Player.speed*4/5;
|
||||
break;
|
||||
default: commanderror(); setgamestatus(SKIP_MONSTERS); break;
|
||||
}
|
||||
}
|
||||
if (Current_Environment != E_COUNTRYSIDE) roomcheck();
|
||||
screencheck(Player.x,Player.y);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* deal with a new player command in countryside mode */
|
||||
void p_country_process(void)
|
||||
{
|
||||
int no_op;
|
||||
|
||||
drawvision(Player.x,Player.y);
|
||||
do {
|
||||
no_op = FALSE;
|
||||
Cmd = mgetc();
|
||||
clear_if_necessary();
|
||||
switch (Cmd) {
|
||||
case ' ':
|
||||
case 13: no_op = TRUE; break;
|
||||
case 7: wizard(); break; /* ^g */
|
||||
case 12: xredraw(); no_op = TRUE; break; /* ^l */
|
||||
#ifndef MSDOS_SUPPORTED_ANTIQUE
|
||||
case 16: bufferprint(); no_op = TRUE; break; /* ^p */
|
||||
#else
|
||||
case 15: bufferprint(); no_op = TRUE; break; /* ^o */
|
||||
#endif
|
||||
case 18: redraw(); no_op = TRUE; break; /* ^r */
|
||||
case 23: if (gamestatusp(CHEATED)) drawscreen(); break; /* ^w */
|
||||
case 24: if (gamestatusp(CHEATED) ||
|
||||
Player.rank[ADEPT]) wish(1); break; /* ^x */
|
||||
case 'd': drop(); break;
|
||||
case 'e': eat(); break;
|
||||
case 'i':
|
||||
do_inventory_control();
|
||||
break;
|
||||
case 's': countrysearch(); break;
|
||||
case 'x': examine(); break;
|
||||
case 'E': dismount_steed(); break;
|
||||
case 'H': hunt(Country[Player.x][Player.y].current_terrain_type); break;
|
||||
case 'I':
|
||||
if (! optionp(TOPINV)) top_inventory_control();
|
||||
else {
|
||||
menuclear();
|
||||
display_possessions();
|
||||
inventory_control();
|
||||
}
|
||||
break;
|
||||
case 'O': setoptions(); break;
|
||||
case 'P': show_license(); break; /* actually show_license is in file.c */
|
||||
case 'Q': quit(); break;
|
||||
case 'R': rename_player(); break;
|
||||
case 'S': save(optionp(COMPRESS_OPTION), FALSE); break;
|
||||
case 'V': version(); break;
|
||||
#ifdef MSDOS_SUPPORTED_ANTIQUE
|
||||
case 'X': check_memory(); break;
|
||||
#endif
|
||||
case '>':
|
||||
enter_site(Country[Player.x][Player.y].base_terrain_type);
|
||||
break;
|
||||
case '#': if (gamestatusp(CHEATED)) editstats(); break; /* RAC - char editor */
|
||||
case '/': charid(); no_op = TRUE; break;
|
||||
case '?': help(); no_op = TRUE; break;
|
||||
case '4':
|
||||
case 'h': movepincountry(-1,0); break;
|
||||
case '2':
|
||||
case 'j': movepincountry(0,1); break;
|
||||
case '8':
|
||||
case 'k': movepincountry(0,-1); break;
|
||||
case '6':
|
||||
case 'l': movepincountry(1,0); break;
|
||||
case '1':
|
||||
case 'b': movepincountry(-1,1); break;
|
||||
case '3':
|
||||
case 'n': movepincountry(1,1); break;
|
||||
case '7':
|
||||
case 'y': movepincountry(-1,-1); break;
|
||||
case '9':
|
||||
case 'u': movepincountry(1,-1); break;
|
||||
default: commanderror(); no_op = TRUE; break;
|
||||
}
|
||||
} while (no_op);
|
||||
screencheck(Player.x,Player.y);
|
||||
}
|
||||
|
||||
|
1219
command2.c
Normal file
1219
command2.c
Normal file
File diff suppressed because it is too large
Load Diff
1121
command3.c
Normal file
1121
command3.c
Normal file
File diff suppressed because it is too large
Load Diff
1444
compress.c
Normal file
1444
compress.c
Normal file
File diff suppressed because it is too large
Load Diff
647
country.c
Normal file
647
country.c
Normal file
@ -0,0 +1,647 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* country.c */
|
||||
/* load_country(), and all load_ functions for places which are */
|
||||
/* accessible from the country and don't have their own files */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
/* loads the countryside level from the data file */
|
||||
void load_country(void)
|
||||
{
|
||||
int i,j;
|
||||
char site;
|
||||
map *side;
|
||||
|
||||
side = map_open(MAP_country);
|
||||
map_setLevel(side,0);
|
||||
|
||||
for(j=0;j<COUNTRY_LENGTH;j++) {
|
||||
for(i=0;i<COUNTRY_WIDTH;i++) {
|
||||
site = map_getSiteChar(side,i,j);
|
||||
Country[i][j].aux = 0;
|
||||
Country[i][j].status = 0;
|
||||
switch (site) {
|
||||
case (PASS&0xff):
|
||||
Country[i][j].base_terrain_type = PASS;
|
||||
Country[i][j].current_terrain_type = MOUNTAINS;
|
||||
break;
|
||||
case (CASTLE&0xff):
|
||||
Country[i][j].base_terrain_type = CASTLE;
|
||||
Country[i][j].current_terrain_type = MOUNTAINS;
|
||||
break;
|
||||
case (STARPEAK&0xff):
|
||||
Country[i][j].base_terrain_type = STARPEAK;
|
||||
Country[i][j].current_terrain_type = MOUNTAINS;
|
||||
break;
|
||||
case (CAVES&0xff):
|
||||
Country[i][j].base_terrain_type = CAVES;
|
||||
Country[i][j].current_terrain_type = MOUNTAINS;
|
||||
break;
|
||||
case (VOLCANO&0xff):
|
||||
Country[i][j].base_terrain_type = VOLCANO;
|
||||
Country[i][j].current_terrain_type = MOUNTAINS;
|
||||
break;
|
||||
case (DRAGONLAIR&0xff):
|
||||
Country[i][j].base_terrain_type = DRAGONLAIR;
|
||||
Country[i][j].current_terrain_type = DESERT;
|
||||
break;
|
||||
case (MAGIC_ISLE&0xff):
|
||||
Country[i][j].base_terrain_type = MAGIC_ISLE;
|
||||
Country[i][j].current_terrain_type = CHAOS_SEA;
|
||||
break;
|
||||
case (PALACE&0xff):
|
||||
Country[i][j].base_terrain_type = PALACE;
|
||||
Country[i][j].current_terrain_type = JUNGLE;
|
||||
break;
|
||||
case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = VILLAGE;
|
||||
Country[i][j].aux = 1+site-'a';
|
||||
break;
|
||||
case '1': case '2': case '3': case '4': case '5': case '6':
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = TEMPLE;
|
||||
Country[i][j].aux = site-'0';
|
||||
break;
|
||||
case (PLAINS&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = PLAINS;
|
||||
break;
|
||||
case (TUNDRA&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = TUNDRA;
|
||||
break;
|
||||
case (ROAD&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = ROAD;
|
||||
break;
|
||||
case (MOUNTAINS&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = MOUNTAINS;
|
||||
break;
|
||||
case (RIVER&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = RIVER;
|
||||
break;
|
||||
case (CITY&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = CITY;
|
||||
break;
|
||||
case (FOREST&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = FOREST;
|
||||
break;
|
||||
case (JUNGLE&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = JUNGLE;
|
||||
break;
|
||||
case (SWAMP&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = SWAMP;
|
||||
break;
|
||||
case (DESERT&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = DESERT;
|
||||
break;
|
||||
case (CHAOS_SEA&0xff):
|
||||
Country[i][j].current_terrain_type =
|
||||
Country[i][j].base_terrain_type = CHAOS_SEA;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
map_close(side);
|
||||
}
|
||||
|
||||
|
||||
/* loads the dragon's lair into Level*/
|
||||
void load_dlair (int empty, int populate)
|
||||
{
|
||||
int i,j;
|
||||
char site;
|
||||
map *lair;
|
||||
|
||||
/* WDT: Wait. What if, instead of always emptying the dragon's lair after
|
||||
* the first time it was entered, what if we instead changed its layout
|
||||
* so that the next time you entered you'd be surrounded by irate
|
||||
* dragons? (Unless you'd already killed the dragonlord, of course.)
|
||||
* How cool would THAT be! */
|
||||
|
||||
if (empty)
|
||||
{
|
||||
mprint("The Lair is now devoid of inhabitants and treasure.");
|
||||
morewait();
|
||||
}
|
||||
|
||||
if (!populate)
|
||||
empty = TRUE;
|
||||
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel))
|
||||
{
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = checkmalloc(sizeof(levtype));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
|
||||
clear_level(Level);
|
||||
Level->environment = E_DLAIR;
|
||||
lair = map_open(MAP_dlair);
|
||||
map_setLevel(lair,0);
|
||||
|
||||
Level->level_width = map_getWidth(lair);
|
||||
Level->level_length = map_getLength(lair);
|
||||
|
||||
for (j = 0; j < Level->level_length; ++j)
|
||||
{
|
||||
for (i = 0; i < Level->level_width; ++i)
|
||||
{
|
||||
Level->site[i][j].lstatus = 0;
|
||||
|
||||
if (i < 48)
|
||||
Level->site[i][j].roomnumber = RS_CAVERN;
|
||||
else
|
||||
Level->site[i][j].roomnumber = RS_DRAGONLORD;
|
||||
|
||||
Level->site[i][j].p_locf = L_NO_OP;
|
||||
site = map_getSiteChar(lair,i,j);
|
||||
switch (site)
|
||||
{
|
||||
case 'D':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (!empty)
|
||||
{
|
||||
make_site_monster(i,j,DRAGON_LORD);
|
||||
Level->site[i][j].creature->specialf = M_SP_LAIR;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (!empty)
|
||||
{
|
||||
make_site_monster(i,j,DRAGON); /* elite dragons, actually */
|
||||
Level->site[i][j].creature->specialf = M_SP_LAIR;
|
||||
Level->site[i][j].creature->hit *= 2;
|
||||
Level->site[i][j].creature->dmg *= 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'W':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (!empty) make_site_monster(i,j,KING_WYV);
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (!empty) make_site_monster(i,j,RANDOM);
|
||||
break;
|
||||
|
||||
case 'S':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].showchar = WALL;
|
||||
if (!empty) lset(i,j,SECRET);
|
||||
Level->site[i][j].roomnumber = RS_SECRETPASSAGE;
|
||||
break;
|
||||
|
||||
case '$':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (!empty) make_site_treasure(i,j,10);
|
||||
break;
|
||||
|
||||
case 's':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_TRAP_SIREN;
|
||||
break;
|
||||
|
||||
case '7':
|
||||
if (!empty)
|
||||
Level->site[i][j].locchar = PORTCULLIS;
|
||||
else
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS;
|
||||
break;
|
||||
|
||||
case 'R':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_RAISE_PORTCULLIS;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS;
|
||||
break;
|
||||
|
||||
case 'T':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (!empty) Level->site[i][j].p_locf = L_PORTCULLIS_TRAP;
|
||||
break;
|
||||
|
||||
case 'X':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_TACTICAL_EXIT;
|
||||
break;
|
||||
|
||||
case '#':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
Level->site[i][j].aux = 150;
|
||||
break;
|
||||
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
map_close(lair);
|
||||
}
|
||||
|
||||
|
||||
/* loads the star peak into Level*/
|
||||
void load_speak(int empty, int populate)
|
||||
{
|
||||
int i,j,safe = Player.alignment > 0;
|
||||
char site;
|
||||
map *peak;
|
||||
|
||||
if (empty) {
|
||||
mprint("The peak is now devoid of inhabitants and treasure.");
|
||||
morewait();
|
||||
}
|
||||
|
||||
if (!populate)
|
||||
empty = TRUE;
|
||||
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
clear_level(Level);
|
||||
Level->environment = E_STARPEAK;
|
||||
|
||||
peak = map_open(MAP_speak);
|
||||
map_setLevel(peak,0);
|
||||
Level->level_length = map_getLength(peak);
|
||||
Level->level_width = map_getWidth(peak);
|
||||
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
Level->site[i][j].lstatus = 0;
|
||||
Level->site[i][j].roomnumber = RS_STARPEAK;
|
||||
Level->site[i][j].p_locf = L_NO_OP;
|
||||
site = map_getSiteChar(peak,i,j);
|
||||
switch(site) {
|
||||
case 'S':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].showchar = WALL;
|
||||
lset(i,j,SECRET);
|
||||
Level->site[i][j].roomnumber = RS_SECRETPASSAGE;
|
||||
break;
|
||||
case 'L':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (! empty) {
|
||||
make_site_monster(i,j,LAWBRINGER);
|
||||
if (safe) m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
break;
|
||||
case 's':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (! empty) {
|
||||
make_site_monster(i,j,SERV_LAW); /* servant of law */
|
||||
if (safe) m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
break;
|
||||
case 'M':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (! empty) {
|
||||
make_site_monster(i,j,-1);
|
||||
if (safe) m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
break;
|
||||
case '$':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (! empty)
|
||||
make_site_treasure(i,j,10);
|
||||
break;
|
||||
case '7':
|
||||
if (! empty)
|
||||
Level->site[i][j].locchar = PORTCULLIS;
|
||||
else Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS;
|
||||
break;
|
||||
case 'R':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_RAISE_PORTCULLIS;
|
||||
break;
|
||||
case '-':
|
||||
Level->site[i][j].locchar = CLOSED_DOOR;
|
||||
break;
|
||||
case '|':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
break;
|
||||
case 'p':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS;
|
||||
break;
|
||||
case 'T':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (! empty)
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS_TRAP;
|
||||
break;
|
||||
case 'X':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_TACTICAL_EXIT;
|
||||
break;
|
||||
case '#':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
Level->site[i][j].aux = 150;
|
||||
break;
|
||||
case '4':
|
||||
Level->site[i][j].locchar = RUBBLE;
|
||||
Level->site[i][j].p_locf = L_RUBBLE;
|
||||
break;
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
map_close(peak);
|
||||
}
|
||||
|
||||
/* loads the magic isle into Level*/
|
||||
void load_misle(int empty, int populate)
|
||||
{
|
||||
int i,j;
|
||||
char site;
|
||||
map *isle;
|
||||
|
||||
if (empty) {
|
||||
mprint("The isle is now devoid of inhabitants and treasure.");
|
||||
morewait();
|
||||
}
|
||||
|
||||
if (!populate)
|
||||
empty = TRUE;
|
||||
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
clear_level(Level);
|
||||
Level->environment = E_MAGIC_ISLE;
|
||||
|
||||
isle = map_open(MAP_misle);
|
||||
map_setLevel(isle,0);
|
||||
|
||||
Level->level_length = map_getLength(isle);
|
||||
Level->level_width = map_getWidth(isle);
|
||||
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
Level->site[i][j].lstatus = 0;
|
||||
Level->site[i][j].roomnumber = RS_MAGIC_ISLE;
|
||||
Level->site[i][j].p_locf = L_NO_OP;
|
||||
site = map_getSiteChar(isle,i,j);
|
||||
switch(site) {
|
||||
case 'E':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (! empty)
|
||||
make_site_monster(i,j,EATER); /* eater of magic */
|
||||
break;
|
||||
case 'm':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (! empty)
|
||||
make_site_monster(i,j,MIL_PRIEST); /* militant priest */
|
||||
break;
|
||||
case 'n':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (! empty)
|
||||
make_site_monster(i,j,NAZGUL);
|
||||
break;
|
||||
case 'X':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_TACTICAL_EXIT;
|
||||
break;
|
||||
case '#':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
Level->site[i][j].aux = 150;
|
||||
break;
|
||||
case '4':
|
||||
Level->site[i][j].locchar = RUBBLE;
|
||||
Level->site[i][j].p_locf = L_RUBBLE;
|
||||
break;
|
||||
case '~':
|
||||
Level->site[i][j].locchar = WATER;
|
||||
Level->site[i][j].p_locf = L_CHAOS;
|
||||
break;
|
||||
case '=':
|
||||
Level->site[i][j].locchar = WATER;
|
||||
Level->site[i][j].p_locf = L_MAGIC_POOL;
|
||||
break;
|
||||
case '-':
|
||||
Level->site[i][j].locchar = CLOSED_DOOR;
|
||||
break;
|
||||
case '|':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
break;
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
map_close(isle);
|
||||
}
|
||||
|
||||
|
||||
/* loads a temple into Level*/
|
||||
void load_temple(int deity, int populate)
|
||||
{
|
||||
int i,j;
|
||||
char site;
|
||||
pml ml;
|
||||
map *holy;
|
||||
|
||||
/* initrand(Current_Environment, deity); */ /* FIXED! 12/30/98 */
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
clear_level(Level);
|
||||
Level->environment = E_TEMPLE;
|
||||
holy = map_open(MAP_temple);
|
||||
map_setLevel(holy,0); /* WDT: possibly use different levels for different
|
||||
* faiths? */
|
||||
|
||||
Level->level_length = map_getLength(holy);
|
||||
Level->level_width = map_getWidth(holy);
|
||||
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
switch(deity) {
|
||||
case ODIN: Level->site[i][j].roomnumber = RS_ODIN; break;
|
||||
case SET: Level->site[i][j].roomnumber = RS_SET; break;
|
||||
case HECATE: Level->site[i][j].roomnumber = RS_HECATE; break;
|
||||
case ATHENA: Level->site[i][j].roomnumber = RS_ATHENA; break;
|
||||
case DRUID: Level->site[i][j].roomnumber = RS_DRUID; break;
|
||||
case DESTINY: Level->site[i][j].roomnumber = RS_DESTINY; break;
|
||||
}
|
||||
site = map_getSiteChar(holy,i,j);
|
||||
switch(site) {
|
||||
case '8':
|
||||
Level->site[i][j].locchar = ALTAR;
|
||||
Level->site[i][j].p_locf = L_ALTAR;
|
||||
Level->site[i][j].aux = deity;
|
||||
break;
|
||||
case 'H':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate && (!Player.patron ||
|
||||
strcmp(Player.name,Priest[Player.patron]) ||
|
||||
Player.rank[PRIESTHOOD] != HIGHPRIEST))
|
||||
make_high_priest(i,j,deity);
|
||||
break;
|
||||
case 'S':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (!Player.patron ||
|
||||
strcmp(Player.name,Priest[Player.patron]) ||
|
||||
Player.rank[PRIESTHOOD] != HIGHPRIEST)
|
||||
lset(i,j,SECRET);
|
||||
break;
|
||||
case 'W':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (deity != Player.patron && deity != DRUID)
|
||||
Level->site[i][j].p_locf = L_TEMPLE_WARNING;
|
||||
break;
|
||||
case 'm':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate)
|
||||
make_site_monster(i,j,MIL_PRIEST); /* militant priest */
|
||||
break;
|
||||
case 'd':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate)
|
||||
make_site_monster(i,j,DOBERMAN); /* doberman death hound */
|
||||
break;
|
||||
case 'X':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_TACTICAL_EXIT;
|
||||
break;
|
||||
case '#':
|
||||
if (deity != DRUID) {
|
||||
Level->site[i][j].locchar = WALL;
|
||||
Level->site[i][j].aux = 150;
|
||||
}
|
||||
else {
|
||||
Level->site[i][j].locchar = HEDGE;
|
||||
Level->site[i][j].p_locf = L_HEDGE;
|
||||
}
|
||||
break;
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
case 'x':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
random_temple_site(i,j,deity,populate);
|
||||
break;
|
||||
case '?':
|
||||
if (deity != DESTINY)
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
else {
|
||||
Level->site[i][j].locchar = ABYSS;
|
||||
Level->site[i][j].p_locf = L_ADEPT;
|
||||
}
|
||||
break;
|
||||
case '-':
|
||||
Level->site[i][j].locchar = CLOSED_DOOR;
|
||||
break;
|
||||
case '|':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Main Temple is peaceful for player of same sect,druids always peaceful. */
|
||||
if ((Player.patron == deity) || (deity == DRUID))
|
||||
for(ml=Level->mlist;ml!=NULL;ml=ml->next)
|
||||
m_status_reset(ml->m,HOSTILE);
|
||||
map_close(holy);
|
||||
/* initrand(-2, 0); */ /* FIXED! 12/30/98 */
|
||||
}
|
||||
|
||||
void random_temple_site(int i, int j, int deity, int populate)
|
||||
{
|
||||
switch(random_range(12)) {
|
||||
case 0:
|
||||
if (populate)
|
||||
make_site_monster(i,j,MEND_PRIEST);
|
||||
break; /* mendicant priest */
|
||||
case 1:
|
||||
Level->site[i][j].locchar = WATER;
|
||||
Level->site[i][j].p_locf = L_MAGIC_POOL;
|
||||
case 2:
|
||||
if (populate)
|
||||
make_site_monster(i,j,INNER_DEMON);
|
||||
break; /* inner circle demon */
|
||||
case 3:
|
||||
if (populate)
|
||||
make_site_monster(i,j,ANGEL);
|
||||
break; /* angel of apropriate sect */
|
||||
case 4:
|
||||
if (populate)
|
||||
make_site_monster(i,j,HIGH_ANGEL);
|
||||
break; /* high angel of apropriate sect */
|
||||
case 5:
|
||||
if (populate)
|
||||
make_site_monster(i,j,ARCHANGEL);
|
||||
break; /* archangel of apropriate sect */
|
||||
}
|
||||
}
|
||||
|
||||
void make_high_priest(int i, int j, int deity)
|
||||
{
|
||||
pml ml = ((pml) checkmalloc(sizeof(mltype)));
|
||||
pmt m = ((pmt) checkmalloc(sizeof(montype)));
|
||||
make_hiscore_npc(m,deity);
|
||||
m->x = i;
|
||||
m->y = j;
|
||||
Level->site[i][j].creature = m;
|
||||
ml->m = m;
|
||||
ml->next = Level->mlist;
|
||||
Level->mlist = ml;
|
||||
}
|
11
docs/CVS/Entries
Normal file
11
docs/CVS/Entries
Normal file
@ -0,0 +1,11 @@
|
||||
/compile.all/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/compile.ami/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/compile.dj/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/compile.dos/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/omega.6/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/omega.txt/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/readme.1st/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/readme.dos/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/readme3/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/readme4/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
D
|
1
docs/CVS/Repository
Normal file
1
docs/CVS/Repository
Normal file
@ -0,0 +1 @@
|
||||
omega-roguelike/omega/docs
|
1
docs/CVS/Root
Normal file
1
docs/CVS/Root
Normal file
@ -0,0 +1 @@
|
||||
:pserver:anonymous@cvs.omega-roguelike.sourceforge.net:/cvsroot/omega-roguelike
|
58
docs/compile.all
Normal file
58
docs/compile.all
Normal file
@ -0,0 +1,58 @@
|
||||
omega compilation notes.
|
||||
|
||||
VERSION 0.80:
|
||||
|
||||
First I should note that omega is copyrighted; you are using this
|
||||
program under the terms of the license, hopefully included in the file
|
||||
omega.license, in the omegalib directory.
|
||||
|
||||
omega is set up for compilation under Sun's unix; some changes may be
|
||||
necessary for correct functioning under other unixes. I have included
|
||||
some ifdef lines in defs.h that ought to have some positive influence.
|
||||
However, not having anything besides a sun to test omega on, I will
|
||||
have to rely on your feedback as to the effect.
|
||||
|
||||
To implement omega on your system:
|
||||
|
||||
-1) Make sure you have the files listed in the file called MANIFEST.
|
||||
If you don't have these files, you lose! Get them from somewhere. In
|
||||
particular, it is a violation of the license not to have a copy of
|
||||
license.txt.
|
||||
|
||||
0) Feel free to change motd.txt in the omegalib directory to say whatever
|
||||
you like, keeping in mind the constraints of the Sedition Act.
|
||||
|
||||
1) Make a directory for omega's data files. This will be the OMEGALIB path
|
||||
referred to later. If you don't want to run omega setuid, you must allow
|
||||
the general public to write to certain files in this directory. There is no
|
||||
need to have a special directory, but it is neater that way.
|
||||
|
||||
2) Change the first few #define's in defs.h to conform to the
|
||||
data file directory, your user name, etc., as the comments in the file
|
||||
discuss.
|
||||
|
||||
3) Edit the first few lines of the Makefile, setting the BINDIR and LIBDIR
|
||||
as appropriate (in particular, LIBDIR should be the same as OMEGALIB in
|
||||
defs.h,) and making sure that the appropriate LIBS assignment for your
|
||||
machine is used.
|
||||
|
||||
4) type 'make install' (or 'make install_not_suid', if you prefer omega to
|
||||
run without setuid) This will move the data files into the LIBDIR, as well
|
||||
as compiling omega. If you like, you can install omega manually, by typing
|
||||
'make omega' and then moving and setting the permissions of the data files
|
||||
yourself. Basically, the files omegalib/*.txt (except scroll[1234].txt
|
||||
and abyss.txt) should have at the least public read access. If you are not
|
||||
using suid, omega.hi and omega.log should have write access as well.
|
||||
|
||||
5) At this point, omega should be ready to run. Some notes on maintaining
|
||||
the game can be found in README4.
|
||||
|
||||
6) Laurence Brothers (the author - you still haven't read license.txt, have
|
||||
you? :-) has graduated and gone on into the Real World, and isn't maintaining
|
||||
omega any more. I can answer questions and deal with bug reports - email
|
||||
Erik Max Francis (omega@alcyone.darkside.com).
|
||||
|
||||
Tom O. Breton (tob@world.std.com) is currently working on a complete
|
||||
re-write - finger his account to see how work is progressing with that.
|
||||
|
||||
7) Good luck -- and let's be careful out there, shall we?
|
14
docs/compile.ami
Normal file
14
docs/compile.ami
Normal file
@ -0,0 +1,14 @@
|
||||
Don't forget to read the file COMPILE.ALL as well as this one.
|
||||
|
||||
If you're using gcc on the Amiga, Omega should compile "out of the box",
|
||||
as long as you have the curses package by Simon John Raybould. This is
|
||||
available, complete with source, on aminet, in dev/c/curses210.lha.
|
||||
You may need to change the #include <curses210.h> in defs.h, file.c,
|
||||
inv.c and scr.c, if you left Simon John Raybould's include file as
|
||||
curses.h, though.
|
||||
|
||||
For other compilers, I imagine the various unix-ish #includes will need to
|
||||
be changed, as well as various system calls. If you're only interested in
|
||||
playing omega, an already compiled executable-only version is available for
|
||||
anonymous ftp from monu1.cc.monash.edu.au [130.194.1.101] in /pub/omega
|
||||
|
38
docs/compile.dj
Normal file
38
docs/compile.dj
Normal file
@ -0,0 +1,38 @@
|
||||
Don't forget to read the file COMPILE.ALL as well as this one.
|
||||
|
||||
If you're only interested in playing the game, an IBM executable-only
|
||||
version is available for anonymous ftp from monu1.cc.monash.edu.au
|
||||
[130.194.1.101] in /pub/omega
|
||||
|
||||
This executable was compiled with djgpp. As such, omega should compile
|
||||
pretty much "out of the box" under djgpp - there's even a makefile for djgpp
|
||||
in the src directory, makefile.dj.
|
||||
|
||||
If you don't use that makefile, the one thing you should do is #define
|
||||
DJGPP somewhere, either with -DDJGPP as a command line option to gcc,
|
||||
or in defs.h.
|
||||
|
||||
The only other strangeness is the way I got colour - by hacking the curses
|
||||
library that is available with djgpp (aecur102.zip). This was probably a
|
||||
Bad Thing to do, but it simplified things greatly. Below is the patch from
|
||||
the original to the modified version - you can simply pipe this file through
|
||||
'patch' (which will ignore all this stuff at the top) or patch a version of
|
||||
curses manually, referring to the patch below. Basically, a function
|
||||
is being added to the end of the file 'curses.c' - the plus signs against
|
||||
the left margin below indicate which lines have been added.
|
||||
|
||||
*** contrib/curses/src/curses.c Tue Nov 5 05:56:52 1991
|
||||
--- curses.c Thu Feb 10 22:49:28 1994
|
||||
***************
|
||||
*** 278,280 ****
|
||||
--- 278,287 ----
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
+
|
||||
+ wattrset(win, attrib)
|
||||
+ WINDOW *win;
|
||||
+ int attrib;
|
||||
+ {
|
||||
+ win->attrib = attrib;
|
||||
+ }
|
77
docs/compile.dos
Normal file
77
docs/compile.dos
Normal file
@ -0,0 +1,77 @@
|
||||
Note on compiling PC-Omega
|
||||
--------------------------
|
||||
The PC version was written for MSC5.0 and PC-Curses, and I used Ndmake
|
||||
to help with compilation. The PC-Curses I actually used was the
|
||||
one from Bjorn Larsson. Ndmake is from Don Kneller. Both are
|
||||
available from the simtel20 archives and elsewhere. MSC4.0 or MSC5.1
|
||||
will probably also work, but I make no guarantees.
|
||||
|
||||
NB The sources have undergone considerable changes since the MSDOS
|
||||
#defines were put in, and as such all bets are off :) If you wish to
|
||||
compile on an IBM, I recommend DJGPP as the compiler - see COMPILE.DJ
|
||||
|
||||
This is a *very* large program. Be prepared to have around 4MB available
|
||||
on your disk to do this, plus whatever space is needed for backup copies
|
||||
and level files created when you run the game. Compilation from the
|
||||
start takes around 1.5 hrs on an AT-type machine.
|
||||
|
||||
|
||||
Use the makefile called makefile.dos.
|
||||
|
||||
Set up a main directory for your compilation. Put the makefile and the
|
||||
header files (*.h) into this directory. Create a subdirectory called
|
||||
realc, and put the source files (*.c) in there. The object files and
|
||||
executable are going to be put in the main directory.
|
||||
|
||||
You'll want to either put all the data files in the main directory with
|
||||
the header files, or create another subdirectory and put them in it.
|
||||
In the latter case you'll have to move the executable in there to
|
||||
run it (unless you've changed the source so that it's not necessary).
|
||||
|
||||
You'll have to edit defs.h to change a few things to be specific
|
||||
for the pc and your system. The comment around NORANDOM should
|
||||
be removed, so that this macro is defined. Similarly the comment
|
||||
around EXCESSIVE_REDRAW should be removed. The OMEGALIB macro
|
||||
should be changed to reflect where all the data files will be.
|
||||
I usually set this to "./". WIZARD can be changed or not changed.
|
||||
If you change it to "pcuser", then wizard mode will work all the time;
|
||||
if not, it will never work.
|
||||
|
||||
The progam fixstr should be compiled from fixstr.c directly. This is
|
||||
a utility program I wrote which is used in compilation, and compiling
|
||||
information for it does not appear in the makefile. "cl fixstr.c"
|
||||
should suffice. The executable should either be put into the PATH, or
|
||||
into the main directory.
|
||||
|
||||
The reason for the elaborate setup with the realc subdirectory is
|
||||
because of the fact that there are so many string constants in the
|
||||
source, and that these all would get put in the same segment in
|
||||
memory. Because of this, the sources cannot link "as is." They have
|
||||
to be transformed using my "fixstr" program to alleviate this
|
||||
problem.
|
||||
|
||||
My setup (as described above) is to have a subdirectory, for example
|
||||
call it realc, which contains the real C sources (only the .c files).
|
||||
The headers and everything else are in your main directory. If you
|
||||
use my makefile, it copies the sources from realc into the main
|
||||
directory, modifies them using fixstr, and then compiles the modified
|
||||
files there.
|
||||
|
||||
Depending on what variety of the make program you use, you may have
|
||||
some problems. The version I use (ndmake 4.3) has the problem that if
|
||||
you run make with everything set up as above the first time, it will
|
||||
copy all the .c files from realc into the main directory and run
|
||||
fixstr on them, but won't compile them. If you run make again, it
|
||||
does the compilation. In general this seems to happen when the .c
|
||||
files are missing from the main directory. When I tried using a
|
||||
later version of this program, it did not work at all because the $@
|
||||
macro wouldn't work. Just a warning. If you use a completely independent
|
||||
version of make, there's no guaranteeing what will happen if it's buggy.
|
||||
|
||||
All of the changes required in order for Omega to work on the IBM-PC
|
||||
under MSDOS have been done using #ifdef's for MSDOS, etc,. The macro
|
||||
MSDOS is automatically defined when using MSC.
|
||||
|
||||
- Nathan Glasser
|
||||
nathan@brokaw.lcs.mit.edu (internet)
|
||||
nathan@mit-eddie.uucp (usenet)
|
63
docs/omega.6
Normal file
63
docs/omega.6
Normal file
@ -0,0 +1,63 @@
|
||||
.TH omega 6
|
||||
.SH NAME
|
||||
omega \- a hack-style game with quests.
|
||||
.SH SYNOPSIS
|
||||
.B omega [save file]
|
||||
.SH DESCRIPTION
|
||||
.B omega
|
||||
is a complex rogue-style game of dungeon exploration. Unlike
|
||||
other such games, there are a number of ways to "win", depending on
|
||||
various actions taken during play. The ways you can get your name on
|
||||
the hiscore board include becoming the highest ranked head of a guild,
|
||||
sect, college, etc., as well as gaining the most points figured from
|
||||
possessions and experience. The game (via the oracle) may impose some
|
||||
structure on your exploration, but you need not follow all of the
|
||||
oracle's advice. There *is* a "total winner" status, by the way.
|
||||
|
||||
If the save file is not specified,
|
||||
.B omega
|
||||
gives the player the choice of generating a random character, or
|
||||
playing themselves, doing a short quiz to determine an
|
||||
approximation of their abilities. If the save file is given,
|
||||
.B omega
|
||||
will restore that save file, and if successful, the save file is deleted. Note
|
||||
that some installations of
|
||||
.B omega
|
||||
compress the save file, using either compress(1) or gzip(1) - if this
|
||||
is the case, and you have a save file that is uncompressed (such files
|
||||
are generated by
|
||||
.B omega
|
||||
if it receives a signal during play, for example), you can compress it
|
||||
(with compress(1) or gzip(1)) and remove the .Z or .gz extension.
|
||||
Alternatively, you may simply run with the uncompressed save file - this
|
||||
will not affect the game in any way, but takes more disk space between games.
|
||||
|
||||
.B omega
|
||||
offers a richness of playing detail that goes beyond a simple
|
||||
game like rogue. However, the majority of gameplay is very similar to
|
||||
rogue, hack, ultrarogue, larn, and other such games. The player is
|
||||
represented by the highlighted "@" symbol, objects and terrain
|
||||
features are represented by non-alphabetic symbols, monsters are
|
||||
represented by the various upper and lower case letters, and other
|
||||
humans are represented by a non-highlighted "@".
|
||||
|
||||
.B omega
|
||||
currently consists of a countryside in which are sited a city,
|
||||
various villages, several dungeons, and some "special" sites, such as
|
||||
the temples of the various priesthoods. The game starts in the
|
||||
city of Rampart, where all the guilds have headquarters. As a dungeon
|
||||
is explored, all generated levels are saved in memory. However, only
|
||||
one dungeon is "remembered" at a time, so if you enter two dungeons,
|
||||
the first will be forgotten (it will be regenerated should you wish to
|
||||
enter it again). However, if a dungeon is "completed", this fact will
|
||||
be remembered, basically meaning that the unique monster at the bottom
|
||||
will not be regenerated if you've killed it already.
|
||||
|
||||
.SH SEE ALSO
|
||||
compress(1), gzip(1), nethack(6)
|
||||
.SH AUTHOR
|
||||
.RS
|
||||
.PP
|
||||
Laurence Brothers
|
||||
.RE
|
||||
|
132
docs/omega.txt
Normal file
132
docs/omega.txt
Normal file
@ -0,0 +1,132 @@
|
||||
|
||||
|
||||
|
||||
omega(6) GAMES AND DEMOS omega(6)
|
||||
|
||||
|
||||
|
||||
NAME
|
||||
omega - a hack-style game with quests.
|
||||
|
||||
SYNOPSIS
|
||||
omega [save file]
|
||||
|
||||
DESCRIPTION
|
||||
omega is a complex rogue-style game of dungeon exploration.
|
||||
Unlike other such games, there are a number of ways to
|
||||
"win", depending on various actions taken during play. The
|
||||
ways you can get your name on the hiscore board include
|
||||
becoming the highest ranked head of a guild, sect, college,
|
||||
etc., as well as gaining the most points figured from pos-
|
||||
sessions and experience. The game (via the oracle) may
|
||||
impose some structure on your exploration, but you need not
|
||||
follow all of the oracle's advice. There *is* a "total
|
||||
winner" status, by the way.
|
||||
|
||||
If the save file is not specified, omega gives the player
|
||||
the choice of generating a random character, or playing
|
||||
themselves, doing a short quiz to determine an approximation
|
||||
of their abilities. If the save file is given, omega will
|
||||
restore that save file, and if successful, the save file is
|
||||
deleted. Note that some installations of omega compress the
|
||||
save file, using either compress(1) or gzip(1) - if this is
|
||||
the case, and you have a save file that is uncompressed
|
||||
(such files are generated by omega if it receives a signal
|
||||
during play, for example), you can compress it (with
|
||||
compress(1) or gzip(1)) and remove the .Z or .gz extension.
|
||||
Alternatively, you may simply run with the uncompressed save
|
||||
file - this will not affect the game in any way, but takes
|
||||
more disk space between games.
|
||||
|
||||
omega offers a richness of playing detail that goes beyond a
|
||||
simple game like rogue. However, the majority of gameplay is
|
||||
very similar to rogue, hack, ultrarogue, larn, and other
|
||||
such games. The player is represented by the highlighted "@"
|
||||
symbol, objects and terrain features are represented by
|
||||
non-alphabetic symbols, monsters are represented by the
|
||||
various upper and lower case letters, and other humans are
|
||||
represented by a non-highlighted "@".
|
||||
|
||||
omega currently consists of a countryside in which are sited
|
||||
a city, various villages, several dungeons, and some "spe-
|
||||
cial" sites, such as the temples of the various priesthoods.
|
||||
The game starts in the city of Rampart, where all the guilds
|
||||
have headquarters. As a dungeon is explored, all generated
|
||||
levels are saved in memory. However, only one dungeon is
|
||||
"remembered" at a time, so if you enter two dungeons, the
|
||||
first will be forgotten (it will be regenerated should you
|
||||
wish to enter it again). However, if a dungeon is "com-
|
||||
pleted", this fact will be remembered, basically meaning
|
||||
|
||||
|
||||
|
||||
Sun Release 4.1 Last change: 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
omega(6) GAMES AND DEMOS omega(6)
|
||||
|
||||
|
||||
|
||||
that the unique monster at the bottom will not be regen-
|
||||
erated if you've killed it already.
|
||||
|
||||
|
||||
SEE ALSO
|
||||
compress(1), gzip(1), nethack(6)
|
||||
|
||||
AUTHOR
|
||||
Laurence Brothers
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Sun Release 4.1 Last change: 2
|
||||
|
||||
|
||||
|
19
docs/readme.1st
Normal file
19
docs/readme.1st
Normal file
@ -0,0 +1,19 @@
|
||||
Note that omega is copyrighted. See the public license in license.txt in
|
||||
the omegalib directory for what you can do with the code.
|
||||
|
||||
For directions on how to compile, see COMPILE.ALL (pc people see README.DOS
|
||||
or README.DJ, Amiga users see COMPILE.AMI)
|
||||
|
||||
For information on how omega was written see README3
|
||||
|
||||
Some tips on maintaining the game are in README4
|
||||
|
||||
For directions how to play, see the help*.txt files in ../omegalib
|
||||
(cat them all together for a full document; this can be done from
|
||||
within the game).
|
||||
|
||||
A manifest of omega files is in the file MANIFEST
|
||||
|
||||
Have Fun, and Be Careful....
|
||||
|
||||
-Laurence
|
88
docs/readme.dos
Normal file
88
docs/readme.dos
Normal file
@ -0,0 +1,88 @@
|
||||
4/17/89
|
||||
|
||||
This message was about an older version of Omega for the IBM-PC, 0.75.
|
||||
|
||||
Read the comment near the start of COMPILE.DOS with respect to the current
|
||||
version, 0.80. Note that the 'X' command and the '^o' command, outlined
|
||||
below, are available on the current version, too.
|
||||
|
||||
----- begin original message -----
|
||||
|
||||
This is the first new version since July '88, corresponding to the
|
||||
first general Omega release since then.
|
||||
|
||||
You need a full 640K of memory and (almost certainly) a hard disk to play.
|
||||
The executable itself is too large to fit on one floppy, and during
|
||||
the course of the game large level files are created. If you don't have
|
||||
much space on the hard disk, you may also have problems.
|
||||
|
||||
I have added the 'X' command which will tell you the state of the
|
||||
heap (-2 is ok) and how much memory is left. For me this usually
|
||||
starts out around 75K-80K.
|
||||
|
||||
As the game progresses, more and more memory is allocated which
|
||||
isn't freed, though it is no longer needed. Consequently, you
|
||||
should probably do the X command once in a while, and save the
|
||||
game when it starts to get really low.
|
||||
|
||||
The screen display may act differently in some places than it does
|
||||
when running under Unix, but I haven't found any places where
|
||||
it does something blatently wrong that the unix version doesn't also
|
||||
do.
|
||||
|
||||
The '^P' command (reprint last message) has been moved to '^O'. The
|
||||
reason has to do with using the printer, and the fact that Omega was
|
||||
meant to run in cbreak mode and not raw mode, and because Dos isn't
|
||||
as flexible as Unix.
|
||||
|
||||
If you've only got the executable and associated files needed to run
|
||||
the game, you obviously can't configure Omega as to where to look for
|
||||
these files. Consequently you've got to have all the files in one
|
||||
directory and play the game from there. (If you've got the sources,
|
||||
you can change this.)
|
||||
|
||||
Most general bug reports should probably be sent to the maintainer of
|
||||
Omega - see COMPILE.ALL for information about that. Bugs which seem to
|
||||
be PC specific should probably be reported to me.
|
||||
|
||||
- Nathan Glasser
|
||||
nathan@brokaw.lcs.mit.edu (internet)
|
||||
nathan@mit-eddie.uucp (usenet)
|
||||
|
||||
|
||||
Recent bug fixes specific to PC users include:
|
||||
- The house bug - Entering houses no longer screws up the game.
|
||||
- The return bug - You can now use the "return" spell as documented.
|
||||
- Level creation time - The time to create levels is reasonable again.
|
||||
|
||||
Other comments:
|
||||
|
||||
For those of you who feel lost without them, arrow keys and home and
|
||||
end may be used in some menus: inventory, options, and selecting the
|
||||
number of multiple items to drop.
|
||||
|
||||
As long as you exit the game normally, all level files will be removed.
|
||||
|
||||
The general version of the game performs saving/restoring in a strange way.
|
||||
Only the town level and the current level of the dungeon you're in (if any)
|
||||
are saved. I personally don't think this is the right thing to do, but
|
||||
have not changed this for the PC. Thus it is not a bug when previously
|
||||
visited levels disappear after saving the game.
|
||||
|
||||
Also, there is still no way to set up the options to use every time
|
||||
you play without "playing yourself." This is obviously another area
|
||||
in which the game could be slightly improved, but it's not a bug
|
||||
that it doesn't do this.
|
||||
|
||||
The game as a whole has always been fairly buggy, and there are even
|
||||
still some known bugs in the game which haven't been fixed, though
|
||||
it's much better than when the game was first introduced. Because of
|
||||
the overall bugginess, there are still (unknown?) bugs which manfest
|
||||
themselves on the PC by causing the machine to crash after quitting
|
||||
the game, forcing you to reboot. I've not seen anything worse than
|
||||
this in quite a while, but you never know what might still be lurking
|
||||
in there.
|
||||
|
||||
- Nathan Glasser
|
||||
nathan@brokaw.lcs.mit.edu (internet)
|
||||
nathan@mit-eddie.uucp (usenet)
|
189
docs/readme3
Normal file
189
docs/readme3
Normal file
@ -0,0 +1,189 @@
|
||||
omega implementor's notes.
|
||||
|
||||
Version 0.80
|
||||
|
||||
This version is a bugfixed version of 0.75. Hopefully not many bugs
|
||||
still remain - I tried to be fairly thorough.
|
||||
|
||||
Notes on Game Structure:
|
||||
|
||||
I'm now keeping track of the last edit in date.h -- if you hack
|
||||
omega, you might conceivably want to do the same. The #definition
|
||||
of LAST_OMEGA_EDIT_DATE is printed by the 'V' command....
|
||||
|
||||
NB. Since Laurence isn't working on omega any more, the following
|
||||
wishlists are unlikely to be fulfilled,.. oh well. I'm leaving them
|
||||
in so that enthusiastic future generations can be inspired and perhaps
|
||||
complete some of the ideas.
|
||||
|
||||
Right now the structure of guilds, dungeons, quests, etc. is not
|
||||
really the way I want it. The player winds up doing basically all the
|
||||
same things each game, no matter which guild he may be in, because
|
||||
there is not enough detail to the world of omega. It is a LOT of
|
||||
painstaking work to sort out threads of narrative structure (such as
|
||||
for example the beginning attempts I've made with the LawBringer and
|
||||
the way he interacts with the Circle of Sorcerors and the Order of
|
||||
Paladins).
|
||||
|
||||
Theoretically, one need not do any questing at all to become a Total
|
||||
Winner (ie, become an adept); this is also not desirable.
|
||||
|
||||
There are any number of ways to mechanically "crack" the game, i.e.,
|
||||
to do something to take advantage of omega for the player's benefit in
|
||||
some deviant way. At least you can't drop a 32 bit number of negative
|
||||
gold pieces like in hack.... Anyhow, making sure these loopholes are
|
||||
filled is a low priority except when they are really blatant; I'd much
|
||||
rather enhance game play for people who don't cheat....
|
||||
|
||||
At the moment I have several goals for the next major version of
|
||||
omega (1.00):
|
||||
|
||||
* Enhanced game structure -- more dungeons, more detail
|
||||
within guilds, pristhoods, etc. that will make the game
|
||||
very different for different characters.
|
||||
|
||||
* More player interaction. I still don't intend to have
|
||||
omega be an online multiplayer game, but it would be nice
|
||||
to have more effect on the game from the actions of
|
||||
previous characters.
|
||||
|
||||
* X and/or NeWS and/or Sunview II front-end(s). It would be nice
|
||||
to have a separate inventory window, be able to click destinations,
|
||||
have monster and terrain fonts, etc. If I get really
|
||||
overexcited, how about a perspective view of the dungeon....
|
||||
|
||||
As always, I welcome suggestions. It is very easy to add more monsters,
|
||||
magic items, magic spells, etc....
|
||||
|
||||
Notes on the Code:
|
||||
|
||||
As far as I can tell, all this should work on any Unix* system, but
|
||||
I've never tried it on anything but a Sun, not having enough disk
|
||||
space to my name anywhere else to try.... It uses curses for I/O, and
|
||||
tries to use as few OS-dependent functions as it can elsewhere. It
|
||||
should be pretty easy to port to any Unix* variant that has curses.
|
||||
omega has now been implemented not only on Suns, Vaxen, and Pyramids,
|
||||
but even on machines such as Amdahls running unix over the normal
|
||||
operating system. The current version has #ifdef's for MSDOS,
|
||||
courtesy nathan@brokaw.lcs.mit.edu. Unfortunately, this makes
|
||||
the code harder to read, but such is life.
|
||||
|
||||
Identifier Convention:
|
||||
UPPERCASE CONSTANTS are all #defined in defs.h
|
||||
Capitalized Globals are all defined in omega.c and externally declared in
|
||||
glob.h
|
||||
other identifiers are lowercase
|
||||
|
||||
I have attempted to keep extremely system-dependent stuff segregated
|
||||
from the rest of the code.
|
||||
|
||||
For example, all screen manipulation functions are in scr.c, for
|
||||
those of you who want to port omega to something that doesn't have
|
||||
curses. (Well, there's a little in file.c)
|
||||
|
||||
Almost all file manipulation is done in file.c, and I have attempted
|
||||
to keep this simple and consistent.
|
||||
|
||||
A few other system calls are in omega.c and util.c, and that's about it.
|
||||
|
||||
Unfortunately, commenting is pretty minimal, mostly stupid things like:
|
||||
|
||||
/* this routine shows a monster */
|
||||
void showmonster(m)
|
||||
|
||||
...and abstruse reminders to myself. As I clean the code up for the
|
||||
final release version, this will improve. I usually try to avoid
|
||||
cleverness in my c code, preferring two assignments and an if
|
||||
statement to a single complex line with three nested conditional
|
||||
expressions. Still, there are some places where the code is pretty
|
||||
opaque... sorry about that. Also, I will probably switch over
|
||||
to ANSI style c pretty soon.
|
||||
|
||||
Each module has a short description of its contents at the top, and
|
||||
mostly functions tend to stay where it is reasonable to find them.
|
||||
There are a few grab-bag modules, though, such as oaux1, oaux2 and
|
||||
oaux3 (utility functions for ocom and other modules), oetc (total
|
||||
grab-bag), and outil (mostly more general utility functions used by
|
||||
everything). To save on module size, I have broken a couple of
|
||||
modules (such as ocom and osite) into pieces. I never got around to
|
||||
stating precisely which functions that used to be in ocom are now in
|
||||
ocom1, ocom2, or ocom3, but grep and ^s always work.... Anyhow,
|
||||
one of these days I will clean up. Really.
|
||||
|
||||
oextern has all the function prototype declarations.
|
||||
|
||||
defs.h has all the CPP stuff, structure definitions, and typedefs.
|
||||
|
||||
glob.h has all the external global variable declarations, and
|
||||
also includes the preceding two header files.
|
||||
|
||||
Those of you wishing to port omega to machines without virtual memory
|
||||
will probably want to keep only one dungeon level in memory at a time;
|
||||
you ought to be able to use the save_level and restore_level routines
|
||||
in lev.c to get that working. A lot of memory (primary and
|
||||
secondary), is currently required to play a full game; you could
|
||||
probably run for a while with a good deal less, though. However,
|
||||
you'll need a good deal of disk space if you don't have a lot of
|
||||
memory; it's just not practicable to play with under several meg of
|
||||
combined memory and disk space. Actually, I should probably make
|
||||
up standard #define to save all levels but the current one to disk
|
||||
as an option (rendering the moria-like lossage of previously entered
|
||||
dungeons nugatory), but see the previous note about laziness....
|
||||
|
||||
KNOWN BUGS AND MISFEATURES:
|
||||
|
||||
* It is occasionally possible to destroy a game on save/restore;
|
||||
you save, and on restore you get a core dump signal. Sometimes
|
||||
when you save again it goes away; sometimes it doesn't.
|
||||
|
||||
* Sometimes there seems to be an (unintentional) party room
|
||||
effect in some rooms in dungeon levels, ie, a bunch of monsters
|
||||
are having a party. I am not certain why this happens, but
|
||||
I guess it's just another one of the risks the adventurer takes...
|
||||
|
||||
* The high score file occasionally gets destroyed - I presume this
|
||||
is a simultanious update problem. I've put in file locking, and
|
||||
I hope this will rectify the problem... time will tell.
|
||||
|
||||
* I've had reports of the clock in the upper right-hand side of
|
||||
the screen vanishing, and not reappearing even if the game is
|
||||
saved and then restored. I've been unable to duplicate this,
|
||||
and so can't really address the problem, although I've restructured
|
||||
the display routines to make it cleaner - that may have some
|
||||
positive effect...
|
||||
|
||||
* As far as I know (ha ha), there aren't any core dump bugs
|
||||
in actual play at the moment.
|
||||
|
||||
UNKNOWN BUGS:
|
||||
|
||||
There are an awful lot of features and the number of game states you
|
||||
can get into is very large. In addition, many of the more
|
||||
"interesting" bugs will probably only occur after long periods of play
|
||||
since the "higher level" a feature, effect, or state is, the less
|
||||
it's probably been tested. While I have not encountered any
|
||||
core-dump bugs recently, there undoubtably are some, not to mention
|
||||
lesser problems such as hacks to get high scores mechanically,
|
||||
misfeatures, poor game interface occasions, etc.
|
||||
|
||||
I am always anxious to hear about any problems you have had with
|
||||
omega, be they problems with compilation, gameplay, or whatever.
|
||||
Suggestions for fixes are always welcome, as are wish-lists for
|
||||
additional features. The most useful things are new monsters, new
|
||||
items, and new magical effects, as these can be added without
|
||||
disrupting existing features.
|
||||
|
||||
I hope you enjoy the game.
|
||||
|
||||
-Laurence,
|
||||
|
||||
Laurence R. Brothers
|
||||
brothers@paul.rutgers.edu
|
||||
{anywhere}!rutgers!paul.rutgers.edu!brothers
|
||||
"One life -- one arrow."
|
||||
|
||||
(see the comment in COMPILE.ALL re: questions about omega)
|
||||
|
||||
* Ha, I bet you were expecting some different message. Well, this is not
|
||||
a commercial document or a public net announcement, so I don't see
|
||||
why I have to credit Bell Labs or UCB. So there.
|
48
docs/readme4
Normal file
48
docs/readme4
Normal file
@ -0,0 +1,48 @@
|
||||
omega wizard's guide.
|
||||
|
||||
OMEGA MAINTENANCE
|
||||
=================
|
||||
|
||||
There should be little need for the wizard to actively maintain the
|
||||
game. But.....
|
||||
|
||||
After years of play, the file omega.log may get unwieldy and overlarge.
|
||||
This file can simply be truncated as follows. Log records are now
|
||||
one line at a time, so just delete as many lines as you like, making
|
||||
sure there are no blank lines, and that the file ends on an end of
|
||||
line.
|
||||
|
||||
You can even remove omega.log completely as long as you replace it
|
||||
with a null file of the same name. If you opt to make omega not setuid,
|
||||
omega.log must be publically writeable.
|
||||
|
||||
The file omega.hi is a high score list. This file can't be truncated
|
||||
or removed, but you can edit it as you feel to be appropriate. If you
|
||||
look in file.c you can figure out what those numbers in the
|
||||
file actually mean; usually one is NPC level and one is NPC behavior,
|
||||
but some entries have another entry such as alignment. The
|
||||
distribution comes with a "safety" version of the original high
|
||||
score file; if anything happens to the original you can just
|
||||
copy omegahi.bak to omega.hi. Again, people running omega not setuid
|
||||
must make sure omega.hi has public write access.
|
||||
|
||||
If you don't run omega suid, anyone can mung the log and hiscore files
|
||||
simply by writing to them. In my opinion, people who hack score files
|
||||
can very easily be taken care of by deleting their accounts; if that
|
||||
doesn't work, shoot them.
|
||||
|
||||
WIZARD MODE
|
||||
===========
|
||||
|
||||
If you are the WIZARD as defined in defs.h, you can enter wizard mode
|
||||
by hitting ^g. If you ever set wizard mode, your high scores and npc
|
||||
will not be saved.
|
||||
|
||||
In wizard mode, ^x gives you a wish. ^w draws the current level, ^k
|
||||
allows you to set an arbitrary game status bit, meanings of the bits
|
||||
are given in defs.h. The possible wishes are listed in scroll3.txt,
|
||||
and the code for them is in effect1.c I've added some additional
|
||||
utilities to the Wizard mode - ^w in the city also marks all locations
|
||||
as visited, so you can Move to them, and wishing for Location allows
|
||||
you to go to an arbitrary environment number - not very useful except
|
||||
for debugging, really...
|
804
effect1.c
Normal file
804
effect1.c
Normal file
@ -0,0 +1,804 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* effect1.c */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
/* enchant */
|
||||
void enchant(int delta)
|
||||
{
|
||||
int i,used = FALSE;
|
||||
long change_cash;
|
||||
|
||||
if (delta < 0) {
|
||||
i = random_item();
|
||||
if (i == ABORT || Player.possessions[i]->usef == I_NOTHING ||
|
||||
Player.possessions[i]->usef == I_NO_OP ||
|
||||
Player.possessions[i]->usef == I_NORMAL_ARMOR ||
|
||||
Player.possessions[i]->usef == I_NORMAL_WEAPON ||
|
||||
Player.possessions[i]->usef == I_NORMAL_SHIELD ||
|
||||
Player.possessions[i]->objchar == FOOD ||
|
||||
Player.possessions[i]->objchar == MISSILEWEAPON) {
|
||||
print1("You feel fortunate.");
|
||||
morewait();
|
||||
}
|
||||
else if (Player.possessions[i]->blessing < 0 ||
|
||||
(Player.possessions[i]->objchar == ARTIFACT && random_range(3))) {
|
||||
if (Player.possessions[i]->uniqueness == COMMON)
|
||||
print1("Your ");
|
||||
nprint1(itemid(Player.possessions[i]));
|
||||
nprint1(" glows, but the glow flickers out...");
|
||||
morewait();
|
||||
}
|
||||
else {
|
||||
used = (Player.possessions[i]->used);
|
||||
if (used) {
|
||||
Player.possessions[i]->used = FALSE;
|
||||
item_use(Player.possessions[i]);
|
||||
}
|
||||
if (Player.possessions[i]->uniqueness == COMMON)
|
||||
print1("Your ");
|
||||
nprint1(itemid(Player.possessions[i]));
|
||||
nprint1(" radiates an aura of mundanity!");
|
||||
morewait();
|
||||
Player.possessions[i]->plus = 0;
|
||||
Player.possessions[i]->charge = -1;
|
||||
Player.possessions[i]->usef = I_NOTHING;
|
||||
if (used) {
|
||||
Player.possessions[i]->used = TRUE;
|
||||
item_use(Player.possessions[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
i = getitem(CASH);
|
||||
if (i == ABORT) {
|
||||
print1("You feel unlucky.");
|
||||
morewait();
|
||||
}
|
||||
else if (i == CASHVALUE) {
|
||||
print1("You enchant your money.... What a concept!");
|
||||
change_cash = Player.cash*(random_range(7) - 3)/6;
|
||||
if (change_cash > 0) print2("Seems to have been a good idea!");
|
||||
else print2("Maybe it wasn't such a good idea....");
|
||||
Player.cash += change_cash;
|
||||
morewait();
|
||||
}
|
||||
else if (Player.possessions[i]->objchar == ARTIFACT) {
|
||||
if (Player.possessions[i]->usef !=
|
||||
Objects[Player.possessions[i]->id].usef) {
|
||||
print1("It re-acquires its magical aura!");
|
||||
Player.possessions[i]->usef = Objects[Player.possessions[i]->id].usef;
|
||||
}
|
||||
else {
|
||||
print1("The enchantment spell enfolds the ");
|
||||
nprint1(itemid(Player.possessions[i]));
|
||||
print2("and the potent enchantment of the Artifact causes a backlash!");
|
||||
morewait();
|
||||
clearmsg();
|
||||
manastorm(Player.x,Player.y,Player.possessions[i]->level*5);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (Player.possessions[i]->plus > random_range(20)+1) {
|
||||
print1("Uh-oh, the force of the enchantment was too much!");
|
||||
print2("There is a loud explosion!");
|
||||
morewait();
|
||||
manastorm(Player.x,Player.y,Player.possessions[i]->plus*5);
|
||||
dispose_lost_objects(1,Player.possessions[i]);
|
||||
}
|
||||
else {
|
||||
used = (Player.possessions[i]->used);
|
||||
if (used) {
|
||||
setgamestatus(SUPPRESS_PRINTING);
|
||||
Player.possessions[i]->used = FALSE;
|
||||
item_use(Player.possessions[i]);
|
||||
resetgamestatus(SUPPRESS_PRINTING);
|
||||
}
|
||||
print1("The item shines!");
|
||||
morewait();
|
||||
Player.possessions[i]->plus += delta+1;
|
||||
if (Player.possessions[i]->charge > -1)
|
||||
Player.possessions[i]->charge +=
|
||||
((delta+1) * (random_range(10) + 1));
|
||||
if (used) {
|
||||
setgamestatus(SUPPRESS_PRINTING);
|
||||
Player.possessions[i]->used = TRUE;
|
||||
item_use(Player.possessions[i]);
|
||||
resetgamestatus(SUPPRESS_PRINTING);
|
||||
}
|
||||
}
|
||||
}
|
||||
calc_melee();
|
||||
}
|
||||
}
|
||||
|
||||
/* bless */
|
||||
void bless(int blessing)
|
||||
{
|
||||
int index,used;
|
||||
|
||||
if (blessing < 0) {
|
||||
index = random_item();
|
||||
if (index == ABORT) {
|
||||
print1("You feel fortunate.");
|
||||
morewait();
|
||||
}
|
||||
else {
|
||||
print1("A foul odor arises from ");
|
||||
if (Player.possessions[index]->uniqueness == COMMON)
|
||||
nprint1("your ");
|
||||
nprint1(itemid(Player.possessions[index]));
|
||||
morewait();
|
||||
used = (Player.possessions[index]->used);
|
||||
if (used) {
|
||||
setgamestatus(SUPPRESS_PRINTING);
|
||||
Player.possessions[index]->used = FALSE;
|
||||
item_use(Player.possessions[index]);
|
||||
resetgamestatus(SUPPRESS_PRINTING);
|
||||
}
|
||||
Player.possessions[index]->blessing -= 2;
|
||||
if (Player.possessions[index]->blessing < 0)
|
||||
Player.possessions[index]->plus =
|
||||
abs(Player.possessions[index]->plus) - 1;
|
||||
if (used) {
|
||||
setgamestatus(SUPPRESS_PRINTING);
|
||||
Player.possessions[index]->used = TRUE;
|
||||
item_use(Player.possessions[index]);
|
||||
resetgamestatus(SUPPRESS_PRINTING);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
index = getitem(NULL_ITEM);
|
||||
if (index == CASHVALUE) {
|
||||
print1("Blessing your money has no effect.");
|
||||
morewait();
|
||||
}
|
||||
else if (index != ABORT) {
|
||||
used = (Player.possessions[index]->used == TRUE);
|
||||
if (used) {
|
||||
setgamestatus(SUPPRESS_PRINTING);
|
||||
Player.possessions[index]->used = FALSE;
|
||||
item_use(Player.possessions[index]);
|
||||
resetgamestatus(SUPPRESS_PRINTING);
|
||||
}
|
||||
print1("A pure white light surrounds the item... ");
|
||||
if (Player.possessions[index]->blessing < 0-(blessing+1)) {
|
||||
print2("which is evil enough to resist the effect of the blessing!");
|
||||
morewait();
|
||||
}
|
||||
else if (Player.possessions[index]->blessing < -1) {
|
||||
print2("which disintegrates under the influence of the holy aura!");
|
||||
morewait();
|
||||
Player.itemweight -= Player.possessions[index]->weight;
|
||||
dispose_lost_objects(1,Player.possessions[index]);
|
||||
}
|
||||
else if (Player.possessions[index]->blessing < blessing+1) {
|
||||
print2("which now seems affected by afflatus!");
|
||||
morewait();
|
||||
Player.possessions[index]->blessing++;
|
||||
Player.possessions[index]->plus =
|
||||
abs(Player.possessions[index]->plus)+1;
|
||||
}
|
||||
else {
|
||||
print2("The hierolux fades without any appreciable effect....");
|
||||
morewait();
|
||||
}
|
||||
if (used && (Player.possessions[index] != NULL)) {
|
||||
setgamestatus(SUPPRESS_PRINTING);
|
||||
Player.possessions[index]->used = TRUE;
|
||||
item_use(Player.possessions[index]);
|
||||
resetgamestatus(SUPPRESS_PRINTING);
|
||||
}
|
||||
}
|
||||
}
|
||||
calc_melee();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void heal(int amount)
|
||||
{
|
||||
if (amount > -1) {
|
||||
mprint("You feel better.");
|
||||
if (Player.hp < Player.maxhp + amount)
|
||||
{
|
||||
Player.hp += random_range(10*amount)+1;
|
||||
if (Player.hp > Player.maxhp)
|
||||
Player.hp = Player.maxhp + amount;
|
||||
}
|
||||
Player.status[BLINDED] = 0;
|
||||
}
|
||||
else {
|
||||
mprint("You feel unwell.");
|
||||
Player.hp -= random_range(10*abs(amount)+1);
|
||||
if (Player.hp < 0)
|
||||
p_death("magical disruption");
|
||||
}
|
||||
dataprint();
|
||||
}
|
||||
|
||||
|
||||
void fbolt(int fx, int fy, int tx, int ty, int hit, int dmg)
|
||||
{
|
||||
bolt(fx,fy,tx,ty,hit,dmg,FLAME);
|
||||
}
|
||||
|
||||
void lbolt(int fx, int fy, int tx, int ty, int hit, int dmg)
|
||||
{
|
||||
bolt(fx,fy,tx,ty,hit,dmg,ELECTRICITY);
|
||||
}
|
||||
|
||||
/* Added 12/30/98 DG */
|
||||
void icebolt(int fx, int fy, int tx, int ty, int hit, int dmg)
|
||||
{
|
||||
bolt(fx,fy,tx,ty,hit,dmg,COLD);
|
||||
}
|
||||
|
||||
void nbolt(int fx, int fy, int tx, int ty, int hit, int dmg)
|
||||
{
|
||||
bolt(fx,fy,tx,ty,hit,dmg,NORMAL_DAMAGE);
|
||||
}
|
||||
|
||||
|
||||
/* from f to t */
|
||||
void bolt(int fx, int fy, int tx, int ty, int hit, int dmg, int dtype)
|
||||
{
|
||||
int xx,yy;
|
||||
struct monster *target;
|
||||
Symbol boltchar = '?';
|
||||
xx = fx; yy = fy;
|
||||
|
||||
switch(dtype) {
|
||||
case FLAME:boltchar=('*' | CLR(LIGHT_RED));break;
|
||||
case ELECTRICITY:boltchar = ('^' | CLR(LIGHT_BLUE));break;
|
||||
case NORMAL_DAMAGE:boltchar = ('!' | CLR(BROWN));break;
|
||||
case COLD:boltchar=('o' | CLR(WHITE));break;
|
||||
default:assert(FALSE); /* this should never happen, right? WDT */
|
||||
}
|
||||
clearmsg();
|
||||
|
||||
do_los(boltchar,&xx,&yy,tx,ty);
|
||||
|
||||
if ((xx == Player.x) && (yy == Player.y)) {
|
||||
if (Player.status[DEFLECTION] > 0)
|
||||
mprint("The bolt just missed you!");
|
||||
else {
|
||||
switch (dtype) {
|
||||
case FLAME:
|
||||
mprint("You were blasted by a firebolt!");
|
||||
p_damage(random_range(dmg),dtype,"a firebolt");
|
||||
break;
|
||||
case ELECTRICITY:
|
||||
mprint("You were zapped by lightning!");
|
||||
p_damage(random_range(dmg),dtype,"a bolt of lightning");
|
||||
break;
|
||||
case NORMAL_DAMAGE:
|
||||
mprint("You were hit by a missile!");
|
||||
p_damage(random_range(dmg),dtype,"a missile");
|
||||
break;
|
||||
case COLD:
|
||||
mprint("You were hit by an icicle!");
|
||||
p_damage(random_range(dmg),dtype,"an icicle");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (NULL != (target = Level->site[xx][yy].creature)) {
|
||||
if (hitp(hit,target->ac)) {
|
||||
if (target->uniqueness == COMMON) {
|
||||
strcpy(Str1,"The ");
|
||||
strcat(Str1,target->monstring);
|
||||
}
|
||||
else strcpy(Str1,target->monstring);
|
||||
switch (dtype) {
|
||||
/* WDT: these sentances really ought to be livened up. Especially
|
||||
* in full verbose mode. */
|
||||
case FLAME:strcat(Str1," was blasted by a firebolt!");break;
|
||||
case ELECTRICITY:strcat(Str1," was zapped by lightning!");break;
|
||||
case NORMAL_DAMAGE:strcat(Str1," was hit by a missile!"); break;
|
||||
case COLD:strcat(Str1," was hit by an icicle!"); break;
|
||||
}
|
||||
mprint(Str1);
|
||||
m_status_set(target,HOSTILE);
|
||||
m_damage(target,random_range(dmg),dtype);
|
||||
}
|
||||
else {
|
||||
if (target->uniqueness == COMMON) {
|
||||
strcpy(Str1,"The ");
|
||||
strcat(Str1,target->monstring);
|
||||
}
|
||||
else strcpy(Str1,target->monstring);
|
||||
switch (dtype) {
|
||||
case FLAME:strcat(Str1," was missed by a firebolt!");break;
|
||||
case ELECTRICITY:strcat(Str1," was missed by lightning!");break;
|
||||
case NORMAL_DAMAGE:strcat(Str1," was missed by a missile!"); break;
|
||||
case COLD:strcat(Str1," was missed by a flying icicle!"); break;
|
||||
}
|
||||
mprint(Str1);
|
||||
}
|
||||
}
|
||||
else if (Level->site[xx][yy].locchar == HEDGE)
|
||||
if (Level->site[xx][yy].p_locf != L_TRIFID) {
|
||||
if ((dtype == FLAME)||(dtype == ELECTRICITY)) {
|
||||
mprint("The hedge is blasted away!");
|
||||
Level->site[xx][yy].p_locf = L_NO_OP;
|
||||
Level->site[xx][yy].locchar = FLOOR;
|
||||
plotspot(xx, yy, TRUE);
|
||||
lset(xx, yy, CHANGED);
|
||||
}
|
||||
else mprint("The hedge is unaffected.");
|
||||
}
|
||||
else mprint("The trifid absorbs the energy and laughs!");
|
||||
else if (Level->site[xx][yy].locchar == WATER)
|
||||
if (dtype == FLAME) {
|
||||
mprint("The water is vaporised!");
|
||||
Level->site[xx][yy].p_locf = L_NO_OP;
|
||||
Level->site[xx][yy].locchar = FLOOR;
|
||||
lset(xx, yy, CHANGED);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void lball(int fx, int fy, int tx, int ty, int dmg)
|
||||
{
|
||||
ball(fx,fy,tx,ty,dmg,ELECTRICITY);
|
||||
}
|
||||
|
||||
void manastorm(int x, int y, int dmg)
|
||||
{
|
||||
ball(x,y,x,y,dmg,UNSTOPPABLE);
|
||||
}
|
||||
|
||||
void snowball(int fx, int fy, int tx, int ty, int dmg)
|
||||
{
|
||||
ball(fx,fy,tx,ty,dmg,COLD);
|
||||
}
|
||||
|
||||
void fball(int fx, int fy, int tx, int ty, int dmg)
|
||||
{
|
||||
ball(fx,fy,tx,ty,dmg,FLAME);
|
||||
}
|
||||
|
||||
|
||||
/* from f to t */
|
||||
void ball(int fx, int fy, int tx, int ty, int dmg, int dtype)
|
||||
{
|
||||
int xx,yy,ex,ey,i;
|
||||
struct monster *target;
|
||||
Symbol expchar=('@' | CLR(LIGHT_PURPLE));
|
||||
|
||||
xx = fx; yy = fy;
|
||||
|
||||
switch(dtype){
|
||||
case FLAME:expchar=('*' | CLR(LIGHT_RED));break;
|
||||
case COLD:expchar=('o' | CLR(WHITE));break;
|
||||
case ELECTRICITY:expchar=('^' | CLR(LIGHT_BLUE));break;
|
||||
}
|
||||
|
||||
do_los(expchar,&xx,&yy,tx,ty);
|
||||
draw_explosion(expchar,xx,yy);
|
||||
for(i=0;i<9;i++) {
|
||||
ex = xx + Dirs[0][i];
|
||||
ey = yy + Dirs[1][i];
|
||||
|
||||
if ((ex == Player.x) && (ey == Player.y)) {
|
||||
switch(dtype) {
|
||||
case FLAME:mprint("You were blasted by a fireball!");
|
||||
p_damage(random_range(dmg),FLAME,"a fireball");
|
||||
break;
|
||||
case COLD:mprint("You were blasted by a snowball!");
|
||||
p_damage(random_range(dmg),COLD,"a snowball");
|
||||
break;
|
||||
case ELECTRICITY:mprint("You were blasted by ball lightning!");
|
||||
p_damage(random_range(dmg),ELECTRICITY,"ball lightning");
|
||||
break;
|
||||
case UNSTOPPABLE:mprint("Oh No! Manastorm!");
|
||||
p_damage(random_range(dmg),UNSTOPPABLE,"a manastorm!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (NULL != (target = Level->site[ex][ey].creature)) {
|
||||
if (los_p(Player.x,Player.y,target->x,target->y)) {
|
||||
if (target->uniqueness == COMMON) {
|
||||
strcpy(Str1,"The ");
|
||||
strcat(Str1,target->monstring);
|
||||
}
|
||||
else strcpy(Str1,target->monstring);
|
||||
switch(dtype) {
|
||||
case FLAME:strcat(Str1," was zorched by a fireball!"); break;
|
||||
case COLD:strcat(Str1," was blasted by a snowball!"); break;
|
||||
case ELECTRICITY:strcat(Str1," was zapped by ball lightning!");break;
|
||||
case UNSTOPPABLE:strcat(Str1," was nuked by a manastorm!");break;
|
||||
}
|
||||
mprint(Str1);
|
||||
}
|
||||
m_status_set(target,HOSTILE);
|
||||
m_damage(target,random_range(dmg),dtype);
|
||||
}
|
||||
if (Level->site[ex][ey].locchar == HEDGE)
|
||||
if (Level->site[ex][ey].p_locf != L_TRIFID) {
|
||||
if ((dtype == FLAME)||(dtype == ELECTRICITY)) {
|
||||
mprint("The hedge is blasted away!");
|
||||
Level->site[ex][ey].p_locf = L_NO_OP;
|
||||
Level->site[ex][ey].locchar = FLOOR;
|
||||
plotspot(ex,ey,TRUE);
|
||||
lset(ex, ey, CHANGED);
|
||||
}
|
||||
else mprint("The hedge is unaffected.");
|
||||
}
|
||||
else mprint("The trifid absorbs the energy and laughs!");
|
||||
else if (Level->site[ex][ey].locchar == WATER)
|
||||
if (dtype == FLAME) {
|
||||
mprint("The water is vaporised!");
|
||||
Level->site[ex][ey].p_locf = L_NO_OP;
|
||||
Level->site[ex][ey].locchar = FLOOR;
|
||||
plotspot(ex,ey,TRUE);
|
||||
lset(ex, ey, CHANGED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void mondet(int blessing)
|
||||
{
|
||||
pml ml;
|
||||
for (ml=Level->mlist;ml!=NULL;ml=ml->next)
|
||||
if (ml->m->hp > 0) /* FIXED 12/30/98 DG */
|
||||
{
|
||||
if (blessing > -1)
|
||||
plotmon(ml->m);
|
||||
else
|
||||
putspot(random_range(Level->level_width), random_range(Level->level_length),
|
||||
Monsters[random_range(NUMMONSTERS)].monchar);
|
||||
}
|
||||
levelrefresh();
|
||||
morewait();
|
||||
show_screen();
|
||||
}
|
||||
|
||||
|
||||
void objdet(int blessing)
|
||||
{
|
||||
int i,j;
|
||||
for (i=0;i<Level->level_width;i++)
|
||||
for (j=0;j<Level->level_length;j++)
|
||||
if (Level->site[i][j].things != NULL) {
|
||||
if (blessing < 0)
|
||||
putspot(random_range(Level->level_width),
|
||||
random_range(Level->level_length),
|
||||
Level->site[i][j].things->thing->objchar);
|
||||
else putspot(i,j,Level->site[i][j].things->thing->objchar);
|
||||
}
|
||||
levelrefresh();
|
||||
morewait();
|
||||
show_screen();
|
||||
}
|
||||
|
||||
void identify(int blessing)
|
||||
{
|
||||
int index;
|
||||
|
||||
clearmsg();
|
||||
|
||||
if (blessing == 0) {
|
||||
index = getitem_prompt("Identify: ", NULL_ITEM);
|
||||
if (index == CASHVALUE) print3("Your money is really money.");
|
||||
else if (index == ABORT)
|
||||
setgamestatus(SKIP_MONSTERS);
|
||||
else {
|
||||
if (Player.possessions[index]->objchar == FOOD)
|
||||
Player.possessions[index]->known = 1;
|
||||
else {
|
||||
Player.possessions[index]->known = 2;
|
||||
Objects[Player.possessions[index]->id].known = 1;
|
||||
}
|
||||
print1("Identified: ");
|
||||
mprint(itemid(Player.possessions[index]));
|
||||
}
|
||||
}
|
||||
else if (blessing < 0) {
|
||||
print2("You feel forgetful.");
|
||||
for (index=0;index<MAXITEMS;index++)
|
||||
if (Player.possessions[index] != NULL) {
|
||||
Player.possessions[index]->known = 0;
|
||||
Objects[Player.possessions[index]->id].known = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
print2("You feel encyclopaedic.");
|
||||
for (index=0;index<MAXITEMS;index++)
|
||||
if (Player.possessions[index] != NULL) {
|
||||
if (Player.possessions[index]->objchar == FOOD)
|
||||
Player.possessions[index]->known = 1;
|
||||
else {
|
||||
Player.possessions[index]->known = 2;
|
||||
Objects[Player.possessions[index]->id].known = 1;
|
||||
}
|
||||
}
|
||||
for (index=0;index<Player.packptr;index++)
|
||||
if (Player.pack[index] != NULL) {
|
||||
if (Player.pack[index]->objchar == FOOD)
|
||||
Player.pack[index]->known = 1;
|
||||
else {
|
||||
Player.pack[index]->known = 2;
|
||||
Objects[Player.pack[index]->id].known = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
calc_melee();
|
||||
}
|
||||
|
||||
|
||||
/* returns index of random item, ABORT if player carrying none */
|
||||
int random_item(void)
|
||||
{
|
||||
int item = ABORT,tries=0;
|
||||
int number = 0;
|
||||
|
||||
for(tries=0; tries<MAXITEMS; tries++)
|
||||
if (Player.possessions[tries] != NULL) {
|
||||
number++;
|
||||
if (random_range(number) == 0)
|
||||
item = tries;
|
||||
}
|
||||
return(item);
|
||||
}
|
||||
|
||||
/* returns index of an item to steal, ABORT if player carrying none */
|
||||
int stolen_item(void)
|
||||
{
|
||||
int idx;
|
||||
int nextitem;
|
||||
|
||||
int cards[MAXITEMS];
|
||||
|
||||
nextitem = 0;
|
||||
|
||||
/* look for bank cards */
|
||||
for (idx = 0; idx < MAXITEMS; ++idx)
|
||||
{
|
||||
if (0 == Player.possessions[idx]) continue;
|
||||
if (Player.possessions[idx]->id < OB_DEBIT_CARD) continue;
|
||||
if (Player.possessions[idx]->id > OB_SMART_CARD) continue;
|
||||
|
||||
cards[nextitem++] = idx;
|
||||
}
|
||||
|
||||
if (0 == nextitem) return random_item();
|
||||
|
||||
if (nextitem > 1)
|
||||
shuffle(cards, nextitem);
|
||||
|
||||
if (random_range(100) < 75)
|
||||
{
|
||||
/* oh that sucks... */
|
||||
return cards[0];
|
||||
}
|
||||
|
||||
return random_item();
|
||||
}
|
||||
|
||||
/* various kinds of wishes */
|
||||
void wish(int blessing)
|
||||
{
|
||||
int i;
|
||||
char wishstr[80];
|
||||
clearmsg();
|
||||
print1("What do you wish for? ");
|
||||
if (blessing < 0)
|
||||
deathprint();
|
||||
else
|
||||
strcpy(wishstr,msgscanstring());
|
||||
if (blessing < 0 || strcmp(wishstr,"Death")==0) {
|
||||
print2("As you wish, so shall it be.");
|
||||
p_death("a deathwish");
|
||||
}
|
||||
if (strcmp(wishstr,"Power")==0) {
|
||||
print2("You feel a sudden surge of energy");
|
||||
Player.mana=calcmana()*10;
|
||||
}
|
||||
else if (strcmp(wishstr,"Skill")==0) {
|
||||
print2("You feel more competent.");
|
||||
if (gamestatusp(CHEATED))
|
||||
gain_experience(10000);
|
||||
else
|
||||
gain_experience(min(10000,Player.xp));
|
||||
}
|
||||
else if (strcmp(wishstr,"Wealth")==0) {
|
||||
print2("You are submerged in shower of gold pieces!");
|
||||
Player.cash += 10000;
|
||||
}
|
||||
else if (strcmp(wishstr,"Balance")==0) {
|
||||
print2("You feel neutral.");
|
||||
Player.alignment = 0;
|
||||
}
|
||||
else if (strcmp(wishstr,"Chaos")==0) {
|
||||
print2("You feel chaotic.");
|
||||
Player.alignment -= 25;
|
||||
}
|
||||
else if (strcmp(wishstr,"Law")==0) {
|
||||
print2("You feel lawful.");
|
||||
Player.alignment += 25;
|
||||
}
|
||||
else if (strcmp(wishstr,"Location")==0)
|
||||
strategic_teleport(1);
|
||||
else if (strcmp(wishstr,"Knowledge")==0) {
|
||||
print2("You feel more knowledgeable.");
|
||||
i = random_range(NUMSPELLS);
|
||||
if (Spells[i].known)
|
||||
Spells[i].powerdrain =
|
||||
(max(1,Spells[i].powerdrain/2));
|
||||
else Spells[i].known = TRUE;
|
||||
}
|
||||
else if (strcmp(wishstr,"Health")==0) {
|
||||
print2("You feel vigorous");
|
||||
Player.hp = max( Player.hp, Player.maxhp);
|
||||
Player.status[DISEASED] = 0;
|
||||
Player.status[POISONED] = 0;
|
||||
Player.food = 43;
|
||||
/* Wish for Health when starving does some good. PGM */
|
||||
}
|
||||
else if (strcmp(wishstr,"Destruction")==0)
|
||||
annihilate(gamestatusp(CHEATED));
|
||||
else if (strcmp(wishstr,"Acquisition")==0)
|
||||
acquire(gamestatusp(CHEATED));
|
||||
else if (strcmp(wishstr,"Summoning")==0)
|
||||
summon(gamestatusp(CHEATED),-1);
|
||||
else if (strcmp(wishstr,"Stats") == 0 && gamestatusp(CHEATED))
|
||||
{
|
||||
Player.str = Player.maxstr = Player.con = Player.maxcon =
|
||||
Player.agi = Player.maxagi = Player.dex = Player.maxdex =
|
||||
Player.iq = Player.maxiq = Player.pow = Player.maxpow = 200;
|
||||
calc_melee();
|
||||
}
|
||||
else print2("You feel stupid.");
|
||||
dataprint();
|
||||
showflags();
|
||||
}
|
||||
|
||||
/* gain for an item */
|
||||
void acquire(int blessing)
|
||||
{
|
||||
char otype;
|
||||
int index,id = ABORT;
|
||||
pob newthing;
|
||||
|
||||
if (blessing < 0) {
|
||||
index = random_item();
|
||||
if (index == ABORT)
|
||||
mprint("You feel fortunate.");
|
||||
else {
|
||||
print1("Smoke drifts out of your pack.... ");
|
||||
print2("Destroyed: ");
|
||||
nprint2(itemid(Player.possessions[index]));
|
||||
morewait();
|
||||
dispose_lost_objects(1,Player.possessions[index]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
newthing = ((pob) checkmalloc(sizeof(objtype)));
|
||||
/* DAG this assignment looks unneccessary */
|
||||
newthing->id = -1;
|
||||
if (gamestatusp(CHEATED))
|
||||
print1("Acquire which kind of item: !?][}{)/=%%\\& ");
|
||||
else
|
||||
print1("Acquire which kind of item: !?][}{)/=%%\\ ");
|
||||
otype = mgetc();
|
||||
switch (otype) {
|
||||
case (POTION&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(POTIONID,NUMPOTIONS);
|
||||
else
|
||||
id = random_range(NUMPOTIONS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_potion(newthing,id);
|
||||
break;
|
||||
case (SCROLL&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(SCROLLID,NUMSCROLLS);
|
||||
else
|
||||
id = random_range(NUMSCROLLS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_scroll(newthing,id);
|
||||
break;
|
||||
case (RING&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(RINGID,NUMRINGS);
|
||||
else
|
||||
id = random_range(NUMRINGS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_ring(newthing,id);
|
||||
break;
|
||||
case (STICK&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(STICKID,NUMSTICKS);
|
||||
else
|
||||
id = random_range(NUMSTICKS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_stick(newthing,id);
|
||||
break;
|
||||
case (ARMOR&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(ARMORID,NUMARMOR);
|
||||
else
|
||||
id = random_range(NUMARMOR);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_armor(newthing,id);
|
||||
break;
|
||||
case (SHIELD&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(SHIELDID,NUMSHIELDS);
|
||||
else
|
||||
id = random_range(NUMSHIELDS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_shield(newthing,id);
|
||||
break;
|
||||
case (WEAPON&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(WEAPONID,NUMWEAPONS);
|
||||
else
|
||||
id = random_range(NUMWEAPONS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_weapon(newthing,id);
|
||||
break;
|
||||
case (BOOTS&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(BOOTID,NUMBOOTS);
|
||||
else
|
||||
id = random_range(NUMBOOTS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_boots(newthing,id);
|
||||
break;
|
||||
case (CLOAK&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(CLOAKID,NUMCLOAKS);
|
||||
else
|
||||
id = random_range(NUMCLOAKS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_cloak(newthing,id);
|
||||
break;
|
||||
case (FOOD&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(FOODID,NUMFOODS);
|
||||
else
|
||||
id = random_range(NUMFOODS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_food(newthing,id);
|
||||
break;
|
||||
case (THING&0xff):
|
||||
if (blessing > 0)
|
||||
id = itemlist(THINGID,NUMTHINGS);
|
||||
else
|
||||
id = random_range(NUMTHINGS);
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_thing(newthing,id);
|
||||
break;
|
||||
case (ARTIFACT&0xff):
|
||||
if (gamestatusp(CHEATED))
|
||||
id = itemlist(ARTIFACTID,NUMARTIFACTS);
|
||||
else
|
||||
id = -1;
|
||||
if (id < 0) print2("You feel stupid.");
|
||||
else make_artifact(newthing,id);
|
||||
break;
|
||||
default:
|
||||
print2("You feel stupid.");
|
||||
}
|
||||
xredraw();
|
||||
if (id != ABORT) {
|
||||
if (blessing > 0) {
|
||||
newthing->known = 2;
|
||||
Objects[id].known = 1;
|
||||
}
|
||||
newthing->used = FALSE;
|
||||
gain_item(newthing);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* DAG newthing allocated but was not freed... was YA memory leak */
|
||||
/* use free() rather than free_obj() since newthing not initialized */
|
||||
free( (char *) newthing );
|
||||
}
|
||||
}
|
||||
}
|
660
effect2.c
Normal file
660
effect2.c
Normal file
@ -0,0 +1,660 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* effect2.c */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
void knowledge(int blessing)
|
||||
{
|
||||
if (blessing < 0)
|
||||
mprint("You feel ignorant.");
|
||||
else {
|
||||
mprint("You feel knowledgeable!");
|
||||
menuclear();
|
||||
menuprint("Current Point Total: ");
|
||||
menulongprint(calc_points());
|
||||
menuprint("\nAlignment:");
|
||||
if (Player.alignment == 0)
|
||||
menuprint("Neutral, embodying the Cosmic Balance");
|
||||
else if (abs(Player.alignment) < 10)
|
||||
menuprint("Neutral, tending toward ");
|
||||
else if (abs(Player.alignment) < 50)
|
||||
menuprint("Neutral-");
|
||||
else if (abs(Player.alignment) < 100) ;
|
||||
else if (abs(Player.alignment) < 200)
|
||||
menuprint("Servant of ");
|
||||
else if (abs(Player.alignment) < 400)
|
||||
menuprint("Master of ");
|
||||
else if (abs(Player.alignment) < 800)
|
||||
menuprint("The Essence of ");
|
||||
else menuprint("The Ultimate Avatar of ");
|
||||
if (Player.alignment < 0) menuprint("Chaos\n");
|
||||
else if (Player.alignment > 0) menuprint("Law\n");
|
||||
showmenu();
|
||||
morewait();
|
||||
menuclear();
|
||||
menuprint("Current stati:\n");
|
||||
if (Player.status[BLINDED])
|
||||
menuprint("Blinded\n");
|
||||
if (Player.status[SLOWED])
|
||||
menuprint("Slowed\n");
|
||||
#ifdef DEBUG
|
||||
if (Player.status[SLOWED])
|
||||
fprintf(DG_debug_log, "Slowed is %d\n", Player.status[SLOWED] );
|
||||
#endif
|
||||
if (Player.status[HASTED])
|
||||
menuprint("Hasted\n");
|
||||
if (Player.status[DISPLACED])
|
||||
menuprint("Displaced\n");
|
||||
if (Player.status[SLEPT])
|
||||
menuprint("Slept\n");
|
||||
if (Player.status[DISEASED])
|
||||
menuprint("Diseased\n");
|
||||
if (Player.status[POISONED])
|
||||
menuprint("Poisoned\n");
|
||||
if (Player.status[BREATHING])
|
||||
menuprint("Breathing\n");
|
||||
if (Player.status[INVISIBLE])
|
||||
menuprint("Invisible\n");
|
||||
if (Player.status[REGENERATING])
|
||||
menuprint("Regenerating\n");
|
||||
if (Player.status[VULNERABLE])
|
||||
menuprint("Vulnerable\n");
|
||||
if (Player.status[BERSERK])
|
||||
menuprint("Berserk\n");
|
||||
if (Player.status[IMMOBILE])
|
||||
menuprint("Immobile\n");
|
||||
if (Player.status[ALERT])
|
||||
menuprint("Alert\n");
|
||||
if (Player.status[AFRAID])
|
||||
menuprint("Afraid\n");
|
||||
if (Player.status[ACCURATE])
|
||||
menuprint("Accurate\n");
|
||||
if (Player.status[HERO])
|
||||
menuprint("Heroic\n");
|
||||
if (Player.status[LEVITATING])
|
||||
menuprint("Levitating\n");
|
||||
if (Player.status[TRUESIGHT]) /* FIXED! 12/30/98 DG */
|
||||
menuprint("Sharp\n");
|
||||
if (Player.status[SHADOWFORM])
|
||||
menuprint("Shadowy\n");
|
||||
if (Player.status[ILLUMINATION])
|
||||
menuprint("Glowing\n");
|
||||
if (Player.status[DEFLECTION])
|
||||
menuprint("Buffered\n");
|
||||
if (Player.status[RETURNING])
|
||||
menuprint("Returning\n");
|
||||
showmenu();
|
||||
morewait();
|
||||
menuclear();
|
||||
menuprint("Immunities:\n");
|
||||
if (p_immune(NORMAL_DAMAGE))
|
||||
menuprint("Normal Damage\n");
|
||||
if (p_immune(FLAME))
|
||||
menuprint("Flame\n");
|
||||
if (p_immune(ELECTRICITY))
|
||||
menuprint("Electricity\n");
|
||||
if (p_immune(COLD))
|
||||
menuprint("Cold\n");
|
||||
if (p_immune(POISON))
|
||||
menuprint("Poison\n");
|
||||
if (p_immune(ACID))
|
||||
menuprint("Acid\n");
|
||||
if (p_immune(FEAR))
|
||||
menuprint("Fear\n");
|
||||
if (p_immune(SLEEP))
|
||||
menuprint("Sleep\n");
|
||||
if (p_immune(NEGENERGY))
|
||||
menuprint("Negative Energies\n");
|
||||
if (p_immune(THEFT))
|
||||
menuprint("Theft\n");
|
||||
if (p_immune(GAZE))
|
||||
menuprint("Gaze\n");
|
||||
if (p_immune(INFECTION))
|
||||
menuprint("Infection\n");
|
||||
showmenu();
|
||||
morewait();
|
||||
menuclear();
|
||||
menuprint("Ranks:\n");
|
||||
switch(Player.rank[LEGION]) {
|
||||
case COMMANDANT:
|
||||
menuprint("Commandant of the Legion");
|
||||
break;
|
||||
case COLONEL:
|
||||
menuprint("Colonel of the Legion");
|
||||
break;
|
||||
case FORCE_LEADER:
|
||||
menuprint("Force Leader of the Legion");
|
||||
break;
|
||||
case CENTURION:
|
||||
menuprint("Centurion of the Legion");
|
||||
break;
|
||||
case LEGIONAIRE:
|
||||
menuprint("Legionaire");
|
||||
break;
|
||||
}
|
||||
if (Player.rank[LEGION] > 0) {
|
||||
menuprint(" (");
|
||||
menunumprint(Player.guildxp[LEGION]);
|
||||
menuprint(" XP).\n");
|
||||
}
|
||||
switch(Player.rank[ARENA]) {
|
||||
case -1:
|
||||
menuprint("Ex-gladiator\n");
|
||||
break;
|
||||
case CHAMPION:
|
||||
menuprint("Gladiator Champion");
|
||||
break;
|
||||
case GLADIATOR:
|
||||
menuprint("Gladiator of the Arena");
|
||||
break;
|
||||
case RETIARIUS:
|
||||
menuprint("Retiarius of the Arena");
|
||||
break;
|
||||
case BESTIARIUS:
|
||||
menuprint("Bestiarius of the Arena");
|
||||
break;
|
||||
case TRAINEE:
|
||||
menuprint("Gladiator Trainee of the Arena");
|
||||
break;
|
||||
}
|
||||
if (Player.rank[ARENA] > 0) {
|
||||
menuprint(" (Opponent ");
|
||||
menunumprint(Arena_Opponent);
|
||||
menuprint(")\n");
|
||||
}
|
||||
switch(Player.rank[COLLEGE]) {
|
||||
case ARCHMAGE:
|
||||
menuprint("Archmage of the Collegium Magii");
|
||||
break;
|
||||
case MAGE:
|
||||
menuprint("Collegium Magii: Mage");
|
||||
break;
|
||||
case PRECEPTOR:
|
||||
menuprint("Collegium Magii: Preceptor");
|
||||
break;
|
||||
case STUDENT:
|
||||
menuprint("Collegium Magii: Student");
|
||||
break;
|
||||
case NOVICE:
|
||||
menuprint("Collegium Magii: Novice");
|
||||
break;
|
||||
}
|
||||
if (Player.rank[COLLEGE] > 0) {
|
||||
menuprint(" (");
|
||||
menunumprint(Player.guildxp[COLLEGE]);
|
||||
menuprint(" XP).\n");
|
||||
}
|
||||
switch(Player.rank[NOBILITY]) {
|
||||
case DUKE:
|
||||
menuprint("Duke of Rampart");
|
||||
break;
|
||||
case LORD:
|
||||
menuprint("Peer of the Realm");
|
||||
break;
|
||||
case KNIGHT:
|
||||
menuprint("Order of the Knights of Rampart");
|
||||
break;
|
||||
case ESQUIRE:
|
||||
menuprint("Squire of Rampart");
|
||||
break;
|
||||
case COMMONER:
|
||||
menuprint("Commoner");
|
||||
break;
|
||||
default:
|
||||
menuprint("Lowly Commoner\n");
|
||||
break;
|
||||
}
|
||||
if (Player.rank[NOBILITY] > 1) {
|
||||
menuprint(" (");
|
||||
menunumprint(Player.rank[NOBILITY] - 1);
|
||||
menuprint(ordinal(Player.rank[NOBILITY] - 1));
|
||||
menuprint(" Quest Completed)\n");
|
||||
}
|
||||
else if (Player.rank[NOBILITY] == 1) {
|
||||
menuprint(" (1st Quest Undertaken)\n");
|
||||
}
|
||||
switch(Player.rank[CIRCLE]) {
|
||||
case -1:
|
||||
menuprint("Former member of the Circle.\n");
|
||||
break;
|
||||
case PRIME:
|
||||
menuprint("Prime Sorceror of the Inner Circle");
|
||||
break;
|
||||
case HIGHSORCEROR:
|
||||
menuprint("High Sorceror of the Inner Circle");
|
||||
break;
|
||||
case SORCEROR:
|
||||
menuprint("Member of the Circle of Sorcerors");
|
||||
break;
|
||||
case ENCHANTER:
|
||||
menuprint("Member of the Circle of Enchanters");
|
||||
break;
|
||||
case INITIATE:
|
||||
menuprint("Member of the Circle of Initiates");
|
||||
break;
|
||||
}
|
||||
if (Player.rank[CIRCLE] > 0) {
|
||||
menuprint(" (");
|
||||
menunumprint(Player.guildxp[CIRCLE]);
|
||||
menuprint(" XP).\n");
|
||||
}
|
||||
switch(Player.rank[ORDER]) {
|
||||
case -1:
|
||||
menuprint("Washout from the Order of Paladins\n");
|
||||
break;
|
||||
case JUSTICIAR:
|
||||
menuprint("Justiciar of the Order of Paladins");
|
||||
break;
|
||||
case PALADIN:
|
||||
menuprint("Paladin of the Order");
|
||||
break;
|
||||
case CHEVALIER:
|
||||
menuprint("Chevalier of the Order");
|
||||
break;
|
||||
case GUARDIAN:
|
||||
menuprint("Guardian of the Order");
|
||||
break;
|
||||
case GALLANT:
|
||||
menuprint("Gallant of the Order");
|
||||
break;
|
||||
}
|
||||
if (Player.rank[ORDER] > 0) {
|
||||
menuprint(" (");
|
||||
menunumprint(Player.guildxp[ORDER]);
|
||||
menuprint(" XP).\n");
|
||||
}
|
||||
switch(Player.rank[THIEVES]) {
|
||||
case SHADOWLORD:
|
||||
menuprint("Guild of Thieves: Shadowlord");
|
||||
break;
|
||||
case TMASTER:
|
||||
menuprint("Guild of Thieves: Master Thief");
|
||||
break;
|
||||
case THIEF:
|
||||
menuprint("Guild of Thieves: Thief");
|
||||
break;
|
||||
case ATHIEF:
|
||||
menuprint("Guild of Thieves: Apprentice Thief");
|
||||
break;
|
||||
case TMEMBER:
|
||||
menuprint("Guild of Thieves: Candidate Member");
|
||||
break;
|
||||
}
|
||||
if (Player.rank[THIEVES] > 0) {
|
||||
menuprint(" (");
|
||||
menunumprint(Player.guildxp[THIEVES]);
|
||||
menuprint(" XP).\n");
|
||||
}
|
||||
switch(Player.rank[PRIESTHOOD]) {
|
||||
case LAY:
|
||||
menuprint("A lay devotee of ");
|
||||
break;
|
||||
case ACOLYTE:
|
||||
menuprint("An Acolyte of ");
|
||||
break;
|
||||
case PRIEST:
|
||||
menuprint("A Priest of ");
|
||||
break;
|
||||
case SPRIEST:
|
||||
menuprint("A Senior Priest of ");
|
||||
break;
|
||||
case HIGHPRIEST:
|
||||
menuprint("The High Priest of ");
|
||||
break;
|
||||
}
|
||||
switch(Player.patron) {
|
||||
case ODIN:
|
||||
menuprint("Odin");
|
||||
break;
|
||||
case SET:
|
||||
menuprint("Set");
|
||||
break;
|
||||
case ATHENA:
|
||||
menuprint("Athena");
|
||||
break;
|
||||
case HECATE:
|
||||
menuprint("Hecate");
|
||||
break;
|
||||
case DRUID:
|
||||
menuprint("Druidism");
|
||||
break;
|
||||
case DESTINY:
|
||||
menuprint("the Lords of Destiny");
|
||||
break;
|
||||
}
|
||||
if (Player.rank[PRIESTHOOD] > 0) {
|
||||
menuprint(" (");
|
||||
menunumprint(Player.guildxp[PRIESTHOOD]);
|
||||
menuprint(" XP).\n");
|
||||
}
|
||||
#ifdef INCLUDE_MONKS
|
||||
switch(Player.rank[MONKS]) {
|
||||
case MONK_GRANDMASTER:
|
||||
menuprint("Tholian Monks: Grandmaster");
|
||||
break;
|
||||
case MONK_MASTER_TEARS:
|
||||
menuprint("Tholian Monks: Master of Tears");
|
||||
break;
|
||||
case MONK_MASTER_PAINS:
|
||||
menuprint("Tholian Monks: Master of Pain");
|
||||
break;
|
||||
case MONK_MASTER_SIGHS:
|
||||
menuprint("Tholian Monks: Master of Sighs");
|
||||
break;
|
||||
case MONK_MASTER:
|
||||
menuprint("Tholian Monks: Master");
|
||||
break;
|
||||
case MONK_MONK:
|
||||
menuprint("Tholian Monks: Monk");
|
||||
break;
|
||||
case MONK_TRAINEE:
|
||||
menuprint("Tholian Monks: Trainee");
|
||||
break;
|
||||
}
|
||||
if (Player.rank[MONKS] > 0) {
|
||||
menuprint(" (");
|
||||
menunumprint(Player.guildxp[MONKS]);
|
||||
menuprint(" XP).\n");
|
||||
}
|
||||
#endif
|
||||
if (Player.rank[ADEPT] > 0)
|
||||
menuprint("**************\n*Omegan Adept*\n**************\n");
|
||||
showmenu();
|
||||
morewait();
|
||||
xredraw();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Recreates the current level */
|
||||
void flux(int blessing)
|
||||
{
|
||||
mprint("The universe warps around you!");
|
||||
if (Current_Environment == E_CITY) {
|
||||
mprint("Sensing dangerous high order magic, the Collegium Magii");
|
||||
mprint("and the Circle of Sorcerors join forces to negate the spell.");
|
||||
mprint("You are zapped by an antimagic ray!!!");
|
||||
dispel(-1);
|
||||
mprint("The universe unwarps itself....");
|
||||
}
|
||||
else if (Current_Environment != Current_Dungeon)
|
||||
mprint("Odd.... No effect!");
|
||||
else {
|
||||
mprint("You stagger as the very nature of reality warps!");
|
||||
erase_level();
|
||||
Level->generated = FALSE;
|
||||
mprint("The fabric of spacetime reknits....");
|
||||
change_level(Level->depth-1,Level->depth,TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
/*Turns on displacement status for the player */
|
||||
void displace(int blessing)
|
||||
{
|
||||
if (blessing > -1) {
|
||||
mprint("You feel a sense of dislocation.");
|
||||
Player.status[DISPLACED] = blessing + random_range(6);
|
||||
}
|
||||
else {
|
||||
mprint("You feel vulnerable");
|
||||
Player.status[VULNERABLE] += random_range(6) - blessing;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void invisible(int blessing)
|
||||
{
|
||||
if (blessing > -1) {
|
||||
mprint("You feel transparent!");
|
||||
Player.status[INVISIBLE]+= 2+5*blessing;
|
||||
}
|
||||
else {
|
||||
#ifdef NEW_QUOTES
|
||||
mprint("You feel endangered!");
|
||||
#else
|
||||
mprint("You feel dangerous!");
|
||||
#endif
|
||||
Player.status[VULNERABLE] +=
|
||||
random_range(10)+1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void warp(int blessing)
|
||||
{
|
||||
int newlevel;
|
||||
if (Current_Environment != Current_Dungeon)
|
||||
mprint("How strange! No effect....");
|
||||
else {
|
||||
newlevel = (int) parsenum("Warp to which level? ");
|
||||
if (newlevel >= MaxDungeonLevels || blessing < 0 || newlevel < 1) {
|
||||
mprint("You have been deflected!");
|
||||
newlevel=random_range(MaxDungeonLevels - 1) + 1;
|
||||
}
|
||||
mprint("You dematerialize...");
|
||||
change_level(Level->depth,newlevel,FALSE);
|
||||
}
|
||||
roomcheck();
|
||||
}
|
||||
|
||||
void alert(int blessing)
|
||||
{
|
||||
if (blessing > -1) {
|
||||
mprint("You feel on-the-ball.");
|
||||
Player.status[ALERT]+= 4+(5*blessing);
|
||||
}
|
||||
else sleep_player(abs(blessing)+3);
|
||||
}
|
||||
|
||||
void regenerate(int blessing)
|
||||
{
|
||||
if (blessing < 0)
|
||||
heal(blessing * 10);
|
||||
else {
|
||||
mprint("You feel abnormally healthy.");
|
||||
Player.status[REGENERATING] += (blessing+1)*50;
|
||||
}
|
||||
}
|
||||
|
||||
void haste(int blessing)
|
||||
{
|
||||
if (blessing > -1) {
|
||||
if (! Player.status[HASTED])
|
||||
mprint("The world slows down!");
|
||||
else mprint("Nothing much happens.");
|
||||
if (Player.status[SLOWED])
|
||||
Player.status[SLOWED] = 0;
|
||||
/* DAG -- this seems too long */
|
||||
/* WDT -- I agree. Next version we'll fiddle it a bit. I suspect
|
||||
* that the author of haste/slow didn't really understand the time
|
||||
* system (or perhaps the time system's been changed since). */
|
||||
Player.status[HASTED] += (blessing*100)+random_range(250);
|
||||
}
|
||||
else {
|
||||
mprint("You feel slower.");
|
||||
if (Player.status[HASTED] > 0) mprint("...but the feeling quickly fades.");
|
||||
/* DAG don't add, so it can't be come permanent. Also, reduce duration. */
|
||||
else Player.status[SLOWED] = max( random_range(100)+50, Player.status[SLOWED] );
|
||||
/* was: else Player.status[SLOWED] += random_range(250)+250; */
|
||||
}
|
||||
}
|
||||
|
||||
void recover_stat(int blessing)
|
||||
{
|
||||
if (blessing < 0) {
|
||||
mprint("You feel a cold surge!");
|
||||
switch(random_range(6)) {
|
||||
case 0: Player.str = min(Player.str-1,Player.maxstr-1); break;
|
||||
case 1: Player.con = min(Player.con-1,Player.maxcon-1); break;
|
||||
case 2: Player.dex = min(Player.dex-1,Player.maxdex-1); break;
|
||||
case 3: Player.agi = min(Player.agi-1,Player.maxagi-1); break;
|
||||
case 4: Player.iq = min(Player.iq-1,Player.maxiq-1); break;
|
||||
case 5: Player.pow = min(Player.pow-1,Player.maxpow-1); break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
mprint("You feel a warm tingle!");
|
||||
Player.str = max(Player.str,Player.maxstr);
|
||||
Player.con = max(Player.con,Player.maxcon);
|
||||
Player.dex = max(Player.dex,Player.maxdex);
|
||||
Player.agi = max(Player.agi,Player.maxagi);
|
||||
Player.iq = max(Player.iq,Player.maxiq);
|
||||
Player.pow = max(Player.pow,Player.maxpow);
|
||||
}
|
||||
calc_melee();
|
||||
}
|
||||
|
||||
void augment(int blessing)
|
||||
{
|
||||
if (blessing < 0) {
|
||||
mprint("You feel a cold surge!");
|
||||
switch(random_range(6)) {
|
||||
case 0: Player.str = min(Player.str-1,Player.maxstr-1); break;
|
||||
case 1: Player.con = min(Player.con-1,Player.maxcon-1); break;
|
||||
case 2: Player.dex = min(Player.dex-1,Player.maxdex-1); break;
|
||||
case 3: Player.agi = min(Player.agi-1,Player.maxagi-1); break;
|
||||
case 4: Player.iq = min(Player.iq-1,Player.maxiq-1); break;
|
||||
case 5: Player.pow = min(Player.pow-1,Player.maxpow-1); break;
|
||||
}
|
||||
}
|
||||
else if (blessing == 0) {
|
||||
mprint("You feel a warm tingle!");
|
||||
switch(random_range(6)) {
|
||||
case 0: Player.str = max(Player.str+1,Player.maxstr+1); break;
|
||||
case 1: Player.con = max(Player.con+1,Player.maxcon+1); break;
|
||||
case 2: Player.dex = max(Player.dex+1,Player.maxdex+1); break;
|
||||
case 3: Player.agi = max(Player.agi+1,Player.maxagi+1); break;
|
||||
case 4: Player.iq = max(Player.iq+1,Player.maxiq+1); break;
|
||||
case 5: Player.pow = max(Player.pow+1,Player.maxpow+1); break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
mprint("You feel a hot flash!");
|
||||
Player.str = max(Player.str+1,Player.maxstr+1);
|
||||
Player.con = max(Player.con+1,Player.maxcon+1);
|
||||
Player.dex = max(Player.dex+1,Player.maxdex+1);
|
||||
Player.agi = max(Player.agi+1,Player.maxagi+1);
|
||||
Player.iq = max(Player.iq+1,Player.maxiq+1);
|
||||
Player.pow = max(Player.pow+1,Player.maxpow+1);
|
||||
}
|
||||
calc_melee();
|
||||
}
|
||||
|
||||
void breathe(int blessing)
|
||||
{
|
||||
if (blessing > -1) {
|
||||
mprint("Your breath is energized!");
|
||||
Player.status[BREATHING] += 6+blessing;
|
||||
}
|
||||
else {
|
||||
mprint("You choke as your lungs fill with water!");
|
||||
p_damage(50,UNSTOPPABLE,"drowning");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void i_chaos(pob o)
|
||||
{
|
||||
if (Player.alignment < 0) {
|
||||
Player.alignment -= random_range(20);
|
||||
mprint("You feel deliciously chaotic!");
|
||||
gain_experience(abs(Player.alignment)*10);
|
||||
}
|
||||
else {
|
||||
mprint("You feel a sense of inner turmoil!");
|
||||
}
|
||||
/* Potion of Chaos always makes player more chaotic. PGM */
|
||||
Player.alignment -= random_range(20);
|
||||
}
|
||||
|
||||
void i_law(pob o)
|
||||
{
|
||||
if (Player.alignment > 0) {
|
||||
Player.alignment += random_range(20);
|
||||
mprint("You feel wonderfully lawful!");
|
||||
gain_experience(Player.alignment*10);
|
||||
}
|
||||
else {
|
||||
mprint("You feel a sense of inner constraint!");
|
||||
}
|
||||
/* Potion of Law always makes player more lawful. PGM */
|
||||
Player.alignment += random_range(20);
|
||||
}
|
||||
|
||||
void sanctify(int blessing)
|
||||
{
|
||||
if (blessing > -1) {
|
||||
if (Level->environment == E_TEMPLE)
|
||||
mprint("Odd, the spell has no effect. I wonder why.");
|
||||
else if (Level->site[Player.x][Player.y].locchar == ALTAR)
|
||||
mprint("This site can't get any holier!");
|
||||
else if (Player.patron == 0) {
|
||||
mprint("The gods are angered!");
|
||||
Level->site[Player.x][Player.y].locchar = LAVA;
|
||||
Level->site[Player.x][Player.y].p_locf = L_LAVA;
|
||||
lset(Player.x, Player.y, CHANGED);
|
||||
p_movefunction(L_LAVA);
|
||||
}
|
||||
else {
|
||||
Level->site[Player.x][Player.y].locchar = ALTAR;
|
||||
Level->site[Player.x][Player.y].aux = Player.patron;
|
||||
Level->site[Player.x][Player.y].p_locf = L_ALTAR;
|
||||
lset(Player.x, Player.y, CHANGED);
|
||||
mprint("You are standing on sacred ground!");
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (Level->site[Player.x][Player.y].locchar == ALTAR) {
|
||||
mprint("The altar crumbles before your unholy blast....");
|
||||
Level->site[Player.x][Player.y].locchar = FLOOR;
|
||||
Level->site[Player.x][Player.y].p_locf = L_NO_OP;
|
||||
lset(Player.x, Player.y, CHANGED);
|
||||
if (Level->site[Player.x][Player.y].aux == Player.patron) {
|
||||
mprint("Your deity is not amused....");
|
||||
p_damage(Player.hp-1,UNSTOPPABLE,"Divine Wrath");
|
||||
}
|
||||
else if ((Player.patron == ATHENA) || (Player.patron == ODIN)) {
|
||||
if ((Level->site[Player.x][Player.y].aux == SET) ||
|
||||
(Level->site[Player.x][Player.y].aux == HECATE)) {
|
||||
mprint("Your deity applauds the eradication of Chaos' taint");
|
||||
gain_experience(1000);
|
||||
}
|
||||
else {
|
||||
mprint("Your deity approves of your action.");
|
||||
gain_experience(100);
|
||||
}
|
||||
}
|
||||
else if ((Player.patron == SET) || (Player.patron == HECATE)) {
|
||||
if ((Level->site[Player.x][Player.y].aux == ODIN) ||
|
||||
(Level->site[Player.x][Player.y].aux == ATHENA)) {
|
||||
mprint("Your deity applauds the obliteration of Law");
|
||||
gain_experience(1000);
|
||||
}
|
||||
else {
|
||||
mprint("Your deity approves of your action.");
|
||||
gain_experience(100);
|
||||
}
|
||||
}
|
||||
else if (Player.patron == DRUID) {
|
||||
mprint("Your attempt to maintain the Balance is applauded....");
|
||||
gain_experience(250);
|
||||
}
|
||||
else mprint("Nothing much happens");
|
||||
}
|
||||
else mprint("You feel an aura of unholiness arising from this spot....");
|
||||
}
|
||||
}
|
||||
|
||||
void accuracy(int blessing)
|
||||
{
|
||||
if (blessing > -1) {
|
||||
mprint("Everything seems covered in bullseyes!");
|
||||
Player.status[ACCURACY] += random_range(5)+1+blessing*5;
|
||||
calc_melee();
|
||||
}
|
||||
else {
|
||||
Player.status[ACCURACY]=0;
|
||||
calc_melee();
|
||||
mprint("Your vision blurs...");
|
||||
}
|
||||
}
|
330
env.c
Normal file
330
env.c
Normal file
@ -0,0 +1,330 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* env.c */
|
||||
/* some load_* routines for special environments */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
/* loads the arena level into Level*/
|
||||
void load_arena(void)
|
||||
{
|
||||
int i,j;
|
||||
char site;
|
||||
pob box=((pob)checkmalloc(sizeof(objtype)));
|
||||
map *glad; /* too glad to gladiate */
|
||||
|
||||
*box = Objects[OB_GARAGE_OPENER];
|
||||
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
clear_level(Level);
|
||||
Level->environment = E_ARENA;
|
||||
|
||||
glad = map_open(MAP_arena);
|
||||
map_setLevel(glad,0);
|
||||
|
||||
Level->level_width = map_getWidth(glad);
|
||||
Level->level_length = map_getLength(glad);
|
||||
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
Level->site[i][j].lstatus = SEEN+LIT;
|
||||
Level->site[i][j].roomnumber = RS_ARENA;
|
||||
site = map_getSiteChar(glad,i,j);
|
||||
Level->site[i][j].p_locf = L_NO_OP;
|
||||
switch(site) {
|
||||
case 'P':
|
||||
Level->site[i][j].locchar = PORTCULLIS;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS;
|
||||
break;
|
||||
case 'X':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_ARENA_EXIT;
|
||||
break;
|
||||
case '#':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
break;
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
}
|
||||
Level->site[i][j].showchar = Level->site[i][j].locchar;
|
||||
}
|
||||
}
|
||||
map_close(glad);
|
||||
Level->site[60][7].creature = Arena_Monster;
|
||||
Arena_Monster->x = 60;
|
||||
Arena_Monster->y = 7;
|
||||
Arena_Monster->sense = 50;
|
||||
m_pickup(Arena_Monster,box);
|
||||
m_status_set(Arena_Monster,AWAKE);
|
||||
Level->mlist = (pml) checkmalloc(sizeof(mltype));
|
||||
Level->mlist->m = Arena_Monster;
|
||||
Level->mlist->next = NULL;
|
||||
/* hehehehe cackled the dungeon master.... */
|
||||
print2("Your opponent holds the only way you can leave!");
|
||||
}
|
||||
|
||||
/* loads the sorcereror's circle into Level*/
|
||||
void load_circle(int populate)
|
||||
{
|
||||
int i,j;
|
||||
int safe = (Player.rank[CIRCLE] > 0);
|
||||
char site;
|
||||
map *nook; /* I'll never run out of 4-letter names! */
|
||||
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
clear_level(Level);
|
||||
Level->environment = E_CIRCLE;
|
||||
nook = map_open(MAP_circle);
|
||||
map_setLevel(nook,0);
|
||||
|
||||
Level->level_width = map_getWidth(nook);
|
||||
Level->level_length = map_getLength(nook);
|
||||
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
Level->site[i][j].lstatus = 0;
|
||||
Level->site[i][j].roomnumber = RS_CIRCLE;
|
||||
Level->site[i][j].p_locf = L_NO_OP;
|
||||
site = map_getSiteChar(nook,i,j);
|
||||
switch(site) {
|
||||
case 'P':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_prime(i,j); /* prime sorceror */
|
||||
Level->site[i][j].creature->specialf = M_SP_PRIME;
|
||||
if (! safe) m_status_set(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
break;
|
||||
case 'D':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,DEMON_PRINCE); /* prime circle demon */
|
||||
if (safe) m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
Level->site[i][j].creature->specialf = M_SP_COURT;
|
||||
}
|
||||
break;
|
||||
case 's':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,SERV_CHAOS); /* servant of chaos */
|
||||
Level->site[i][j].creature->specialf = M_SP_COURT;
|
||||
if (safe) m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
break;
|
||||
case 'e':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,ENCHANTOR); /* enchanter */
|
||||
Level->site[i][j].creature->specialf = M_SP_COURT;
|
||||
if (safe) m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
break;
|
||||
case 'n':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,NECROMANCER); /* necromancer */
|
||||
Level->site[i][j].creature->specialf = M_SP_COURT;
|
||||
if (safe) m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
break;
|
||||
case 'T':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,THAUMATURGIST); /* High Thaumaturgist */
|
||||
Level->site[i][j].creature->specialf = M_SP_COURT;
|
||||
if (safe) m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
break;
|
||||
case '#':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
Level->site[i][j].aux = 1000;
|
||||
break;
|
||||
case 'L':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_CIRCLE_LIBRARY;
|
||||
break;
|
||||
case '?':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_TOME1;
|
||||
break;
|
||||
case '!':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_TOME2;
|
||||
break;
|
||||
case 'S':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
lset(i,j,SECRET);
|
||||
break;
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
case '-':
|
||||
Level->site[i][j].locchar = CLOSED_DOOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
map_close(nook);
|
||||
}
|
||||
|
||||
/* make the prime sorceror */
|
||||
void make_prime(int i, int j)
|
||||
{
|
||||
pml ml = ((pml) checkmalloc(sizeof(mltype)));
|
||||
pmt m = ((pmt) checkmalloc(sizeof(montype)));
|
||||
pol ol;
|
||||
pob o;
|
||||
make_hiscore_npc(m,10); /* 10 is index for prime */
|
||||
m->x = i;
|
||||
m->y = j;
|
||||
Level->site[i][j].creature = m;
|
||||
ml->m = m;
|
||||
ml->next = Level->mlist;
|
||||
Level->mlist = ml;
|
||||
|
||||
if (Objects[OB_STARGEM].uniqueness != UNIQUE_TAKEN) {
|
||||
ol = ((pol) checkmalloc(sizeof(oltype)));
|
||||
o = ((pob) checkmalloc(sizeof(objtype)));
|
||||
*o = Objects[OB_STARGEM];
|
||||
ol->thing = o;
|
||||
ol->next = NULL;
|
||||
m->possessions = ol;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* loads the court of the archmage into Level*/
|
||||
void load_court(int populate)
|
||||
{
|
||||
int i,j;
|
||||
char site;
|
||||
map *mage;
|
||||
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
clear_level(Level);
|
||||
Level->environment = E_COURT;
|
||||
mage = map_open(MAP_court);
|
||||
map_setLevel(mage,0);
|
||||
|
||||
Level->level_width = map_getWidth(mage);
|
||||
Level->level_length = map_getLength(mage);
|
||||
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
Level->site[i][j].lstatus = 0;
|
||||
Level->site[i][j].roomnumber = RS_COURT;
|
||||
Level->site[i][j].p_locf = L_NO_OP;
|
||||
site = map_getSiteChar(mage,i,j);
|
||||
switch(site) {
|
||||
case '5':
|
||||
Level->site[i][j].locchar = CHAIR;
|
||||
Level->site[i][j].p_locf = L_THRONE;
|
||||
if (populate) {
|
||||
make_specific_treasure(i,j,OB_SCEPTRE);
|
||||
make_archmage(i,j);
|
||||
m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
m_status_reset(Level->site[i][j].creature,MOBILE);
|
||||
}
|
||||
break;
|
||||
case 'e':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,ENCHANTOR); /* enchanter */
|
||||
m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
Level->site[i][j].creature->specialf = M_SP_COURT;
|
||||
}
|
||||
break;
|
||||
case 'n':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,NECROMANCER); /* necromancer */
|
||||
m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
Level->site[i][j].creature->specialf = M_SP_COURT;
|
||||
}
|
||||
break;
|
||||
case 'T':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,THAUMATURGIST); /* High Thaumaturgist */
|
||||
m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
Level->site[i][j].creature->specialf = M_SP_COURT;
|
||||
}
|
||||
break;
|
||||
case '#':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
Level->site[i][j].aux = 1000;
|
||||
break;
|
||||
case 'G':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (populate) {
|
||||
make_site_monster(i,j,GUARD); /* guard */
|
||||
m_status_reset(Level->site[i][j].creature,HOSTILE);
|
||||
}
|
||||
break;
|
||||
case '<':
|
||||
Level->site[i][j].locchar = STAIRS_UP;
|
||||
Level->site[i][j].p_locf = L_ESCALATOR;
|
||||
break;
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
map_close(mage);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* make the archmage */
|
||||
void make_archmage(int i, int j)
|
||||
{
|
||||
pml ml = ((pml) checkmalloc(sizeof(mltype)));
|
||||
pmt m = ((pmt) checkmalloc(sizeof(montype)));
|
||||
make_hiscore_npc(m,9); /* 9 is index for archmage */
|
||||
m->x = i;
|
||||
m->y = j;
|
||||
Level->site[i][j].creature = m;
|
||||
ml->m = m;
|
||||
ml->next = Level->mlist;
|
||||
Level->mlist = ml;
|
||||
m->specialf = M_SP_COURT;
|
||||
}
|
||||
|
322
etc.c
Normal file
322
etc.c
Normal file
@ -0,0 +1,322 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* etc.c */
|
||||
/* grab bag of random functions used in random places */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
/* there are various ways for the player to receive one of these hints */
|
||||
void hint(void)
|
||||
{
|
||||
switch(random_range(97)) {
|
||||
case 0:mprint("There is an entrance to the sewers in the Garden.");break;
|
||||
case 1:mprint("Statues can be dangerous.");break;
|
||||
case 2:mprint("Unidentified Artifacts can be dangerous.");break;
|
||||
case 3:mprint("The higher form of mercury is desirable.");break;
|
||||
case 4:mprint("A sense of unease is a good thing to have.");break;
|
||||
case 5:mprint("If you dig too much, you might cause a cave-in!");break;
|
||||
case 6:mprint("Be Lawful: Live and Let Live.");break;
|
||||
case 7:mprint("Be Chaotic: Live and Let Die."); break;
|
||||
case 8:mprint("The world doesn't slow down; you speed up.");break;
|
||||
case 9:mprint("Security is a sense of dislocation.");break;
|
||||
case 10:mprint("Tullimore Dew is a panacea.");break;
|
||||
case 11:mprint("Thieves hide behind closed doors.");break;
|
||||
case 12:mprint("`No jail is escapeproof' -- John Dillinger.");break;
|
||||
case 13:mprint("Oh, to have an apartment of your own!");break;
|
||||
case 14:mprint("Some homes have money and treasure.");break;
|
||||
case 15:mprint("Some homes are defended.");break;
|
||||
case 16:mprint("Sometimes you could just wish for Death."); break;
|
||||
case 17:mprint("A cursed wish can be fatal.");break;
|
||||
case 18:mprint("The way you play, you should wish for Skill."); break;
|
||||
case 19:mprint("A druid might wish for Balance."); break;
|
||||
case 20:mprint("Mages always wish for Knowledge.");break;
|
||||
case 21:mprint("Some fairies are good.");break;
|
||||
case 22:mprint("An affair with a demon can be heartbreaking."); break;
|
||||
case 23:mprint("The Explorer's Club knows a useful spell."); break;
|
||||
case 24:mprint("They say some famous people live in mansions."); break;
|
||||
case 25:mprint("Magic pools are totally random."); break;
|
||||
case 26:mprint("There are five elements, including Void."); break;
|
||||
case 27:mprint("Humans can be good or evil, lawful or chaotic."); break;
|
||||
case 28:mprint("There are many kinds of wishes. Case counts, you know.");
|
||||
break;
|
||||
case 29:mprint("There are caves due south of Rampart"); break;
|
||||
case 30:mprint("Donaldson's Giants can withstand lava.");break;
|
||||
case 31:mprint("Ritual magic can have many different effects.");break;
|
||||
case 32:mprint("The Mercenaries are the best equipped fighters."); break;
|
||||
case 33:mprint("The Gladiators are the most skilled fighters."); break;
|
||||
case 34:mprint("Rent a flat and lose any bad stati you may have."); break;
|
||||
case 35:mprint("Some junk may be worth a fortune if identified."); break;
|
||||
case 36:mprint("Identify humans by talking to them."); break;
|
||||
case 37:mprint("They say the Duke has a treasure trove."); break;
|
||||
case 38:mprint("If you yield, your opponent will gain experience."); break;
|
||||
case 39:mprint("The Dragon Lord lives in the Waste of Time."); break;
|
||||
case 40:mprint("A full moon bodes well for the followers of Law."); break;
|
||||
case 41:mprint("A new moon omens evil for the Law-abiding."); break;
|
||||
case 42:mprint("Druids revere the half-moon."); break;
|
||||
case 43:mprint("Most grot is useless."); break;
|
||||
case 44:mprint("Cash can sometimes be found in the walls."); break;
|
||||
case 45:mprint("Pointy weapons break often but dig better."); break;
|
||||
case 46:mprint("The DREADED AQUAE MORTIS is invulnerable."); break;
|
||||
case 47:mprint("There must be *some* reason to worship Destiny!"); break;
|
||||
case 48:mprint("Kill a trifid? A puzzle! Try a saline solution!"); break;
|
||||
case 49:mprint("Beware! The Eater of Souls inhabits the abyss!"); break;
|
||||
case 50:mprint("They say there's a red-light district in town."); break;
|
||||
case 51:mprint("The House of the Eclipse is behind a closed door."); break;
|
||||
case 52:mprint("The Orbs may be encountered on the Astral Plane."); break;
|
||||
case 53:mprint("The Champion should never refuse a challenge."); break;
|
||||
case 54:mprint("They say that the autoteller program is buggy."); break;
|
||||
case 55:mprint("It's better not to sleep on the ground."); break;
|
||||
case 56:mprint("Try ritual magic in different kinds of rooms."); break;
|
||||
case 57:mprint("Breaking down a wall by bashing it is a bad idea!"); break;
|
||||
case 58:mprint("Follow the Oracle's advice; she is all-wise."); break;
|
||||
case 59:mprint("The ArchDruid lives in the northern forest.");break;
|
||||
case 60:mprint("A search of the mountains may reveal a secret pass.");break;
|
||||
case 61:mprint("Star Peak is to the far North-East."); break;
|
||||
case 62:mprint("The Archmage lives in the far North-West beyond a pass.");
|
||||
break;
|
||||
case 63:mprint("There is a volcano in the southern marshes."); break;
|
||||
case 64:mprint("The Demon Emperor resides in the Volcano."); break;
|
||||
case 65:mprint("The Lawgiver can be found at Star Peak."); break;
|
||||
case 66:mprint("The Temple of Athena is to the North-East."); break;
|
||||
case 67:mprint("The Temple of Set can be found in a desert.");break;
|
||||
case 68:mprint("The Temple of Hecate is in the swamp."); break;
|
||||
case 69:mprint("The Temple of Odin is to the South in some mountains.");
|
||||
break;
|
||||
case 70:mprint("There is a curious island off a promontory of the swamp.");
|
||||
break;
|
||||
case 71:mprint("The Eater of Magic can be found on an island.");break;
|
||||
case 72:mprint("The Temple of Destiny is practically inaccessible.");break;
|
||||
case 73:mprint("Each sect has its own main temple outside the city.");break;
|
||||
case 74:mprint("The aligned temples are dangerous to unbelievers.");break;
|
||||
case 75:mprint("If you are poor, maybe you should wish for Wealth.");break;
|
||||
case 76:mprint("Need mana? Wish for Power.");break;
|
||||
case 77:mprint("Wishing for Law, Balance, or Chaos alters alignment.");break;
|
||||
case 78:mprint("Feeling out of sorts? Wish for Health.");break;
|
||||
case 79:mprint("Challenge the abyss at the Temple of Destiny.");break;
|
||||
case 80:mprint("The Circle of Sorcerors has an Astral HQ");break;
|
||||
case 81:mprint("The Star Gem is the only way back from the Astral Plane.");
|
||||
break;
|
||||
case 82:mprint("The Star Gem is guarded by the Circle of Sorcerors.");break;
|
||||
case 83:mprint("The Star Gem is rightfully the property of the LawBringer.");
|
||||
break;
|
||||
case 84:mprint("They say the Demon Emperor owns the Amulet of the Planes.");
|
||||
break;
|
||||
case 85:mprint("An Amulet might get you to the Temple of Destiny.");break;
|
||||
case 86:mprint("A wish for Location might help you become Adept.");break;
|
||||
case 87:mprint("Some Artifacts may be used only once per day.");break;
|
||||
case 88:mprint("Overusing Artifacts can be a bad move."); break;
|
||||
case 89:mprint("You might starve in the Swamp or the Mountains!");break;
|
||||
case 90:mprint("You would have to be very chaotic to attack a guard!");break;
|
||||
case 91:mprint("You would have to be very foolhardy to attack a guard!");
|
||||
break;
|
||||
case 92:mprint("Only a master of chaos would kill all the city guards!");
|
||||
break;
|
||||
case 93:mprint("The Order depends on the force of the LawGiver.");break;
|
||||
case 94:mprint("City Guards are employees of the Order.");break;
|
||||
case 95:mprint("Disenchanted Artifacts can be restored."); break;
|
||||
case 96:mprint("They say blessings can really change an item's attitude."); break;
|
||||
}
|
||||
}
|
||||
|
||||
/* for when a deity teaches spells to a devotee */
|
||||
void learnclericalspells(int deity, int level)
|
||||
{
|
||||
mprint("With your new clerical rank comes knowledge of magic...");
|
||||
Player.pow+=level;
|
||||
Player.maxpow+=level;
|
||||
switch(level) {
|
||||
case LAY:
|
||||
if (deity==ODIN)
|
||||
Spells[S_MISSILE].known = TRUE;
|
||||
else if (deity==SET)
|
||||
Spells[S_INVISIBLE].known = TRUE;
|
||||
else if (deity==ATHENA)
|
||||
Spells[S_IDENTIFY].known = TRUE;
|
||||
else if (deity==HECATE)
|
||||
Spells[S_DRAIN].known = TRUE;
|
||||
else if (deity==DRUID) {
|
||||
Spells[S_KNOWLEDGE].known = TRUE;
|
||||
Spells[S_MON_DET].known = TRUE;
|
||||
}
|
||||
break;
|
||||
case ACOLYTE:
|
||||
if (deity==ODIN) {
|
||||
Spells[S_LBALL].known = TRUE;
|
||||
Spells[S_TRUESIGHT].known = TRUE;
|
||||
}
|
||||
else if (deity==SET) {
|
||||
Spells[S_SUMMON].known = TRUE;
|
||||
Spells[S_FIREBOLT].known = TRUE;
|
||||
}
|
||||
else if (deity==ATHENA) {
|
||||
Spells[S_HEAL].known = TRUE;
|
||||
Spells[S_SANCTUARY].known = TRUE;
|
||||
}
|
||||
else if (deity==HECATE) {
|
||||
Spells[S_SLEEP].known = TRUE;
|
||||
Spells[S_DISPEL].known = TRUE;
|
||||
}
|
||||
else if (deity==DRUID) {
|
||||
Spells[S_HEAL].known = TRUE;
|
||||
Spells[S_CURE].known = TRUE;
|
||||
}
|
||||
else if (deity==DESTINY)
|
||||
mprint("An acolyte of the Lords of Destiny. Gee whiz.");
|
||||
break;
|
||||
case PRIEST:
|
||||
Spells[S_SANCTIFY].known = TRUE;
|
||||
if (deity==ODIN) {
|
||||
Spells[S_HERO].known = TRUE;
|
||||
Spells[S_HEAL].known = TRUE;
|
||||
}
|
||||
else if (deity==SET) {
|
||||
Spells[S_INVISIBLE].known = TRUE;
|
||||
Spells[S_DISPEL].known = TRUE;
|
||||
}
|
||||
else if (deity==ATHENA) {
|
||||
Spells[S_REGENERATE].known = TRUE;
|
||||
Spells[S_ACCURACY].known = TRUE;
|
||||
}
|
||||
else if (deity==HECATE) {
|
||||
Spells[S_SHADOWFORM].known = TRUE;
|
||||
Spells[S_CURE].known = TRUE;
|
||||
}
|
||||
else if (deity==DRUID) {
|
||||
Spells[S_DISRUPT].known = TRUE;
|
||||
Spells[S_ALERT].known = TRUE;
|
||||
Spells[S_CLAIRVOYANCE].known = TRUE;
|
||||
}
|
||||
else if (deity==DESTINY)
|
||||
mprint("How useless, a new priest of the Lords of Destiny.");
|
||||
break;
|
||||
case SPRIEST:
|
||||
Spells[S_BLESS].known = TRUE;
|
||||
if (deity == ODIN)
|
||||
Spells[S_ACCURACY].known = TRUE;
|
||||
else if (deity == SET)
|
||||
Spells[S_SHADOWFORM].known = TRUE;
|
||||
else if (deity == ATHENA)
|
||||
Spells[S_HERO].known = TRUE;
|
||||
else if (deity == HECATE)
|
||||
Spells[S_POLYMORPH].known = TRUE;
|
||||
else if (deity == DRUID) {
|
||||
Spells[S_POLYMORPH].known = TRUE;
|
||||
Spells[S_LEVITATE].known = TRUE;
|
||||
}
|
||||
else if (deity == DESTINY)
|
||||
mprint("Wow, a new senior priest of the Lords of Destiny.");
|
||||
break;
|
||||
case HIGHPRIEST:
|
||||
if (deity == ODIN)
|
||||
Spells[S_RESTORE].known = TRUE;
|
||||
else if (deity == SET)
|
||||
Spells[S_HELLFIRE].known = TRUE;
|
||||
else if (deity == ATHENA)
|
||||
Spells[S_HELLFIRE].known = TRUE;
|
||||
else if (deity == HECATE)
|
||||
Spells[S_DESECRATE].known = TRUE;
|
||||
else if (deity == DRUID) {
|
||||
Spells[S_DISINTEGRATE].known = TRUE;
|
||||
Spells[S_HERO].known = TRUE;
|
||||
}
|
||||
else if (deity == DESTINY) {
|
||||
mprint("So you're now the high priest of the Lords of Destiny.");
|
||||
mprint("You didn't think you were going to get anything, did you?");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* for the use of the casino slot machine */
|
||||
char *slotstr(int num)
|
||||
{
|
||||
switch(num) {
|
||||
case 0:
|
||||
return("<Slime Mold>");
|
||||
case 1:
|
||||
return("<Lemon>");
|
||||
case 2:
|
||||
return("<Copper>");
|
||||
case 3:
|
||||
return("<Nymph>");
|
||||
case 4:
|
||||
return("<Sword>");
|
||||
case 5:
|
||||
return("<Shield>");
|
||||
case 6:
|
||||
return("<Chest>");
|
||||
case 7:
|
||||
return("<Bar>");
|
||||
case 8:
|
||||
return("<Orb>");
|
||||
case 9:
|
||||
return("<Mithril Nugget>");
|
||||
}
|
||||
return "Error - you should never see this...";
|
||||
}
|
||||
|
||||
/* random names for various uses */
|
||||
char *nameprint(void)
|
||||
{
|
||||
switch(random_range(40)) {
|
||||
case 0:strcpy(Str3,"Orion Splash");break;
|
||||
case 1:strcpy(Str3,"Gorgar");break;
|
||||
case 2:strcpy(Str3,"Hieronymous");break;
|
||||
case 3:strcpy(Str3,"Quantifor Quotron");break;
|
||||
case 4:strcpy(Str3,"Leon");break;
|
||||
case 5:strcpy(Str3,"Joyce");break;
|
||||
case 6:strcpy(Str3,"Leticia Smiley");break;
|
||||
case 7:strcpy(Str3,"Ogilvy the Grim");break;
|
||||
case 8:strcpy(Str3,"Salara Storn");break;
|
||||
case 9:strcpy(Str3,"Murgo");break;
|
||||
case 10:strcpy(Str3,"Jonathan Atwilder");break;
|
||||
case 11:strcpy(Str3,"Xylos the Tan");break;
|
||||
case 12:strcpy(Str3,"Terence");break;
|
||||
case 13:strcpy(Str3,"Toronado");break;
|
||||
case 14:strcpy(Str3,"Kelly");break;
|
||||
case 15:strcpy(Str3,"Cantinflas");break;
|
||||
case 16:strcpy(Str3,"Ixel");break;
|
||||
case 17:strcpy(Str3,"Toto");break;
|
||||
case 18:strcpy(Str3,"Frost");break;
|
||||
case 19:strcpy(Str3,"Aliera Erinyes");break;
|
||||
case 20:strcpy(Str3,"Godel");break;
|
||||
case 21:strcpy(Str3,"Kerst Blackblade");break;
|
||||
case 22:strcpy(Str3,"Ebenezer");break;
|
||||
case 23:strcpy(Str3,"Jeremiah");break;
|
||||
case 24:strcpy(Str3,"Triskelion Shadow");break;
|
||||
case 25:strcpy(Str3,"Eleskir Eremar");break;
|
||||
case 26:strcpy(Str3,"Tyron");break;
|
||||
case 27:strcpy(Str3,"Morgon");break;
|
||||
case 28:strcpy(Str3,"Achmed");break;
|
||||
case 29:strcpy(Str3,"Chin");break;
|
||||
case 30:strcpy(Str3,"Fujimoto");break;
|
||||
case 31:strcpy(Str3,"Dos Santos");break;
|
||||
case 32:strcpy(Str3,"Federico");break;
|
||||
case 33:strcpy(Str3,"Jaime");break;
|
||||
case 34:strcpy(Str3,"Siobhan");break;
|
||||
case 35:strcpy(Str3,"Hans");break;
|
||||
case 36:strcpy(Str3,"Gurkov");break;
|
||||
case 37:strcpy(Str3,"Krilos the Slayer");break;
|
||||
case 38:strcpy(Str3,"Oxxblud");break;
|
||||
case 39:strcpy(Str3,"Dorian");break;
|
||||
}
|
||||
return(Str3);
|
||||
}
|
||||
|
||||
|
||||
/* returns english string equivalent of number */
|
||||
char *wordnum(int num)
|
||||
{
|
||||
switch(num) {
|
||||
case 0: return("zero ");
|
||||
case 1: return("one ");
|
||||
case 2: return("two ");
|
||||
case 3: return("three ");
|
||||
case 4: return("four ");
|
||||
case 5: return("five ");
|
||||
case 6: return("six ");
|
||||
case 7: return("seven ");
|
||||
case 8: return("eight ");
|
||||
case 9: return("nine ");
|
||||
case 10: return("ten ");
|
||||
default: return("");
|
||||
}
|
||||
}
|
672
file.c
Normal file
672
file.c
Normal file
@ -0,0 +1,672 @@
|
||||
/* omega (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* file.c */
|
||||
/* functions with file access in them. Also some direct calls to
|
||||
curses functions */
|
||||
|
||||
#ifdef MSDOS_SUPPORTED_ANTIQUE
|
||||
# include "curses.h"
|
||||
#else
|
||||
# ifdef AMIGA
|
||||
# include <curses210.h>
|
||||
# elif defined(USE_OPCURSES)
|
||||
# include "../opcurses/curses.h"
|
||||
# else
|
||||
# include <curses.h>
|
||||
# endif
|
||||
# include <sys/types.h>
|
||||
# include <unistd.h>
|
||||
# include <sys/file.h>
|
||||
# include <fcntl.h>
|
||||
# include <errno.h>
|
||||
#endif
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
FILE *checkfopen(char *filestring, char *optionstring)
|
||||
{
|
||||
FILE *fd;
|
||||
char response;
|
||||
|
||||
change_to_game_perms();
|
||||
fd = fopen(filestring,optionstring);
|
||||
clearmsg();
|
||||
while (fd == NULL) {
|
||||
print3("Warning! Error opening file:");
|
||||
nprint3(filestring);
|
||||
print1(" Abort or Retry? [ar] ");
|
||||
do response = (char) mcigetc();
|
||||
while ((response != 'a') && (response != 'r'));
|
||||
if (response == 'r') fd = fopen(filestring,optionstring);
|
||||
else {
|
||||
print2("Sorry 'bout that.... Saving character, then quitting.");
|
||||
morewait();
|
||||
save(optionp(COMPRESS_OPTION), TRUE);
|
||||
endgraf();
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
return(fd);
|
||||
}
|
||||
|
||||
void commandlist(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
if (Current_Environment == E_COUNTRYSIDE)
|
||||
strcat(Str1,"help13.txt");
|
||||
else strcat(Str1,"help12.txt");
|
||||
displayfile(Str1);
|
||||
xredraw();
|
||||
}
|
||||
|
||||
|
||||
void user_intro(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"intro.txt");
|
||||
displaycryptfile(Str1);
|
||||
xredraw();
|
||||
}
|
||||
|
||||
void show_license(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"license.txt");
|
||||
displayfile(Str1);
|
||||
xredraw();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void abyss_file(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"abyss.txt");
|
||||
displaycryptfile(Str1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void inv_help(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"help3.txt");
|
||||
displayfile(Str1);
|
||||
xredraw();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void combat_help(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"help5.txt");
|
||||
displayfile(Str1);
|
||||
menuclear();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void cityguidefile(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"scroll2.txt");
|
||||
displaycryptfile(Str1);
|
||||
xredraw();
|
||||
}
|
||||
|
||||
|
||||
void wishfile(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"scroll3.txt");
|
||||
displaycryptfile(Str1);
|
||||
xredraw();
|
||||
}
|
||||
|
||||
void adeptfile(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"scroll4.txt");
|
||||
displaycryptfile(Str1);
|
||||
xredraw();
|
||||
}
|
||||
|
||||
void theologyfile(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"scroll1.txt");
|
||||
displaycryptfile(Str1);
|
||||
xredraw();
|
||||
}
|
||||
|
||||
|
||||
void showmotd(void)
|
||||
{
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"motd.txt");
|
||||
displayfile(Str1);
|
||||
}
|
||||
|
||||
|
||||
void lock_score_file(void)
|
||||
{
|
||||
#ifndef MSDOS
|
||||
int lock;
|
||||
int thispid;
|
||||
int lastpid = 0;
|
||||
int attempts = 0;
|
||||
|
||||
FILE * lockfile;
|
||||
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"omega.hi.lock");
|
||||
|
||||
do
|
||||
{
|
||||
/* create lock file */
|
||||
lock = open(Str1, O_CREAT | O_EXCL, 0600);
|
||||
if (lock < 0 && errno == EEXIST)
|
||||
{
|
||||
lockfile = fopen(Str1, "rb");
|
||||
if (lockfile)
|
||||
{
|
||||
fscanf(lockfile, "%d", &thispid);
|
||||
fclose(lockfile);
|
||||
if (thispid != lastpid)
|
||||
attempts = 0;
|
||||
lastpid = thispid;
|
||||
}
|
||||
|
||||
attempts++;
|
||||
/* assume that lock file has been abandoned */
|
||||
if (attempts > 10)
|
||||
{
|
||||
/* so we unlink it ourselves - ugly... */
|
||||
unlink(Str1);
|
||||
}
|
||||
else
|
||||
sleep(2);
|
||||
}
|
||||
else if (lock < 0)
|
||||
{
|
||||
/* oops - something very wrong */
|
||||
return;
|
||||
}
|
||||
}
|
||||
while (lock < 0);
|
||||
|
||||
sprintf(Str1, "%d", getpid());
|
||||
write(lock, Str1, strlen(Str1));
|
||||
close(lock);
|
||||
#endif
|
||||
}
|
||||
|
||||
void unlock_score_file(void)
|
||||
{
|
||||
#ifndef MSDOS
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"omega.hi.lock");
|
||||
unlink(Str1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void showscores(void)
|
||||
{
|
||||
FILE *fd;
|
||||
int i;
|
||||
|
||||
lock_score_file();
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"omega.hi");
|
||||
fd = checkfopen(Str1,"rb");
|
||||
filescanstring(fd,Hiscorer);
|
||||
filescanstring(fd,Hidescrip);
|
||||
fscanf(fd,"%ld %d %d\n",&Hiscore,&Hilevel,&Hibehavior);
|
||||
for(i=1;i<7;i++) {
|
||||
filescanstring(fd,Priest[i]);
|
||||
fscanf(fd,"%d %d\n",&(Priestlevel[i]),&(Priestbehavior[i]));
|
||||
}
|
||||
filescanstring(fd,Shadowlord);
|
||||
fscanf(fd,"%d %d\n",&Shadowlordlevel,&Shadowlordbehavior);
|
||||
filescanstring(fd,Commandant);
|
||||
fscanf(fd,"%d %d\n",&Commandantlevel,&Commandantbehavior);
|
||||
filescanstring(fd,Archmage);
|
||||
fscanf(fd,"%d %d\n",&Archmagelevel,&Archmagebehavior);
|
||||
filescanstring(fd,Prime);
|
||||
fscanf(fd,"%d %d\n",&Primelevel,&Primebehavior);
|
||||
filescanstring(fd,Champion);
|
||||
fscanf(fd,"%d %d\n",&Championlevel,&Championbehavior);
|
||||
filescanstring(fd,Duke);
|
||||
fscanf(fd,"%d %d\n",&Dukelevel,&Dukebehavior);
|
||||
filescanstring(fd,Chaoslord);
|
||||
fscanf(fd,"%d %d %d\n",&Chaoslordlevel,&Chaos,&Chaoslordbehavior);
|
||||
filescanstring(fd,Lawlord);
|
||||
fscanf(fd,"%d %d %d\n",&Lawlordlevel,&Law,&Lawlordbehavior);
|
||||
filescanstring(fd,Justiciar);
|
||||
fscanf(fd,"%d %d\n",&Justiciarlevel,&Justiciarbehavior);
|
||||
filescanstring(fd,Grandmaster);
|
||||
fscanf(fd,"%d %d\n",&Grandmasterlevel,&Grandmasterbehavior);
|
||||
fclose(fd);
|
||||
unlock_score_file();
|
||||
clear();
|
||||
printw("High Score: %ld",Hiscore);
|
||||
printw(", by %s (%s)",Hiscorer,levelname(Hilevel));
|
||||
printw("\n%s\n",Hidescrip);
|
||||
printw("\nLord of Chaos: %s (%s)",Chaoslord,levelname(Chaoslordlevel));
|
||||
printw("\nLord of Law: %s (%s)",Lawlord,levelname(Lawlordlevel));
|
||||
printw("\n\nDuke of Rampart: ");
|
||||
printw("%s (%s)",Duke,levelname(Dukelevel));
|
||||
printw("\nJusticiar: ");
|
||||
printw("%s (%s)",Justiciar,levelname(Justiciarlevel));
|
||||
printw("\nCommandant: ");
|
||||
printw("%s (%s)",Commandant,levelname(Commandantlevel));
|
||||
printw("\nChampion: ");
|
||||
printw("%s (%s)",Champion,levelname(Championlevel));
|
||||
printw("\nArchmage: ");
|
||||
printw("%s (%s)",Archmage,levelname(Archmagelevel));
|
||||
printw("\nPrime Sorceror: ");
|
||||
printw("%s (%s)",Prime,levelname(Primelevel));
|
||||
printw("\nShadowlord: ");
|
||||
printw("%s (%s)",Shadowlord,levelname(Shadowlordlevel));
|
||||
printw("\n\nHigh Priests:");
|
||||
printw("\n of Odin: ");
|
||||
printw("%s (%s)",Priest[ODIN],levelname(Priestlevel[ODIN]));
|
||||
printw("\n of Set: ");
|
||||
printw("%s (%s)",Priest[SET],levelname(Priestlevel[SET]));
|
||||
printw("\n of Athena: ");
|
||||
printw("%s (%s)",Priest[ATHENA],levelname(Priestlevel[ATHENA]));
|
||||
printw("\n of Hecate: ");
|
||||
printw("%s (%s)",Priest[HECATE],levelname(Priestlevel[HECATE]));
|
||||
printw("\n of the Lords of Destiny: ");
|
||||
printw("%s (%s)",Priest[DESTINY],levelname(Priestlevel[DESTINY]));
|
||||
printw("\nThe ArchDruid: ");
|
||||
printw("%s (%s)",Priest[DRUID],levelname(Priestlevel[DRUID]));
|
||||
printw("\nTholian Grandmaster: ");
|
||||
printw("%s (%s)",Grandmaster,levelname(Grandmasterlevel));
|
||||
printw("\n\nHit any key to continue.");
|
||||
refresh();
|
||||
wgetch(stdscr);
|
||||
clear_screen();
|
||||
}
|
||||
|
||||
/* Writes a new high-score file, with the nominated npc as whatever it is */
|
||||
/* in this particular game, but the others as they appear in the file. */
|
||||
void save_hiscore_npc(int npc)
|
||||
{
|
||||
FILE *infile, *outfile;
|
||||
char buffer[80];
|
||||
int i;
|
||||
|
||||
if (gamestatusp(CHEATED))
|
||||
return;
|
||||
lock_score_file();
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"omega.hi");
|
||||
infile = checkfopen(Str1,"rb");
|
||||
strcpy(Str2,Omegalib);
|
||||
#ifdef MSDOS
|
||||
strcat(Str2,"omegahi.new"); /* stupid 8.3 msdos filename limit */
|
||||
#else
|
||||
strcat(Str2,"omega.hi.new");
|
||||
#endif
|
||||
outfile = checkfopen(Str2,"wb");
|
||||
for (i = 0; i < 17; i++) {
|
||||
if (npc == i) {
|
||||
switch (i) {
|
||||
case 0:
|
||||
fprintf(outfile,"%s\n%s\n%ld %d %d\n",Hiscorer, Hidescrip, Hiscore,
|
||||
Hilevel, Hibehavior);
|
||||
break;
|
||||
case 1: case 2: case 3: case 4: case 5: case 6:
|
||||
fprintf(outfile,"%s\n%d %d\n", Priest[i], Priestlevel[i],
|
||||
Priestbehavior[i]);
|
||||
break;
|
||||
case 7:
|
||||
fprintf(outfile,"%s\n%d %d\n", Shadowlord, Shadowlordlevel,
|
||||
Shadowlordbehavior);
|
||||
break;
|
||||
case 8:
|
||||
fprintf(outfile,"%s\n%d %d\n", Commandant, Commandantlevel,
|
||||
Commandantbehavior);
|
||||
break;
|
||||
case 9:
|
||||
fprintf(outfile,"%s\n%d %d\n", Archmage, Archmagelevel,
|
||||
Archmagebehavior);
|
||||
break;
|
||||
case 10:
|
||||
fprintf(outfile,"%s\n%d %d\n", Prime, Primelevel, Primebehavior);
|
||||
break;
|
||||
case 11:
|
||||
fprintf(outfile,"%s\n%d %d\n", Champion, Championlevel,
|
||||
Championbehavior);
|
||||
break;
|
||||
case 12:
|
||||
fprintf(outfile,"%s\n%d %d\n", Duke, Dukelevel, Dukebehavior);
|
||||
break;
|
||||
case 13:
|
||||
fprintf(outfile,"%s\n%d %d %d\n",Chaoslord, Chaoslordlevel, Chaos,
|
||||
Chaoslordbehavior);
|
||||
break;
|
||||
case 14:
|
||||
fprintf(outfile,"%s\n%d %d %d\n", Lawlord, Lawlordlevel, Law,
|
||||
Lawlordbehavior);
|
||||
break;
|
||||
case 15:
|
||||
fprintf(outfile,"%s\n%d %d\n", Justiciar, Justiciarlevel,
|
||||
Justiciarbehavior);
|
||||
break;
|
||||
case 16:
|
||||
fprintf(outfile,"%s\n%d %d\n", Grandmaster, Grandmasterlevel,
|
||||
Grandmasterbehavior);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == 0) {
|
||||
fgets(buffer, 80, infile);
|
||||
if (i != npc)
|
||||
fputs(buffer, outfile);
|
||||
}
|
||||
fgets(buffer, 80, infile);
|
||||
if (i != npc)
|
||||
fputs(buffer, outfile);
|
||||
fgets(buffer, 80, infile);
|
||||
if (i != npc)
|
||||
fputs(buffer, outfile);
|
||||
}
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
unlink(Str1);
|
||||
#if defined(MSDOS) || defined(AMIGA)
|
||||
rename(Str2, Str1);
|
||||
#else
|
||||
link(Str2, Str1);
|
||||
unlink(Str2); /* renames, but sys-V doesn't have rename()... */
|
||||
#endif
|
||||
unlock_score_file();
|
||||
}
|
||||
|
||||
void checkhigh(char *descrip, int behavior)
|
||||
{
|
||||
long points;
|
||||
|
||||
if (FixedPoints > 0) points = FixedPoints;
|
||||
else points = calc_points();
|
||||
if (!gamestatusp(CHEATED)) {
|
||||
if (Hiscore < points) {
|
||||
strcpy(Hiscorer, Player.name);
|
||||
strcpy(Hidescrip, descrip);
|
||||
Hiscore = points;
|
||||
Hilevel = Player.level;
|
||||
Hibehavior = behavior;
|
||||
save_hiscore_npc(0);
|
||||
mprint("Yow! A new high score!");
|
||||
morewait();
|
||||
}
|
||||
if (Player.alignment < Chaos) {
|
||||
strcpy(Chaoslord, Player.name);
|
||||
Chaoslordlevel = Player.level;
|
||||
Chaos = Player.alignment;
|
||||
Chaoslordbehavior = behavior;
|
||||
save_hiscore_npc(13);
|
||||
mprint("Criminy! A new Lord of Chaos!");
|
||||
morewait();
|
||||
}
|
||||
if (Player.alignment > Law) {
|
||||
strcpy(Lawlord, Player.name);
|
||||
Lawlordlevel = Player.level;
|
||||
Law = Player.alignment;
|
||||
Lawlordbehavior = behavior;
|
||||
save_hiscore_npc(14);
|
||||
mprint("Gosh! A new Lord of Law!");
|
||||
morewait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void extendlog(char *descrip, int lifestatus)
|
||||
{
|
||||
FILE *fd;
|
||||
int npcbehavior;
|
||||
|
||||
if ((Player.level > 0) && (! gamestatusp(CHEATED))) {
|
||||
change_to_game_perms();
|
||||
npcbehavior=fixnpc(lifestatus);
|
||||
checkhigh(descrip,npcbehavior);
|
||||
strcpy(Str1,Omegalib);
|
||||
strcat(Str1,"omega.log");
|
||||
fd = checkfopen(Str1,"a");
|
||||
fprintf(fd, " %d %d %d %s\n", lifestatus, Player.level, npcbehavior,
|
||||
Player.name);
|
||||
fclose(fd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifndef MSDOS
|
||||
/* reads a string from a file. If it is a line with more than 80 char's,
|
||||
then remainder of line to \n is consumed */
|
||||
void filescanstring(FILE *fd, char *fstr)
|
||||
{
|
||||
int i= -1;
|
||||
int byte='x';
|
||||
while ((i<80) && (byte != '\n') && (byte != EOF)) {
|
||||
i++;
|
||||
byte=fgetc(fd);
|
||||
fstr[i] = byte;
|
||||
}
|
||||
if (byte != '\n')
|
||||
while((byte!='\n') && (byte != EOF))
|
||||
byte=fgetc(fd);
|
||||
fstr[i]=0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MSDOS
|
||||
int test_file_access(char *file_name, char mode)
|
||||
{
|
||||
FILE *fd;
|
||||
|
||||
if (mode == 'r')
|
||||
fd = fopen(file_name, "r");
|
||||
else
|
||||
fd = fopen(file_name, "r+");
|
||||
if (!fd)
|
||||
return 0;
|
||||
fclose(fd);
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
int test_file_access(char *file_name, char mode)
|
||||
{
|
||||
int fd;
|
||||
|
||||
if (mode == 'r')
|
||||
fd = open(file_name, O_RDONLY, 0);
|
||||
else
|
||||
fd = open(file_name, O_RDWR, 0);
|
||||
if (fd < 0)
|
||||
return 0;
|
||||
close(fd);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
char *required_file_list[] =
|
||||
{
|
||||
"maps.dat", "omega.hi", "omega.log", "motd.txt",
|
||||
"license.txt", NULL
|
||||
};
|
||||
|
||||
char *optional_file_list[] =
|
||||
{
|
||||
"help1.txt", "help2.txt", "help3.txt", "help4.txt", "help5.txt",
|
||||
"help6.txt", "help7.txt", "help8.txt", "help9.txt", "help10.txt",
|
||||
"help11.txt", "help12.txt", "help13.txt", "abyss.txt", "scroll1.txt",
|
||||
"scroll2.txt", "scroll3.txt", "scroll4.txt", NULL
|
||||
};
|
||||
|
||||
/* Checks existence of omega data files */
|
||||
/* Returns 1 if OK, 0 if impossible to run, -1 if possible but not OK */
|
||||
int filecheck(void)
|
||||
{
|
||||
int impossible=FALSE,badbutpossible=FALSE;
|
||||
int endpos;
|
||||
int file;
|
||||
|
||||
strcpy(Str1, Omegalib);
|
||||
endpos = strlen(Str1);
|
||||
for (file = 0; required_file_list[file]; file++)
|
||||
{
|
||||
strcpy(&(Str1[endpos]), required_file_list[file]);
|
||||
if ((strcmp(required_file_list[file], "omega.hi") == 0 ||
|
||||
strcmp(required_file_list[file], "omega.log") == 0) &&
|
||||
test_file_access(Str1, 'w') == 0)
|
||||
{
|
||||
impossible = TRUE;
|
||||
printf("\nError! File not appendable or accessible: %s", Str1);
|
||||
}
|
||||
else if (test_file_access(Str1, 'r') == 0)
|
||||
{
|
||||
impossible = TRUE;
|
||||
printf("\nError! File not accessible: %s", Str1);
|
||||
}
|
||||
}
|
||||
for (file = 0; optional_file_list[file]; file++)
|
||||
{
|
||||
strcpy(&(Str1[endpos]), optional_file_list[file]);
|
||||
if (test_file_access(Str1, 'r') == 0)
|
||||
{
|
||||
badbutpossible = TRUE;
|
||||
printf("\nWarning! File not accessible: %s", Str1);
|
||||
}
|
||||
}
|
||||
if (impossible) {
|
||||
printf("\nFurther execution is impossible. Sorry.");
|
||||
if (strcmp(Omegalib, OMEGALIB))
|
||||
printf("\nEnvironment variable OMEGALIB badly set\n");
|
||||
else {
|
||||
printf("\nOMEGALIB may be badly #defined in defs.h\n");
|
||||
#ifndef FIXED_OMEGALIB
|
||||
printf("\nYou can set the environment variable OMEGALIB to\n");
|
||||
printf("the location of the omegalib directory.\n");
|
||||
#endif
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
else if (badbutpossible) {
|
||||
printf("\nFurther execution may cause anomalous behavior.");
|
||||
printf("\nContinue anyhow? [yn] ");
|
||||
if (getchar()=='y') return(-1);
|
||||
else return(0);
|
||||
}
|
||||
else return(1);
|
||||
}
|
||||
|
||||
/* display a file given a string name of file */
|
||||
void displayfile(char *filestr)
|
||||
{
|
||||
FILE *fd = checkfopen(filestr,"r");
|
||||
int c,d=' ';
|
||||
int x,y;
|
||||
clear();
|
||||
refresh();
|
||||
c = fgetc(fd);
|
||||
while ((c != EOF)&&((char) d != 'q')&&((char) d!=ESCAPE)) {
|
||||
getyx(stdscr,y,x);
|
||||
if (y > ScreenLength) {
|
||||
standout();
|
||||
printw("\n-More-");
|
||||
standend();
|
||||
refresh();
|
||||
d = wgetch(stdscr);
|
||||
clear();
|
||||
}
|
||||
printw("%c",(char) c);
|
||||
c = fgetc(fd);
|
||||
}
|
||||
if (((char) d != 'q')&&((char) d!=ESCAPE)) {
|
||||
standout();
|
||||
printw("\n-Done-");
|
||||
standend();
|
||||
refresh();
|
||||
getch();
|
||||
}
|
||||
clear();
|
||||
refresh();
|
||||
fclose(fd);
|
||||
}
|
||||
|
||||
/* display a file given a string name of file */
|
||||
void displaycryptfile(char *filestr)
|
||||
{
|
||||
FILE *fd = checkfopen(filestr,"rb");
|
||||
int c,d=' ';
|
||||
int x,y;
|
||||
char key = 100;
|
||||
|
||||
clear();
|
||||
refresh();
|
||||
c = fgetc(fd);
|
||||
while ((c != EOF)&&((char) d != 'q')&&((char) d!=ESCAPE)) {
|
||||
getyx(stdscr,y,x);
|
||||
if (y > ScreenLength) {
|
||||
standout();
|
||||
printw("\n-More-");
|
||||
standend();
|
||||
refresh();
|
||||
d = wgetch(stdscr);
|
||||
clear();
|
||||
}
|
||||
key = ((unsigned char) c)^key;
|
||||
printw("%c", key);
|
||||
c = fgetc(fd);
|
||||
}
|
||||
if (((char) d != 'q')&&((char) d!=ESCAPE)) {
|
||||
standout();
|
||||
printw("\n-Done-");
|
||||
standend();
|
||||
refresh();
|
||||
getch();
|
||||
}
|
||||
clear();
|
||||
refresh();
|
||||
fclose(fd);
|
||||
}
|
||||
|
||||
/* copy a file given a string name of file */
|
||||
void copyfile(char *srcstr)
|
||||
{
|
||||
char deststr[80];
|
||||
char buffer[STRING_LEN];
|
||||
FILE *in, *out;
|
||||
|
||||
print1("Enter name of file to create: ");
|
||||
strcpy(deststr,msgscanstring());
|
||||
if (strlen(deststr) == 0) {
|
||||
print2("Aborting...");
|
||||
morewait();
|
||||
return;
|
||||
}
|
||||
in = checkfopen(srcstr, "rb");
|
||||
change_to_user_perms();
|
||||
out = fopen(deststr, "wb");
|
||||
if (!out) {
|
||||
sprintf(buffer, "Unable to write to file %s - Aborting.", deststr);
|
||||
print2(buffer);
|
||||
change_to_game_perms();
|
||||
morewait();
|
||||
fclose(in);
|
||||
return;
|
||||
}
|
||||
print2("Copying file....");
|
||||
while (fgets(buffer, STRING_LEN, in))
|
||||
fputs(buffer, out);
|
||||
fclose(in);
|
||||
fclose(out);
|
||||
change_to_game_perms();
|
||||
print3("Done.");
|
||||
}
|
||||
|
142
fixstr.c
Normal file
142
fixstr.c
Normal file
@ -0,0 +1,142 @@
|
||||
/* This utility program is not part of the sources to Omega.
|
||||
It was written by Nathan Glasser nathan@brokaw.lcs.mit.edu (internet)
|
||||
nathan@mit-eddie.uucp (usenet).
|
||||
As such, it is copyright by Nathan Glasser, 1987,1988,1989.
|
||||
Please don't attempt to sell this program or take credit for it
|
||||
yourself, and please don't remove this notice.
|
||||
*/
|
||||
|
||||
|
||||
/* This program reads in a C source file and replaces all static strings
|
||||
with variable names defined above in the file, which are all declared
|
||||
to be far arrays. You don't need to run this for the unix version. */
|
||||
|
||||
/* This program does not know about comments, or \'s in front of "'s.
|
||||
Thus it can be broken. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <malloc.h>
|
||||
|
||||
#define TMPFILE "fixtmp.c"
|
||||
|
||||
int num_strings;
|
||||
char **string_list;
|
||||
|
||||
#define REALLOC_INCR 500
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FILE *sourcefp,*destfp;
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
printf("Usage: %s <cfile>\n",argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ((sourcefp = fopen(argv[1],"r")) == NULL ||
|
||||
(destfp = fopen(TMPFILE,"w")) == NULL)
|
||||
{
|
||||
perror("Can't open a file (pass1)");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf("Scanning %s...",argv[1]);
|
||||
fflush(stdout);
|
||||
do_scan(sourcefp,destfp);
|
||||
printf("Done\n");
|
||||
|
||||
fclose(sourcefp);
|
||||
fclose(destfp);
|
||||
|
||||
if ((sourcefp = fopen(TMPFILE,"r")) == NULL ||
|
||||
(destfp = fopen(argv[1],"w")) == NULL)
|
||||
{
|
||||
perror("Can't open a file (pass2)");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf("Writing new %s...",argv[1]);
|
||||
fflush(stdout);
|
||||
do_output(sourcefp,destfp);
|
||||
printf("Done\n");
|
||||
remove(TMPFILE);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
char include[] = "#include";
|
||||
#define include_size (sizeof(include) - 1)
|
||||
|
||||
do_scan(FILE *sourcefp, FILE *destfp)
|
||||
{
|
||||
int max_strings;
|
||||
int ch,last_ch = EOF;
|
||||
char temp_string[128],*temp;
|
||||
|
||||
/* Vars for figuring out about #include's */
|
||||
int pos = 0,include_flag = 0,include_tmp = 1;
|
||||
|
||||
string_list = (char **)malloc((max_strings = REALLOC_INCR) *
|
||||
sizeof(char *));
|
||||
|
||||
while ((ch = getc(sourcefp)) != EOF)
|
||||
{
|
||||
switch (ch)
|
||||
{
|
||||
case '\n':
|
||||
putc(ch,destfp);
|
||||
pos = include_flag = 0;
|
||||
include_tmp = 1;
|
||||
break;
|
||||
case '"':
|
||||
if (!include_flag && last_ch != '\'')
|
||||
{
|
||||
/* Start of a string */
|
||||
for (temp = temp_string; (*temp = getc(sourcefp)) != '"';
|
||||
temp++);
|
||||
*temp = '\0';
|
||||
strcpy((string_list[num_strings] =
|
||||
(char *)malloc(temp - temp_string + 1)),temp_string);
|
||||
fprintf(destfp,"_str_%d",num_strings);
|
||||
if (++num_strings == max_strings)
|
||||
string_list = (char **)realloc(string_list,
|
||||
(max_strings += REALLOC_INCR) * sizeof(char *));
|
||||
include_tmp = 0;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (include_tmp)
|
||||
{
|
||||
if ((include_tmp = ch == include[pos++]) &&
|
||||
pos == include_size)
|
||||
{
|
||||
include_flag = 1;
|
||||
include_tmp = 0;
|
||||
}
|
||||
}
|
||||
putc(ch,destfp);
|
||||
break;
|
||||
}
|
||||
last_ch = ch;
|
||||
}
|
||||
}
|
||||
|
||||
do_output(FILE *sourcefp, FILE *destfp)
|
||||
{
|
||||
char buf[1024];
|
||||
int i;
|
||||
|
||||
fprintf(destfp,"/* These static strings have been moved here to */\n");
|
||||
fprintf(destfp,"/* declare them as far and avoid having too much */\n");
|
||||
fprintf(destfp,"/* initialized memory in the CONST segment. */\n\n");
|
||||
|
||||
for (i = 0; i < num_strings; i++)
|
||||
fprintf(destfp,"static char far _str_%d[] = \"%s\";\n",
|
||||
i,string_list[i]);
|
||||
|
||||
putc('\n',destfp);
|
||||
|
||||
while (i = fread(buf,1,sizeof(buf),sourcefp))
|
||||
fwrite(buf,i,1,destfp);
|
||||
}
|
625
gen1.c
Normal file
625
gen1.c
Normal file
@ -0,0 +1,625 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* gen1.c */
|
||||
/* level generator functions */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
/* Deallocate current dungeon */
|
||||
void free_dungeon(void)
|
||||
{
|
||||
#ifndef SAVE_LEVELS
|
||||
plv tlv;
|
||||
|
||||
while (Dungeon != NULL) {
|
||||
tlv = Dungeon;
|
||||
Dungeon = Dungeon->next;
|
||||
free_level(tlv);
|
||||
}
|
||||
#else
|
||||
if (Dungeon != NULL)
|
||||
{
|
||||
sprintf(Str2,"om%d*.lev",Dungeon->environment);
|
||||
kill_levels(Str2);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* erase the level w/o deallocating it*/
|
||||
void clear_level(struct level *dungeon_level)
|
||||
{
|
||||
int i,j;
|
||||
if (dungeon_level != NULL) {
|
||||
dungeon_level->generated = FALSE;
|
||||
dungeon_level->numrooms = 0;
|
||||
dungeon_level->level_length = 0;
|
||||
dungeon_level->level_width = 0;
|
||||
dungeon_level->tunnelled = 0;
|
||||
dungeon_level->depth = 0;
|
||||
dungeon_level->mlist = NULL;
|
||||
dungeon_level->next = NULL;
|
||||
dungeon_level->last_visited = time(NULL);
|
||||
for(i=0;i<MAXWIDTH;i++)
|
||||
for(j=0;j<MAXLENGTH;j++) {
|
||||
dungeon_level->site[i][j].locchar = WALL;
|
||||
dungeon_level->site[i][j].showchar = SPACE;
|
||||
dungeon_level->site[i][j].creature = NULL;
|
||||
dungeon_level->site[i][j].things = NULL;
|
||||
/* PGM: clear_level is called from restore_level, before it knows anything about the current environment, which is where difficulty() gets its information! */
|
||||
dungeon_level->site[i][j].aux = difficulty()*20;
|
||||
dungeon_level->site[i][j].buildaux = 0;
|
||||
dungeon_level->site[i][j].p_locf = L_NO_OP;
|
||||
dungeon_level->site[i][j].lstatus = 0;
|
||||
dungeon_level->site[i][j].roomnumber = RS_WALLSPACE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Looks for level tolevel in current dungeon which is named by
|
||||
Dungeon, which may be NULL. If the level is found, and rewrite_level
|
||||
is FALSE, and the level has already been generated, nothing happens
|
||||
beyond Level being set correctly. Otherwise the level is recreated
|
||||
from scratch */
|
||||
|
||||
void change_level (char fromlevel, char tolevel, char rewrite_level)
|
||||
{
|
||||
struct level * thislevel = NULL;
|
||||
Player.sx = -1;
|
||||
Player.sy = -1; /* sanctuary effect dispelled */
|
||||
|
||||
#ifndef SAVE_LEVELS
|
||||
thislevel = findlevel(Dungeon, tolevel);
|
||||
deepest[Current_Environment] = max(deepest[Current_Environment], tolevel);
|
||||
if (!thislevel)
|
||||
{
|
||||
thislevel = checkmalloc(sizeof(levtype));
|
||||
clear_level(thislevel);
|
||||
Level = thislevel;
|
||||
Level->next = Dungeon;
|
||||
Dungeon = Level;
|
||||
}
|
||||
#else
|
||||
thislevel = msdos_changelevel(Level, Current_Environment, tolevel);
|
||||
deepest[Current_Environment] = max(deepest[Current_Environment], tolevel);
|
||||
if (!thislevel)
|
||||
{
|
||||
thislevel = &TheLevel;
|
||||
clear_level(thislevel);
|
||||
Level = thislevel;
|
||||
Level->next = Dungeon;
|
||||
Dungeon = Level;
|
||||
}
|
||||
#endif
|
||||
|
||||
Level = thislevel;
|
||||
if ((!Level->generated) || rewrite_level)
|
||||
{
|
||||
initrand(Current_Environment, tolevel);
|
||||
Level->environment = Current_Environment;
|
||||
Level->depth = tolevel;
|
||||
Level->generated = TRUE;
|
||||
|
||||
switch (Current_Environment)
|
||||
{
|
||||
case E_CAVES:
|
||||
Level->level_width = CAVES_WIDTH;
|
||||
Level->level_length = CAVES_LENGTH;
|
||||
if ((0 == random_range(4)) && (tolevel < MaxDungeonLevels))
|
||||
room_level();
|
||||
else
|
||||
cavern_level();
|
||||
break;
|
||||
|
||||
case E_SEWERS:
|
||||
Level->level_width = SEWERS_WIDTH;
|
||||
Level->level_length = SEWERS_LENGTH;
|
||||
if ((0 == random_range(4)) && (tolevel < MaxDungeonLevels))
|
||||
room_level();
|
||||
else
|
||||
sewer_level();
|
||||
break;
|
||||
|
||||
case E_CASTLE:
|
||||
Level->level_width = CASTLE_WIDTH;
|
||||
Level->level_length = CASTLE_LENGTH;
|
||||
room_level();
|
||||
break;
|
||||
|
||||
case E_PALACE: /* PGM TODO */
|
||||
Level->level_width = PALACE_WIDTH;
|
||||
Level->level_length = PALACE_LENGTH;
|
||||
room_level();
|
||||
break;
|
||||
|
||||
case E_ASTRAL:
|
||||
Level->level_width = ASTRAL_WIDTH;
|
||||
Level->level_length = ASTRAL_LENGTH;
|
||||
maze_level();
|
||||
break;
|
||||
|
||||
case E_VOLCANO:
|
||||
Level->level_width = VOLCANO_WIDTH;
|
||||
Level->level_length = VOLCANO_LENGTH;
|
||||
switch (random_range(3))
|
||||
{
|
||||
case 0: cavern_level(); break;
|
||||
case 1: room_level(); break;
|
||||
case 2: maze_level(); break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
print3("This dungeon not implemented!");
|
||||
assert(FALSE);
|
||||
break;
|
||||
}
|
||||
|
||||
install_traps();
|
||||
install_specials();
|
||||
make_stairs(fromlevel);
|
||||
make_stairs(fromlevel);
|
||||
initrand(E_RESTORE, 0);
|
||||
populate_level(Current_Environment);
|
||||
stock_level();
|
||||
}
|
||||
|
||||
find_stairs(fromlevel, tolevel);
|
||||
ScreenOffset = Player.y - (ScreenLength/2);
|
||||
show_screen();
|
||||
screencheck(Player.x,Player.y);
|
||||
drawvision(Player.x,Player.y);
|
||||
|
||||
/* synchronize with player on level change */
|
||||
Player.click = (Tick+1)%60;
|
||||
roomcheck();
|
||||
}
|
||||
|
||||
#ifndef SAVE_LEVELS
|
||||
/* tries to find the level of depth levelnum in dungeon; if can't find
|
||||
it returns NULL */
|
||||
plv findlevel(struct level *dungeon, char levelnum)
|
||||
{
|
||||
if (dungeon == NULL) return(NULL);
|
||||
else {
|
||||
while((dungeon->next != NULL) && (dungeon->depth != levelnum))
|
||||
dungeon = dungeon->next;
|
||||
if (dungeon->depth == levelnum) {
|
||||
dungeon->last_visited = time(NULL);
|
||||
return(dungeon);
|
||||
}
|
||||
else return(NULL);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* keep going in one orthogonal direction or another until we hit our */
|
||||
/* destination */
|
||||
|
||||
void straggle_corridor(int fx, int fy, int tx, int ty, Symbol loc, char rsi)
|
||||
{
|
||||
int dx,dy;
|
||||
while ((fx != tx) || (fy != ty)) {
|
||||
dx = tx - fx;
|
||||
dy = ty - fy;
|
||||
if (random_range(abs(dx)+abs(dy)) < abs(dx))
|
||||
corridor_crawl(&fx,&fy,sign(dx),0,random_range(abs(dx))+1,loc,rsi);
|
||||
else corridor_crawl(&fx,&fy,0,sign(dy),random_range(abs(dy))+1,loc,rsi);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void makedoor(int x, int y)
|
||||
{
|
||||
if (random_range(20) <= Level->depth/10) {
|
||||
Level->site[x][y].locchar = FLOOR;
|
||||
lset(x,y,SECRET);
|
||||
}
|
||||
else if (random_range(20)<=Level->depth/2) {
|
||||
Level->site[x][y].locchar = CLOSED_DOOR;
|
||||
if (random_range(20) <= Level->depth/10)
|
||||
lset(x,y,SECRET);
|
||||
if (random_range(40) <= Level->depth)
|
||||
Level->site[x][y].aux = LOCKED;
|
||||
else Level->site[x][y].aux = UNLOCKED;
|
||||
}
|
||||
else {
|
||||
Level->site[x][y].locchar = OPEN_DOOR;
|
||||
Level->site[x][y].aux = UNLOCKED;
|
||||
}
|
||||
if (! loc_statusp(x,y,SECRET)) {
|
||||
lset(x,y+1,STOPS);
|
||||
lset(x+1,y,STOPS);
|
||||
lset(x-1,y,STOPS);
|
||||
lset(x,y-1,STOPS);
|
||||
lset(x,y,STOPS);
|
||||
}
|
||||
Level->site[x][y].p_locf = L_NO_OP;
|
||||
/* prevents water corridors from being instant death in sewers */
|
||||
}
|
||||
|
||||
|
||||
void corridor_crawl(int *fx, int *fy, int sx, int sy, int n,
|
||||
Symbol loc, char rsi)
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<n;i++) {
|
||||
*fx += sx;
|
||||
*fy += sy;
|
||||
if ((*fx < Level->level_width) &&
|
||||
(*fx > -1) &&
|
||||
(*fy > -1) &&
|
||||
(*fy < Level->level_length)) {
|
||||
Level->site[*fx][*fy].locchar = loc;
|
||||
if (Level->site[*fx][*fy].roomnumber == RS_WALLSPACE)
|
||||
Level->site[*fx][*fy].roomnumber = rsi;
|
||||
if (loc==WATER)
|
||||
Level->site[*fx][*fy].p_locf = L_WATER;
|
||||
else if (loc==FLOOR)
|
||||
Level->site[*fx][*fy].p_locf = L_NO_OP;
|
||||
else if (loc==RUBBLE)
|
||||
Level->site[*fx][*fy].p_locf = L_RUBBLE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char *roomname(int index)
|
||||
{
|
||||
switch(index) {
|
||||
case RS_ZORCH:strcpy(Str4,"A place zorched by powerful magic.");break;
|
||||
case RS_COURT:strcpy(Str4,"The Court of the ArchMage."); break;
|
||||
case RS_CIRCLE:strcpy(Str4,"The Astral Demesne of the Circle of Sorcerors");
|
||||
break;
|
||||
case RS_MAGIC_ISLE: strcpy(Str4,"An island positively reeking of magic");
|
||||
break;
|
||||
case RS_STARPEAK: strcpy(Str4,"Near the oddly glowing peak of a mountain");
|
||||
break;
|
||||
case RS_VOLCANO: strcpy(Str4,"Deep within the bowels of the earth"); break;
|
||||
case RS_HIGHASTRAL: strcpy(Str4,"The High Astral Plane"); break;
|
||||
case RS_EARTHPLANE: strcpy(Str4,"The Plane of Earth"); break;
|
||||
case RS_WATERPLANE: strcpy(Str4,"The Plane of Water"); break;
|
||||
case RS_FIREPLANE: strcpy(Str4,"The Plane of Fire"); break;
|
||||
case RS_AIRPLANE: strcpy(Str4,"The Plane of Air"); break;
|
||||
case RS_KITCHEN: strcpy(Str4,"A kitchen"); break;
|
||||
case RS_BATHROOM: strcpy(Str4,"A bathroom"); break;
|
||||
case RS_BEDROOM: strcpy(Str4,"A bedroom"); break;
|
||||
case RS_DININGROOM: strcpy(Str4,"A dining room"); break;
|
||||
case RS_SECRETPASSAGE: strcpy(Str4,"A secret passage"); break;
|
||||
case RS_CLOSET: strcpy(Str4,"A stuffy closet"); break;
|
||||
case RS_ARENA: strcpy(Str4,"The Rampart Arena"); break;
|
||||
case RS_DROWNED_SEWER: strcpy(Str4,"A water-filled sewer node"); break;
|
||||
case RS_DRAINED_SEWER: strcpy(Str4,"An unused sewer node"); break;
|
||||
case RS_SEWER_DUCT: strcpy(Str4,"A winding sewer duct"); break;
|
||||
case RS_DESTINY: strcpy(Str4,"The Halls of Fate"); break;
|
||||
case RS_DRUID: strcpy(Str4,"The Great Henge"); break;
|
||||
case RS_HECATE: strcpy(Str4,"The Church of the Far Side"); break;
|
||||
case RS_SET: strcpy(Str4,"The Temple of the Black Hand"); break;
|
||||
case RS_ATHENA: strcpy(Str4,"The Parthenon"); break;
|
||||
case RS_ODIN: strcpy(Str4,"The Shrine of the Noose"); break;
|
||||
case RS_ADEPT: strcpy(Str4,"The Adept's Challenge"); break;
|
||||
case RS_WYRM: strcpy(Str4,"The Sunken Cavern of the Great Wyrm."); break;
|
||||
case RS_OCEAN: strcpy(Str4,"The Underground Ocean."); break;
|
||||
case RS_PONDS: strcpy(Str4,"A series of subterranean pools and streams."); break;
|
||||
case RS_DRAGONLORD: strcpy(Str4,"The Lair of the DragonLord."); break;
|
||||
case RS_GOBLINKING: strcpy(Str4,"The Caves of the Goblins."); break;
|
||||
case RS_CAVERN: strcpy(Str4,"A vast natural cavern."); break;
|
||||
case RS_CORRIDOR: strcpy(Str4,"A dimly lit corridor."); break;
|
||||
case RS_WALLSPACE: strcpy(Str4,"A niche hollowed out of the wall."); break;
|
||||
/* following are above ROOMBASE */
|
||||
case RS_GARDEROBE: strcpy(Str4,"An abandoned garderobe."); break;
|
||||
case RS_CELL: strcpy(Str4,"A dungeon cell."); break;
|
||||
case RS_TILED: strcpy(Str4,"A tiled chamber."); break;
|
||||
case RS_CRYSTAL_CAVE: strcpy(Str4,"A crystal cavern."); break;
|
||||
case RS_BEDROOM2: strcpy(Str4,"Someone's bedroom."); break;
|
||||
case RS_STOREROOM: strcpy(Str4,"An old storeroom."); break;
|
||||
case RS_CHARRED: strcpy(Str4,"A room with charred walls."); break;
|
||||
case RS_MARBLE_HALL: strcpy(Str4,"A marble hall."); break;
|
||||
case RS_EERIE_CAVE: strcpy(Str4,"An eerie cave."); break;
|
||||
case RS_TREASURE: strcpy(Str4,"A ransacked treasure-chamber."); break;
|
||||
case RS_SMOKEY: strcpy(Str4,"A smoke-filled room."); break;
|
||||
case RS_APARTMENT: strcpy(Str4,"A well-appointed apartment."); break;
|
||||
case RS_ANTECHAMBER: strcpy(Str4,"An antechamber."); break;
|
||||
case RS_HAREM: strcpy(Str4,"An unoccupied harem."); break;
|
||||
case RS_MULTIPURPOSE: strcpy(Str4,"A multi-purpose room."); break;
|
||||
case RS_STALACTITES: strcpy(Str4,"A room filled with stalactites."); break;
|
||||
case RS_GREENHOUSE: strcpy(Str4,"An underground greenhouse."); break;
|
||||
case RS_WATERCLOSET: strcpy(Str4,"A water closet."); break;
|
||||
case RS_STUDY: strcpy(Str4,"A study."); break;
|
||||
case RS_LIVING_ROOM: strcpy(Str4,"A living room."); break;
|
||||
case RS_DEN: strcpy(Str4,"A comfortable den."); break;
|
||||
case RS_ABATOIR: strcpy(Str4,"An abatoir."); break;
|
||||
case RS_BOUDOIR: strcpy(Str4,"A boudoir.");break;
|
||||
case RS_STAR_CHAMBER: strcpy(Str4,"A star chamber.");break;
|
||||
case RS_MANMADE_CAVE: strcpy(Str4,"A manmade cavern."); break;
|
||||
case RS_SEWER_CONTROL: strcpy(Str4,"A sewer control room");break;
|
||||
case RS_SHRINE: strcpy(Str4,"A shrine to High Magic"); break;
|
||||
case RS_MAGIC_LAB: strcpy(Str4,"A magic laboratory"); break;
|
||||
case RS_PENTAGRAM: strcpy(Str4,"A room with inscribed pentagram");break;
|
||||
case RS_OMEGA_DAIS: strcpy(Str4,"A chamber with a blue crystal omega dais");
|
||||
break;
|
||||
/* WDT: removed period from description. */
|
||||
default: strcpy(Str4,"A room of mystery and allure"); break;
|
||||
}
|
||||
return(Str4);
|
||||
}
|
||||
|
||||
|
||||
/* puts the player on the first set of stairs from the apt level */
|
||||
/* if can't find them, just drops player anywhere.... */
|
||||
void find_stairs(char fromlevel, char tolevel)
|
||||
{
|
||||
int i,j,found=FALSE;
|
||||
Symbol sitechar;
|
||||
if (fromlevel > tolevel) sitechar = STAIRS_DOWN; else sitechar = STAIRS_UP;
|
||||
for(i=0;i<Level->level_width;i++)
|
||||
for(j=0;j<Level->level_length;j++)
|
||||
if ((Level->site[i][j].locchar == sitechar) && (! found)) {
|
||||
found = TRUE;
|
||||
Player.x = i;
|
||||
Player.y = j;
|
||||
break;
|
||||
}
|
||||
if (! found) {
|
||||
findspace(&Player.x,&Player.y,-1);
|
||||
if (Level->environment != E_ASTRAL) {
|
||||
Level->site[Player.x][Player.y].locchar = sitechar;
|
||||
lset(Player.x, Player.y, CHANGED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void install_traps(void)
|
||||
{
|
||||
int i,j;
|
||||
for(i=0;i<Level->level_width;i++)
|
||||
for(j=0;j<Level->level_length;j++)
|
||||
if ((Level->site[i][j].locchar == FLOOR) &&
|
||||
(Level->site[i][j].p_locf == L_NO_OP) &&
|
||||
random_range(500) <= ((int)(Level->depth/6)))
|
||||
Level->site[i][j].p_locf = TRAP_BASE+random_range(NUMTRAPS);
|
||||
}
|
||||
|
||||
|
||||
/* x, y, is top left corner, l is length of side, rsi is room string index */
|
||||
/* baux is so all rooms will have a key field. */
|
||||
void build_square_room(int x, int y, int l, char rsi, int baux)
|
||||
{
|
||||
int i,j;
|
||||
|
||||
for(i=x;i<=x+l;i++)
|
||||
for(j=y;j<=y+l;j++){
|
||||
Level->site[i][j].roomnumber = rsi;
|
||||
Level->site[i][j].buildaux = baux;
|
||||
}
|
||||
for(i=x+1;i<x+l;i++)
|
||||
for(j=y+1;j<y+l;j++) {
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_NO_OP;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void build_room(int x, int y, int l, char rsi, int baux)
|
||||
{
|
||||
build_square_room(x,y,l,rsi,baux);
|
||||
}
|
||||
|
||||
void cavern_level(void)
|
||||
{
|
||||
int i,fx,fy,tx,ty,t,l,e;
|
||||
char rsi;
|
||||
|
||||
Level->numrooms = 1;
|
||||
|
||||
if ((Current_Dungeon == E_CAVES) && (Level->depth == CAVELEVELS))
|
||||
rsi = RS_GOBLINKING;
|
||||
else rsi = RS_CAVERN;
|
||||
t = random_range((Level->level_length)/2);
|
||||
l = random_range((Level->level_width)/2);
|
||||
e = random_range((Level->level_width)/8)+(Level->level_width)/8;
|
||||
build_square_room(t,l,e,rsi,0);
|
||||
|
||||
for (i=0;i<16;i++) {
|
||||
findspace(&tx,&ty,-1);
|
||||
fx = random_range((Level->level_width)-2)+1;
|
||||
fy = random_range((Level->level_length)-2)+1;
|
||||
straggle_corridor(fx,fy,tx,ty,FLOOR,RS_CORRIDOR);
|
||||
}
|
||||
while (random_range(3)==1) {
|
||||
findspace(&tx,&ty,-1);
|
||||
fx = random_range((Level->level_width)-2)+1;
|
||||
fy = random_range((Level->level_length)-2)+1;
|
||||
straggle_corridor(fx,fy,tx,ty,WATER,RS_PONDS);
|
||||
}
|
||||
if (Current_Dungeon == E_CAVES) {
|
||||
if ((Level->depth == CAVELEVELS) && (! gamestatusp(COMPLETED_CAVES))) {
|
||||
findspace(&tx,&ty,-1);
|
||||
Level->mlist = ((pml) checkmalloc(sizeof(mltype)));
|
||||
Level->mlist->next = NULL;
|
||||
Level->mlist->m =
|
||||
Level->site[tx][ty].creature =
|
||||
((pmt) make_creature(GOBLIN_KING)); /* goblin king */
|
||||
Level->mlist->m->x = tx;
|
||||
Level->mlist->m->y = ty;
|
||||
}
|
||||
}
|
||||
else if (Current_Environment == E_VOLCANO) {
|
||||
if (Level->depth == VOLCANOLEVELS) {
|
||||
findspace(&tx,&ty,-1);
|
||||
Level->mlist = ((pml) checkmalloc(sizeof(mltype)));
|
||||
Level->mlist->next = NULL;
|
||||
Level->mlist->m =
|
||||
Level->site[tx][ty].creature =
|
||||
((pmt) make_creature(DEMON_EMP)); /* The demon emp */
|
||||
Level->mlist->m->x = tx;
|
||||
Level->mlist->m->y = ty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sewer_level(void)
|
||||
{
|
||||
int i,tx,ty,t,l,e;
|
||||
char rsi;
|
||||
Symbol lchar;
|
||||
|
||||
Level->numrooms = random_range(3)+3;
|
||||
rsi = RS_DRAINED_SEWER;
|
||||
for (i=0;i<Level->numrooms;i++) {
|
||||
do {
|
||||
t = random_range((Level->level_length)-10)+1;
|
||||
l = random_range((Level->level_width)-10)+1;
|
||||
e = 4;
|
||||
} while ((Level->site[l][t].roomnumber == rsi) ||
|
||||
(Level->site[l+e][t].roomnumber == rsi) ||
|
||||
(Level->site[l][t+e].roomnumber == rsi) ||
|
||||
(Level->site[l+e][t+e].roomnumber == rsi));
|
||||
if (random_range(5)) {
|
||||
lchar = FLOOR;
|
||||
rsi = RS_DRAINED_SEWER;
|
||||
}
|
||||
else {
|
||||
lchar = WATER;
|
||||
rsi = RS_DROWNED_SEWER;
|
||||
}
|
||||
build_room(l,t,e,rsi,i);
|
||||
sewer_corridor(l,t,-1,-1,lchar);
|
||||
sewer_corridor(l+e,t,1,-1,lchar);
|
||||
sewer_corridor(l,t+e,-1,1,lchar);
|
||||
sewer_corridor(l+e,t+e,1,1,lchar);
|
||||
}
|
||||
if (Current_Dungeon == E_SEWERS) {
|
||||
if ((Level->depth == SEWERLEVELS) && (! gamestatusp(COMPLETED_SEWERS))) {
|
||||
findspace(&tx,&ty,-1);
|
||||
Level->mlist = ((pml) checkmalloc(sizeof(mltype)));
|
||||
Level->mlist->next = NULL;
|
||||
Level->mlist->m =
|
||||
Level->site[tx][ty].creature =
|
||||
((pmt) make_creature(GREAT_WYRM)); /* The Great Wyrm */
|
||||
Level->mlist->m->x = tx;
|
||||
Level->mlist->m->y = ty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sewer_corridor(int x, int y, int dx, int dy, Symbol locchar)
|
||||
{
|
||||
int continuing = TRUE;
|
||||
makedoor(x,y);
|
||||
x+=dx;
|
||||
y+=dy;
|
||||
while(continuing) {
|
||||
Level->site[x][y].locchar = locchar;
|
||||
if (locchar == WATER)
|
||||
Level->site[x][y].p_locf = L_WATER;
|
||||
else Level->site[x][y].p_locf = L_NO_OP;
|
||||
Level->site[x][y].roomnumber = RS_SEWER_DUCT;
|
||||
x+=dx;
|
||||
y+=dy;
|
||||
if (locchar == WATER)
|
||||
continuing = (inbounds(x,y) &&
|
||||
((Level->site[x][y].locchar == WALL) ||
|
||||
(Level->site[x][y].locchar == WATER)));
|
||||
else
|
||||
continuing = (inbounds(x,y) &&
|
||||
((Level->site[x][y].roomnumber == RS_WALLSPACE) ||
|
||||
(Level->site[x][y].roomnumber == RS_SEWER_DUCT)));
|
||||
}
|
||||
if (inbounds(x,y))
|
||||
makedoor(x,y);
|
||||
}
|
||||
|
||||
|
||||
void install_specials(void)
|
||||
{
|
||||
int i,j,x,y;
|
||||
|
||||
for(x=0;x<Level->level_width;x++)
|
||||
for(y=0;y<Level->level_length;y++)
|
||||
if ((Level->site[x][y].locchar == FLOOR) &&
|
||||
(Level->site[x][y].p_locf == L_NO_OP) &&
|
||||
(random_range(300) < difficulty())) {
|
||||
i = random_range(100);
|
||||
if (i < 10) {
|
||||
Level->site[x][y].locchar = ALTAR;
|
||||
Level->site[x][y].p_locf = L_ALTAR;
|
||||
Level->site[x][y].aux = random_range(10);
|
||||
}
|
||||
else if (i < 20) {
|
||||
Level->site[x][y].locchar = WATER;
|
||||
Level->site[x][y].p_locf = L_MAGIC_POOL;
|
||||
}
|
||||
else if (i < 35) {
|
||||
Level->site[x][y].locchar = RUBBLE;
|
||||
Level->site[x][y].p_locf = L_RUBBLE;
|
||||
}
|
||||
else if (i < 40) {
|
||||
Level->site[x][y].locchar = LAVA;
|
||||
Level->site[x][y].p_locf = L_LAVA;
|
||||
}
|
||||
else if (i < 45) {
|
||||
Level->site[x][y].locchar = FIRE;
|
||||
Level->site[x][y].p_locf = L_FIRE;
|
||||
}
|
||||
else if ((i < 50) && (Current_Environment != E_ASTRAL)) {
|
||||
Level->site[x][y].locchar = LIFT;
|
||||
Level->site[x][y].p_locf = L_LIFT;
|
||||
}
|
||||
else if ((i < 55) && (Current_Environment != E_VOLCANO)) {
|
||||
Level->site[x][y].locchar = HEDGE;
|
||||
Level->site[x][y].p_locf = L_HEDGE;
|
||||
}
|
||||
else if (i < 57) {
|
||||
Level->site[x][y].locchar = HEDGE;
|
||||
Level->site[x][y].p_locf = L_TRIFID;
|
||||
}
|
||||
else if (i< 70) {
|
||||
Level->site[x][y].locchar = STATUE;
|
||||
if (random_range(100) < difficulty())
|
||||
for (j=0;j<8;j++) {
|
||||
if (Level->site[x+Dirs[0][j]][y+Dirs[1][j]].p_locf != L_NO_OP)
|
||||
Level->site[x+Dirs[0][j]][y+Dirs[1][j]].locchar = FLOOR;
|
||||
Level->site[x+Dirs[0][j]][y+Dirs[1][j]].p_locf =
|
||||
L_STATUE_WAKE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (Current_Environment == E_VOLCANO) {
|
||||
Level->site[x][y].locchar = LAVA;
|
||||
Level->site[x][y].p_locf = L_LAVA;
|
||||
}
|
||||
else if (Current_Environment == E_ASTRAL) {
|
||||
if (Level->depth == 1) {
|
||||
Level->site[x][y].locchar = RUBBLE;
|
||||
Level->site[x][y].p_locf = L_RUBBLE;
|
||||
}
|
||||
else if (Level->depth == 2) {
|
||||
Level->site[x][y].locchar = FIRE;
|
||||
Level->site[x][y].p_locf = L_FIRE;
|
||||
}
|
||||
else if (Level->depth == 3) {
|
||||
Level->site[x][y].locchar = WATER;
|
||||
Level->site[x][y].p_locf = L_WATER;
|
||||
}
|
||||
else if (Level->depth == 4) {
|
||||
Level->site[x][y].locchar = ABYSS;
|
||||
Level->site[x][y].p_locf = L_ABYSS;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Level->site[x][y].locchar = WATER;
|
||||
Level->site[x][y].p_locf = L_WATER;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
495
gen2.c
Normal file
495
gen2.c
Normal file
@ -0,0 +1,495 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* gen2.c */
|
||||
/* level generator functions */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
|
||||
/* For each level, there should be one stairway going up and one down.
|
||||
fromlevel determines whether the player is placed on the up or the down
|
||||
staircase. The aux value is currently unused elsewhere, but is set
|
||||
to the destination level. */
|
||||
|
||||
void make_stairs(int fromlevel)
|
||||
{
|
||||
int i,j;
|
||||
/* no stairway out of astral */
|
||||
if (Current_Environment != E_ASTRAL) {
|
||||
findspace(&i,&j,-1);
|
||||
Level->site[i][j].locchar = STAIRS_UP;
|
||||
Level->site[i][j].aux = Level->depth-1;
|
||||
lset(i,j,STOPS);
|
||||
if (fromlevel >= 0 && fromlevel < Level->depth) {
|
||||
Player.x = i;
|
||||
Player.y = j;
|
||||
}
|
||||
}
|
||||
if (Level->depth < MaxDungeonLevels) {
|
||||
findspace(&i,&j,-1);
|
||||
Level->site[i][j].locchar = STAIRS_DOWN;
|
||||
Level->site[i][j].aux = Level->depth+1;
|
||||
lset(i,j,STOPS);
|
||||
if (fromlevel > Level->depth) {
|
||||
Player.x = i;
|
||||
Player.y = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* tactical map generating functions */
|
||||
|
||||
|
||||
void make_country_screen(Symbol terrain)
|
||||
{
|
||||
int i,j;
|
||||
TempLevel = Level;
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
clear_level(Level);
|
||||
Level->environment = E_TACTICAL_MAP;
|
||||
Level->generated = TRUE;
|
||||
|
||||
Level->level_length = TACTICAL_LENGTH;
|
||||
Level->level_width = TACTICAL_WIDTH;
|
||||
|
||||
switch(terrain) {
|
||||
case FOREST: make_forest(); break;
|
||||
case JUNGLE: make_jungle(); break;
|
||||
case SWAMP: make_swamp(); break;
|
||||
case RIVER: make_river(); break;
|
||||
case MOUNTAINS: case PASS: make_mountains(); break;
|
||||
case ROAD: make_road(); break;
|
||||
default: make_plains(); break;
|
||||
}
|
||||
if (nighttime()) {
|
||||
print3("Night's gloom shrouds your sight.");
|
||||
for(i=0;i<Level->level_width;i++)
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
Level->site[i][j].showchar = SPACE;
|
||||
Level->site[i][j].lstatus = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void make_general_map(char *terrain)
|
||||
{
|
||||
int i, j;
|
||||
int size = strlen(terrain);
|
||||
char curr;
|
||||
|
||||
for (i=0;i<Level->level_width;i++)
|
||||
for (j=0;j<Level->level_length;j++) {
|
||||
if ((i == 0 && j == 0) || !random_range(5))
|
||||
curr = terrain[random_range(size)];
|
||||
else if (j == 0 || (random_range(2) && i > 0))
|
||||
curr = Level->site[i - 1][j].locchar&0xff;
|
||||
else
|
||||
curr = Level->site[i][j - 1].locchar&0xff;
|
||||
switch (curr) {
|
||||
case (FLOOR&0xff):
|
||||
Level->site[i][j].locchar = Level->site[i][j].showchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_NO_OP;
|
||||
break;
|
||||
case (HEDGE&0xff):
|
||||
Level->site[i][j].locchar = Level->site[i][j].showchar = HEDGE;
|
||||
Level->site[i][j].p_locf = L_HEDGE;
|
||||
break;
|
||||
case (WATER&0xff):
|
||||
Level->site[i][j].locchar = Level->site[i][j].showchar = WATER;
|
||||
Level->site[i][j].p_locf = L_WATER;
|
||||
break;
|
||||
case (RUBBLE&0xff):
|
||||
Level->site[i][j].locchar = Level->site[i][j].showchar = RUBBLE;
|
||||
Level->site[i][j].p_locf = L_RUBBLE;
|
||||
break;
|
||||
}
|
||||
Level->site[i][j].lstatus = SEEN+LIT;
|
||||
Level->site[i][j].roomnumber = RS_COUNTRYSIDE;
|
||||
if ((i == 0) || (j == 0) || (i == (Level->level_width)-1) || (j == (Level->level_length)-1))
|
||||
Level->site[i][j].p_locf = L_TACTICAL_EXIT;
|
||||
}
|
||||
}
|
||||
|
||||
void make_plains(void)
|
||||
{
|
||||
make_general_map(".");
|
||||
}
|
||||
|
||||
void make_road(void)
|
||||
{
|
||||
int x, y;
|
||||
make_general_map("\"\"~4....");
|
||||
for (x = (Level->level_width)/2 - 3; x <= (Level->level_width)/2 + 3; x++)
|
||||
for (y = 0; y < Level->level_length; y++) {
|
||||
Level->site[x][y].locchar = Level->site[x][y].showchar = FLOOR;
|
||||
if (y != 0 && y != ((Level->level_length) - 1))
|
||||
Level->site[x][y].p_locf = L_NO_OP;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void make_forest(void)
|
||||
{
|
||||
make_general_map("\".");
|
||||
straggle_corridor(0,random_range(Level->level_length),Level->level_width,random_range(Level->level_length),
|
||||
WATER,RS_COUNTRYSIDE);
|
||||
}
|
||||
|
||||
|
||||
void make_jungle(void)
|
||||
{
|
||||
make_general_map("\"\".");
|
||||
}
|
||||
|
||||
|
||||
void make_river(void)
|
||||
{
|
||||
int i,y,y1;
|
||||
make_general_map("\".......");
|
||||
y = random_range(Level->level_length);
|
||||
y1 = random_range(Level->level_length);
|
||||
straggle_corridor(0,y,Level->level_width,y1,WATER,RS_COUNTRYSIDE);
|
||||
for(i=0;i<7;i++) {
|
||||
if (y > (Level->level_length)/2) y--;
|
||||
else y++;
|
||||
if (y1 > (Level->level_length)/2) y1--;
|
||||
else y1++;
|
||||
straggle_corridor(0,y,Level->level_width,y1,WATER,RS_COUNTRYSIDE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void make_mountains(void)
|
||||
{
|
||||
int i,x,y,x1,y1;
|
||||
make_general_map("4...");
|
||||
x = 0;
|
||||
y = random_range(Level->level_length);
|
||||
x1 = Level->level_width;
|
||||
y1 = random_range(Level->level_length);
|
||||
straggle_corridor(x,y,x1,y1,WATER,RS_COUNTRYSIDE);
|
||||
for(i=0;i<7;i++) {
|
||||
x = random_range(Level->level_width);
|
||||
x1 = random_range(Level->level_width);
|
||||
y = 0;
|
||||
y1 = Level->level_length;
|
||||
straggle_corridor(x,y,x1,y1,WATER,RS_COUNTRYSIDE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void make_swamp(void)
|
||||
{
|
||||
make_general_map("~~\".");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* builds a room. Then, for each successive room, sends off at least one
|
||||
corridor which is guaranteed to connect up to another room, thus guaranteeing
|
||||
fully connected level. */
|
||||
|
||||
void room_level(void)
|
||||
{
|
||||
int i,fx,fy,tx,ty,t,l,e;
|
||||
char rsi;
|
||||
|
||||
Level->numrooms = random_range(8)+9;
|
||||
|
||||
do {
|
||||
t = random_range((Level->level_length)-10)+1;
|
||||
l = random_range((Level->level_width)-10)+1;
|
||||
e = 4+random_range(5);
|
||||
} while ((Level->site[l][t].roomnumber != RS_WALLSPACE) ||
|
||||
(Level->site[l+e][t].roomnumber != RS_WALLSPACE) ||
|
||||
(Level->site[l][t+e].roomnumber != RS_WALLSPACE) ||
|
||||
(Level->site[l+e][t+e].roomnumber != RS_WALLSPACE));
|
||||
if (Current_Dungeon == E_SEWERS) {
|
||||
if (random_range(2)) rsi = RS_SEWER_CONTROL;
|
||||
else rsi = ROOMBASE+random_range(NUMROOMNAMES);
|
||||
}
|
||||
else rsi = ROOMBASE+random_range(NUMROOMNAMES);
|
||||
build_room(l,t,e,rsi,1);
|
||||
|
||||
|
||||
for (i=2;i<=Level->numrooms;i++) {
|
||||
do {
|
||||
t = random_range((Level->level_length)-10)+1;
|
||||
l = random_range((Level->level_width)-10)+1;
|
||||
e = 4+random_range(5);
|
||||
} while ((Level->site[l][t].roomnumber != RS_WALLSPACE) ||
|
||||
(Level->site[l+e][t].roomnumber != RS_WALLSPACE) ||
|
||||
(Level->site[l][t+e].roomnumber != RS_WALLSPACE) ||
|
||||
(Level->site[l+e][t+e].roomnumber != RS_WALLSPACE));
|
||||
if (Current_Dungeon == E_SEWERS) {
|
||||
if (random_range(2)) rsi = RS_SEWER_CONTROL;
|
||||
else rsi = ROOMBASE+random_range(NUMROOMNAMES);
|
||||
}
|
||||
else rsi = ROOMBASE+random_range(NUMROOMNAMES);
|
||||
build_room(l,t,e,rsi,i);
|
||||
|
||||
|
||||
/* corridor which is guaranteed to connect */
|
||||
findspace(&tx,&ty,i);
|
||||
|
||||
/* figure out where to start corridor from */
|
||||
if ((ty <= t) && (tx <= l+e)) {
|
||||
fx = l+1+random_range(e-1);
|
||||
fy = t;
|
||||
}
|
||||
else if ((tx >= l+e) && (ty <= t+e)) {
|
||||
fx = l+e;
|
||||
fy = t+1+random_range(e-1);
|
||||
}
|
||||
else if ((ty >= t+e) && (tx >= l)) {
|
||||
fx = l+1+random_range(e-1);
|
||||
fy = t+e;
|
||||
}
|
||||
else {
|
||||
fx = l;
|
||||
fy = t+1+random_range(e-1);
|
||||
}
|
||||
|
||||
room_corridor(fx,fy,tx,ty,i);
|
||||
|
||||
|
||||
/* corridor which may not go anywhere */
|
||||
if (random_range(2)) {
|
||||
findspace(&tx,&ty,i);
|
||||
if ((ty <= t) && (tx <= l+e)) {
|
||||
fx = l+1+random_range(e-1);
|
||||
fy = t;
|
||||
}
|
||||
else if ((tx >= l+e) && (ty <= t+e)) {
|
||||
fx = l+e;
|
||||
fy = t+1+random_range(e-1);
|
||||
}
|
||||
else if ((ty >= t+e) && (tx >= l)) {
|
||||
fx = l+1+random_range(e-1);
|
||||
fy = t+e;
|
||||
}
|
||||
else {
|
||||
fx = l;
|
||||
fy = t+1+random_range(e-1);
|
||||
}
|
||||
room_corridor(fx,fy,tx,ty,i);
|
||||
}
|
||||
}
|
||||
|
||||
if (Current_Dungeon == E_SEWERS) {
|
||||
if (Level->depth == SEWERLEVELS) {
|
||||
findspace(&tx,&ty,-1);
|
||||
Level->mlist = ((pml) checkmalloc(sizeof(mltype)));
|
||||
Level->mlist->next = NULL;
|
||||
Level->mlist->m =
|
||||
Level->site[tx][ty].creature =
|
||||
((pmt) make_creature(GREAT_WYRM)); /* The Great Wyrm */
|
||||
Level->mlist->m->x = tx;
|
||||
Level->mlist->m->y = ty;
|
||||
}
|
||||
}
|
||||
|
||||
if (Current_Dungeon == E_PALACE) { /* PGM TODO */
|
||||
if (Level->depth == PALACELEVELS) {
|
||||
findspace(&tx,&ty,-1);
|
||||
Level->mlist = ((pml) checkmalloc(sizeof(mltype)));
|
||||
Level->mlist->next = NULL;
|
||||
Level->mlist->m =
|
||||
Level->site[tx][ty].creature =
|
||||
((pmt) make_creature(MAHARAJA)); /* The Maharaja */
|
||||
Level->mlist->m->x = tx;
|
||||
Level->mlist->m->y = ty;
|
||||
}
|
||||
}
|
||||
|
||||
else if (Current_Environment == E_CASTLE) {
|
||||
if (Level->depth == CASTLELEVELS) {
|
||||
findspace(&tx,&ty,-1);
|
||||
Level->site[tx][ty].locchar = STAIRS_DOWN;
|
||||
Level->site[tx][ty].p_locf = L_ENTER_COURT;
|
||||
}
|
||||
}
|
||||
else if (Current_Environment == E_VOLCANO) {
|
||||
if (Level->depth == VOLCANOLEVELS && !gamestatusp(COMPLETED_VOLCANO)) {
|
||||
findspace(&tx,&ty,-1);
|
||||
Level->mlist = ((pml) checkmalloc(sizeof(mltype)));
|
||||
Level->mlist->next = NULL;
|
||||
Level->mlist->m =
|
||||
Level->site[tx][ty].creature =
|
||||
((pmt) make_creature(DEMON_EMP)); /* The demon emp */
|
||||
Level->mlist->m->x = tx;
|
||||
Level->mlist->m->y = ty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* goes from f to t unless it hits a site which is not a wall and doesn't
|
||||
have buildaux field == baux */
|
||||
void room_corridor(int fx, int fy, int tx, int ty, int baux)
|
||||
{
|
||||
int dx,dy,continuing = TRUE;
|
||||
|
||||
dx = sign(tx-fx);
|
||||
dy = sign(ty-fy);
|
||||
|
||||
makedoor(fx,fy);
|
||||
|
||||
fx+=dx;
|
||||
fy+=dy;
|
||||
|
||||
while(continuing) {
|
||||
Level->site[fx][fy].locchar = FLOOR;
|
||||
Level->site[fx][fy].roomnumber = RS_CORRIDOR;
|
||||
Level->site[fx][fy].buildaux = baux;
|
||||
dx = sign(tx-fx);
|
||||
dy = sign(ty-fy);
|
||||
if ((dx != 0) && (dy != 0)) {
|
||||
if (random_range(2)) dx = 0;
|
||||
else if (random_range(2)) dy = 0;
|
||||
}
|
||||
fx+=dx;
|
||||
fy+=dy;
|
||||
continuing = (((fx != tx) || (fy != ty)) &&
|
||||
((Level->site[fx][fy].buildaux == 0) ||
|
||||
(Level->site[fx][fy].buildaux == baux)));
|
||||
}
|
||||
makedoor(fx,fy);
|
||||
}
|
||||
|
||||
void maze_level (void)
|
||||
{
|
||||
int mid;
|
||||
int y_idx;
|
||||
int x_idx;
|
||||
int tx, ty;
|
||||
|
||||
char rsi = RS_VOLCANO;
|
||||
|
||||
if (E_ASTRAL == Current_Environment)
|
||||
{
|
||||
switch (Level->depth)
|
||||
{
|
||||
case 1: rsi = RS_EARTHPLANE; break;
|
||||
case 2: rsi = RS_AIRPLANE; break;
|
||||
case 3: rsi = RS_WATERPLANE; break;
|
||||
case 4: rsi = RS_FIREPLANE; break;
|
||||
case 5: rsi = RS_HIGHASTRAL; break;
|
||||
}
|
||||
|
||||
maze_corridor(1 + random_range(Level->level_width - 1),
|
||||
1 + random_range(Level->level_length - 1),
|
||||
1 + random_range(Level->level_width - 1),
|
||||
1 + random_range(Level->level_length - 1),
|
||||
rsi,
|
||||
0);
|
||||
|
||||
if (E_ASTRAL == Current_Dungeon)
|
||||
{
|
||||
for (x_idx = 0; x_idx < Level->level_width; ++x_idx)
|
||||
{
|
||||
for (y_idx = 0; y_idx < Level->level_length; ++y_idx)
|
||||
{
|
||||
if (WALL == Level->site[x_idx][y_idx].locchar)
|
||||
{
|
||||
switch (Level->depth)
|
||||
{
|
||||
case 1:
|
||||
Level->site[x_idx][y_idx].aux = 500;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Level->site[x_idx][y_idx].locchar = WHIRLWIND;
|
||||
Level->site[x_idx][y_idx].p_locf = L_WHIRLWIND;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
Level->site[x_idx][y_idx].locchar = WATER;
|
||||
Level->site[x_idx][y_idx].p_locf = L_WATER;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
Level->site[x_idx][y_idx].locchar = FIRE;
|
||||
Level->site[x_idx][y_idx].p_locf = L_FIRE;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
Level->site[x_idx][y_idx].locchar = ABYSS;
|
||||
Level->site[x_idx][y_idx].p_locf = L_ABYSS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (Level->depth)
|
||||
{
|
||||
case 1: mid = LORD_EARTH; break; /* Elemental Lord of Earth */
|
||||
case 2: mid = LORD_AIR; break; /* Elemental Lord of Air */
|
||||
case 3: mid = LORD_WATER; break; /* Elemental Lord of Water */
|
||||
case 4: mid = LORD_FIRE; break; /* Elemental Lord of Fire */
|
||||
case 5: mid = ELEM_MASTER; break; /* Elemental Master */
|
||||
default: mid = ELEM_MASTER; assert(FALSE); /* bomb if this happens */
|
||||
}
|
||||
|
||||
if (5 == Level->depth)
|
||||
{
|
||||
findspace(&tx, &ty, -1);
|
||||
Level->site[tx][ty].p_locf = L_ENTER_CIRCLE;
|
||||
Level->site[tx][ty].locchar = STAIRS_DOWN;
|
||||
}
|
||||
|
||||
if (!gamestatusp(COMPLETED_ASTRAL))
|
||||
{
|
||||
findspace(&tx, &ty, -1);
|
||||
Level->mlist = checkmalloc(sizeof(mltype));
|
||||
Level->mlist->next = NULL;
|
||||
Level->mlist->m = make_creature(mid);
|
||||
Level->mlist->m->x = tx;
|
||||
Level->mlist->m->y = ty;
|
||||
Level->site[tx][ty].creature = Level->mlist->m;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (E_VOLCANO == Current_Environment)
|
||||
{
|
||||
if (VOLCANOLEVELS == Level->depth && !gamestatusp(COMPLETED_VOLCANO))
|
||||
{
|
||||
findspace(&tx, &ty, -1);
|
||||
Level->mlist = checkmalloc(sizeof(mltype));
|
||||
Level->mlist->next = NULL;
|
||||
Level->mlist->m = make_creature(DEMON_EMP);
|
||||
Level->mlist->m->x = tx;
|
||||
Level->mlist->m->y = ty;
|
||||
Level->site[tx][ty].creature = Level->mlist->m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* keep drawing corridors recursively for 2^5 endpoints */
|
||||
void maze_corridor(int fx, int fy, int tx, int ty, char rsi, char num)
|
||||
{
|
||||
if (num < 6) {
|
||||
straggle_corridor(fx,fy,tx,ty,FLOOR,rsi);
|
||||
maze_corridor(tx,ty,
|
||||
random_range((Level->level_width)-1)+1,
|
||||
random_range((Level->level_length)-1)+1,
|
||||
rsi,num+1);
|
||||
|
||||
}
|
||||
}
|
365
genclr.c
Normal file
365
genclr.c
Normal file
@ -0,0 +1,365 @@
|
||||
/*
|
||||
* Generate C code to initialize and support Omega colors on UNIX.
|
||||
*
|
||||
* Usage:
|
||||
* cpp -DOMEGA_CLRGEN *.[ch] | genclr <c-file> <h-file>
|
||||
* where <c-file> should be compiled and linked with the Omega binary and
|
||||
* <h-file> should be #included in all Omega sources that reference colors.
|
||||
*
|
||||
* Curses color micro-tutorial:
|
||||
* The curses library requires color attributes to be specified as
|
||||
* COLOR_PAIR(<n>) macro calls, where init_pair(<n>, <fore-color>,
|
||||
* <back-color>) has previously been called. <n> must fall in the range
|
||||
* 1..COLOR_PAIRS, where COLOR_PAIRS is a run-time read-only curses variable
|
||||
* typically set to something like 64.
|
||||
*
|
||||
* <c-file> defines function clrgen_init(), which contains the minimal number
|
||||
* of curses init_pair() calls to support the color usages detected by this
|
||||
* program on standard input.
|
||||
*
|
||||
* <h-file> defines preprocessor variables that cause each detected color
|
||||
* usage to expand to an appropriate curses COLOR_PAIR() call.
|
||||
*
|
||||
* This approach to UNIX color support is perhaps overkill, but does have
|
||||
* advantages over these alternative approaches:
|
||||
*
|
||||
* - hard-coded init_pair() calls and color definitions, which would
|
||||
* require manual checking and possibly editing for color reference added
|
||||
* or removed anywhere in the sources;
|
||||
*
|
||||
* - replacement of color references with function calls that lazily call
|
||||
* init_pair() as necessary, which would consume more run-time resources
|
||||
* and behave unpredictably if the number of pairs exceeded COLOR_PAIRS;
|
||||
*
|
||||
* - run-time analysis of color pairs required by e.g. monster list, which
|
||||
* would be a bit more complex to code, consume more run-time resources,
|
||||
* and require significant code changes to move all color references into
|
||||
* static storage.
|
||||
*/
|
||||
|
||||
#ifndef OMEGA_CLRGEN /* this file confuses its own scanner */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
* Special tag cpp prepends to color symbols
|
||||
*/
|
||||
#define PREFIX "OMEGA_CLRGEN"
|
||||
|
||||
/*
|
||||
* Return whether a character could be part of a C identifier
|
||||
*/
|
||||
#define ISCID(c) \
|
||||
(((c) >= 'A' && (c) <= 'Z') || \
|
||||
((c) >= 'a' && (c) <= 'z') || \
|
||||
((c) >= '0' && (c) <= '9') || \
|
||||
(c) == '_')
|
||||
|
||||
/*
|
||||
* Colors specified in cpp output on standard input
|
||||
*/
|
||||
typedef struct {
|
||||
char *ofg, *obg; /* Omega fore/background color */
|
||||
char *cfg, *cbg; /* curses fore/background color */
|
||||
unsigned int boldfg, boldbg; /* fore/background bold flag */
|
||||
unsigned int idx; /* COLOR_PAIR() argument */
|
||||
} ClrPair;
|
||||
|
||||
/*
|
||||
* Omega versus curses color names
|
||||
*/
|
||||
typedef struct {
|
||||
char *omega;
|
||||
char *curses;
|
||||
unsigned int bold;
|
||||
} ClrEquiv;
|
||||
|
||||
#ifdef USE_OPCURSES
|
||||
static ClrEquiv clr_equiv[17] = {
|
||||
{ "BLACK", "BLACK", 0 },
|
||||
{ "BLUE", "BLUE", 0 },
|
||||
{ "GREEN", "GREEN", 0 },
|
||||
{ "CYAN", "CYAN", 0 },
|
||||
{ "RED", "RED", 0 },
|
||||
{ "PURPLE", "MAGENTA", 0 },
|
||||
{ "BROWN", "YELLOW", 0 },
|
||||
{ "WHITE", "WHITE", 0 },
|
||||
{ "GREY", "WHITE", 1 },
|
||||
{ "LIGHT_BLUE", "BLUE", 1 },
|
||||
{ "LIGHT_GREEN", "GREEN", 1 },
|
||||
{ "LIGHT_CYAN", "CYAN", 1 },
|
||||
{ "LIGHT_RED", "RED", 1 },
|
||||
{ "LIGHT_PURPLE", "MAGENTA", 1 },
|
||||
{ "YELLOW", "YELLOW", 1 },
|
||||
{ "BRIGHT_WHITE", "WHITE", 1 },
|
||||
{ NULL, NULL, 0 } };
|
||||
#else
|
||||
static ClrEquiv clr_equiv[17] = {
|
||||
{ "BLACK", "BLACK", 0 },
|
||||
{ "BLUE", "BLUE", 0 },
|
||||
{ "GREEN", "GREEN", 0 },
|
||||
{ "CYAN", "CYAN", 0 },
|
||||
{ "RED", "RED", 0 },
|
||||
{ "PURPLE", "MAGENTA", 0 },
|
||||
{ "BROWN", "YELLOW", 0 },
|
||||
{ "WHITE", "WHITE", 0 },
|
||||
{ "GREY", "BLACK", 1 },
|
||||
{ "LIGHT_BLUE", "BLUE", 1 },
|
||||
{ "LIGHT_GREEN", "GREEN", 1 },
|
||||
{ "LIGHT_CYAN", "CYAN", 1 },
|
||||
{ "LIGHT_RED", "RED", 1 },
|
||||
{ "LIGHT_PURPLE", "MAGENTA", 1 },
|
||||
{ "YELLOW", "YELLOW", 1 },
|
||||
{ "BRIGHT_WHITE", "WHITE", 1 },
|
||||
{ NULL, NULL, 0 } };
|
||||
#endif
|
||||
|
||||
static char *clr_lookup (char *omega, char **curses, unsigned int *bold)
|
||||
{
|
||||
/*
|
||||
* Point CURSES to the curses color corresponding to Omega color OMEGA,
|
||||
* set *BOLD to whether the bold attribute should accompany that curses
|
||||
* color, and return a copy of OMEGA. If OMEGA is unrecognized, return
|
||||
* null.
|
||||
*/
|
||||
ClrEquiv *e = clr_equiv;
|
||||
for (; e->omega; e++)
|
||||
if (!strcmp (e->omega, omega)) {
|
||||
*curses = e->curses;
|
||||
*bold = e->bold;
|
||||
return e->omega;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char *clr_scan (char *p, char **curses, unsigned int *bold, char **end)
|
||||
{
|
||||
/*
|
||||
* Return a copy of the Omega color nearest the start of writable buffer
|
||||
* P, point CURSES to the corresponding curses color, and point END just
|
||||
* past the color's location in P.
|
||||
*
|
||||
* If the Omega color is unrecognized, issue an error and exit.
|
||||
*/
|
||||
char c, *start, *omega;
|
||||
for (; (c = *p); p++) {
|
||||
if (!ISCID (c))
|
||||
continue;
|
||||
for (start = p++; (c = *p); p++) {
|
||||
if (ISCID (c))
|
||||
continue;
|
||||
*p = '\0';
|
||||
if (!(omega = clr_lookup (start, curses, bold))) {
|
||||
fprintf (stderr, "unrecognized Omega color \"%s\"\n", start);
|
||||
exit (1);
|
||||
}
|
||||
*p = c;
|
||||
*end = p;
|
||||
return omega;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int opaircmp (const void *pair1, const void *pair2)
|
||||
{
|
||||
/*
|
||||
* qsort comparison function: return less than, equal to, or greater than
|
||||
* 0 according to whether PAIR1 precedes, coincides with, or follows PAIR2
|
||||
* in a sorted list of Omega color pairs.
|
||||
*/
|
||||
ClrPair *p1 = (ClrPair *)pair1, *p2 = (ClrPair *)pair2;
|
||||
int diff = strcmp (p1->ofg, p2->ofg);
|
||||
if (diff)
|
||||
return diff;
|
||||
return strcmp (p1->obg, p2->obg);
|
||||
}
|
||||
|
||||
static int cpaircmp (const void *pair1, const void *pair2)
|
||||
{
|
||||
/*
|
||||
* qsort comparison function: return less than, equal to, or greater than
|
||||
* 0 according to whether PAIR1 precedes, coincides with, or follows PAIR2
|
||||
* in a sorted list of curses color pairs.
|
||||
*/
|
||||
ClrPair *p1 = *(ClrPair **)pair1, *p2 = *(ClrPair **)pair2;
|
||||
int diff = strcmp (p1->cfg, p2->cfg);
|
||||
if (diff)
|
||||
return diff;
|
||||
return strcmp (p1->cbg, p2->cbg);
|
||||
}
|
||||
|
||||
static FILE *emitopen (char *file, char **argv)
|
||||
{
|
||||
/*
|
||||
* Write to the top of FILE a suitable header based on ARGV, and return a
|
||||
* writable file pointer on FILE. Exit on error.
|
||||
*/
|
||||
FILE *fp = fopen (file, "w");
|
||||
if (!fp) {
|
||||
fprintf (stderr, "error opening %s", file);
|
||||
perror ("");
|
||||
exit (1);
|
||||
}
|
||||
fprintf (fp, "\
|
||||
/*\n\
|
||||
* Do not edit this file. It was automatically generated by running:\n\
|
||||
* %s %s %s\n\
|
||||
*/\n\
|
||||
\n\
|
||||
",
|
||||
argv[0], argv[1], argv[2]);
|
||||
return fp;
|
||||
}
|
||||
|
||||
static void emitclose (FILE *fp, char *file)
|
||||
{
|
||||
/*
|
||||
* Close FP attached to FILE, exiting on error.
|
||||
*/
|
||||
if (fclose (fp) == 0)
|
||||
return;
|
||||
fprintf (stderr, "error closing %s", file);
|
||||
perror ("");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
char line[1024], *p;
|
||||
unsigned int i, j, nopairs = 0, ncpairs, opairslen = 80, one;
|
||||
ClrPair *pair;
|
||||
ClrPair *opairs; /* Omega color pairs */
|
||||
ClrPair **cpairs; /* curses color pairs */
|
||||
char *cfile, *hfile;
|
||||
FILE *fp;
|
||||
|
||||
if (argc != 3) {
|
||||
fprintf (stderr, "usage: %s <c-file> <h-file>\n", argv[0]);
|
||||
exit (1);
|
||||
}
|
||||
cfile = argv[1];
|
||||
hfile = argv[2];
|
||||
|
||||
/*
|
||||
* Accumulate Omega color pairs from standard input into pairs.
|
||||
*/
|
||||
opairs = (ClrPair *)malloc (opairslen * sizeof (ClrPair));
|
||||
while (fgets (line, 1024, stdin)) {
|
||||
for (p = line; (p = strstr (p, PREFIX));) {
|
||||
p += sizeof (PREFIX) - 1;
|
||||
if (nopairs == opairslen) {
|
||||
opairslen *= 2;
|
||||
opairs = (ClrPair *)realloc (opairs, opairslen *
|
||||
sizeof (ClrPair));
|
||||
}
|
||||
pair = opairs + nopairs++;
|
||||
one = *p++ == '1';
|
||||
pair->ofg = clr_scan (p, &pair->cfg, &pair->boldfg, &p);
|
||||
pair->obg = one ?
|
||||
clr_lookup ("BLACK", &pair->cbg, &pair->boldbg) :
|
||||
clr_scan (p, &pair->cbg, &pair->boldbg, &p);
|
||||
if (pair->boldbg)
|
||||
fprintf (stderr, "warning: \"%s\": bg bold unimplemented\n",
|
||||
pair->obg);
|
||||
}
|
||||
}
|
||||
if (!nopairs) {
|
||||
fputs ("no colors detected in standard input\n", stderr);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove duplicate Omega color pairs.
|
||||
*/
|
||||
qsort (opairs, nopairs, sizeof (ClrPair), opaircmp);
|
||||
for (i = 0, j = 1; j < nopairs; j++) {
|
||||
if (opaircmp (opairs + i, opairs + j))
|
||||
opairs[++i] = opairs[j];
|
||||
}
|
||||
nopairs = i + 1;
|
||||
|
||||
/*
|
||||
* Construct a list of unique curses color pairs, and instantiate all
|
||||
* ClrPair.idx fields.
|
||||
*/
|
||||
cpairs = (ClrPair **)malloc (nopairs * sizeof (ClrPair *));
|
||||
for (i = 0; i < nopairs; i++)
|
||||
cpairs[i] = opairs + i;
|
||||
qsort (cpairs, nopairs, sizeof (ClrPair *), cpaircmp);
|
||||
cpairs[0]->idx = 1;
|
||||
|
||||
for (i = 0, j = 1; j < nopairs; j++) {
|
||||
if (cpaircmp (cpairs + i, cpairs + j))
|
||||
cpairs[++i] = cpairs[j];
|
||||
cpairs[j]->idx = i + 1;
|
||||
}
|
||||
ncpairs = i + 1;
|
||||
|
||||
/*
|
||||
* Emit .c file.
|
||||
*/
|
||||
fp = emitopen (cfile, argv);
|
||||
|
||||
#ifdef USE_OPCURSES
|
||||
fprintf (fp, "\
|
||||
#include \"../opcurses/curses.h\"\n");
|
||||
#else
|
||||
fprintf (fp, "\
|
||||
#include <curses.h>\n");
|
||||
#endif
|
||||
|
||||
fprintf (fp, "\
|
||||
#include <stdio.h>\n\
|
||||
#include <stdlib.h>\n\
|
||||
\
|
||||
#include \"%s\"\n\
|
||||
\
|
||||
void clrgen_init (void)\n\
|
||||
""{\n\
|
||||
if (!has_colors()) {\n\
|
||||
fprintf(stderr,\"Omega currently requires ncurses or op-curses color support.\\n\");\n\
|
||||
return;\n\
|
||||
} else\n\
|
||||
if (%d > COLOR_PAIRS - 1) {\n\
|
||||
endwin();\n\
|
||||
fprintf (stderr,\"Too few available color pairs (found %%d, need %d)!\\n\", COLOR_PAIRS);\n\
|
||||
exit (1);\n\
|
||||
}\n\
|
||||
",
|
||||
hfile, ncpairs, ncpairs);
|
||||
for (i = 0; i < ncpairs; i++)
|
||||
fprintf (fp, "\
|
||||
init_pair (%d, COLOR_%s, COLOR_%s);\n\
|
||||
",
|
||||
cpairs[i]->idx, cpairs[i]->cfg, cpairs[i]->cbg);
|
||||
fputs ("\
|
||||
""}\n\
|
||||
",
|
||||
fp);
|
||||
emitclose (fp, cfile);
|
||||
|
||||
/*
|
||||
* Emit .h file.
|
||||
*/
|
||||
fp = emitopen (hfile, argv);
|
||||
for (i = 0; i < nopairs; i++) {
|
||||
pair = opairs + i;
|
||||
fprintf (fp, "#define CLR_%s_%s\t%sCOLOR_PAIR(%d)%s\n",
|
||||
pair->ofg, pair->obg,
|
||||
strlen (pair->ofg) + strlen (pair->obg) > 10 ? "" : "\t",
|
||||
pair->idx, pair->boldfg ? "|A_BOLD" : "");
|
||||
}
|
||||
fputs ("\
|
||||
\n\
|
||||
extern void clrgen_init (void);\n\
|
||||
",
|
||||
fp);
|
||||
emitclose (fp, hfile);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* !OMEGA_CLRGEN */
|
298
glob.h
Normal file
298
glob.h
Normal file
@ -0,0 +1,298 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
|
||||
/* this file contains extern declarations of global variables used
|
||||
throughout the program */
|
||||
/* it includes the other header files, so every program module
|
||||
(except o.c) can just include this file. */
|
||||
|
||||
/* glob.h */
|
||||
|
||||
#ifndef INCLUDED_GLOB_H
|
||||
#define INCLUDED_GLOB_H
|
||||
|
||||
#include "defs.h"
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
#ifdef DEBUG /* Added by DG, naturally. */
|
||||
/* Debug log file */
|
||||
extern FILE *DG_debug_log;
|
||||
extern int DG_debug_flag;
|
||||
#endif
|
||||
|
||||
extern char SaveFileName[80];
|
||||
/* stash save-file away; for emergency saves, default for planned saves */
|
||||
|
||||
/* This string holds the path to the library files */
|
||||
extern char *Omegalib;
|
||||
|
||||
/* one of each monster */
|
||||
extern struct monster Monsters[NUMMONSTERS];
|
||||
|
||||
/* one of each spell */
|
||||
extern struct spell Spells[NUMSPELLS+1];
|
||||
|
||||
/* one of each item */
|
||||
extern struct object Objects[TOTALITEMS];
|
||||
|
||||
/* locations of city sites [0] - found, [1] - x, [2] - y */
|
||||
extern int CitySiteList[NUMCITYSITES][3];
|
||||
|
||||
extern struct player Player;
|
||||
/* the player */
|
||||
|
||||
/*extern int LENGTH;*/
|
||||
/* level y dimension */
|
||||
|
||||
/*extern int WIDTH;*/
|
||||
/* level x dimension */
|
||||
|
||||
extern long GameStatus;
|
||||
/* Game Status bit vector */
|
||||
|
||||
extern int ScreenLength;
|
||||
extern int ScreenWidth;
|
||||
/* How large is level window */
|
||||
|
||||
extern struct terrain Country[COUNTRY_WIDTH][COUNTRY_LENGTH];
|
||||
/* The countryside */
|
||||
|
||||
#ifdef MSDOS_SUPPORTED_ANTIQUE
|
||||
extern struct level TheLevel;
|
||||
#endif
|
||||
|
||||
extern struct level *City;
|
||||
/* The city of Rampart */
|
||||
|
||||
extern struct level *TempLevel;
|
||||
/* Place holder */
|
||||
|
||||
extern struct level *Dungeon;
|
||||
/* Pointer to current Dungeon */
|
||||
|
||||
extern struct level *Level;
|
||||
/* Pointer to current Level */
|
||||
|
||||
extern int Current_Dungeon;
|
||||
/* What is Dungeon now (an E_ constant) */
|
||||
|
||||
extern int Villagenum;
|
||||
/* Current Village number */
|
||||
|
||||
extern int ScreenOffset;
|
||||
/* Offset of displayed screen to level */
|
||||
|
||||
extern int ScreenXOffset;
|
||||
/* Offset of displayed screen to level */
|
||||
|
||||
extern int MaxDungeonLevels;
|
||||
/*Deepest level allowed in dungeon */
|
||||
|
||||
extern int Current_Environment;
|
||||
/* Which environment are we in (an E_ constant) */
|
||||
|
||||
extern int Last_Environment;
|
||||
/* Which environment were we in last (an E_ constant) */
|
||||
|
||||
extern int Dirs[2][9];
|
||||
/* 9 xy directions */
|
||||
|
||||
extern char Cmd;
|
||||
/* last player command */
|
||||
|
||||
extern int Command_Duration;
|
||||
/* how long does current command take */
|
||||
|
||||
extern struct monster *Arena_Monster;
|
||||
/* Opponent in arena */
|
||||
|
||||
extern int Arena_Opponent;
|
||||
/* case label of opponent in l_arena()*/
|
||||
|
||||
extern int Arena_Victory;
|
||||
/* did player win in arena? */
|
||||
|
||||
extern int Imprisonment;
|
||||
/* amount of time spent in jail */
|
||||
|
||||
extern int Precipitation;
|
||||
/* Hours of rain, snow, etc */
|
||||
|
||||
extern int Phase;
|
||||
/* Phase of the moon */
|
||||
|
||||
extern int Lunarity;
|
||||
/* How player is affected by moon */
|
||||
|
||||
extern int Date;
|
||||
/* day of the year */
|
||||
|
||||
extern int Pawndate;
|
||||
/* Pawn Shop item generation date */
|
||||
|
||||
extern pob Pawnitems[PAWNITEMS];
|
||||
/* items in pawn shop */
|
||||
|
||||
extern int ViewHour;
|
||||
/* crystal ball use marker */
|
||||
|
||||
extern int ViewDay;
|
||||
/* crystal ball use marker */
|
||||
|
||||
extern int ZapHour;
|
||||
/* staff of enchantment use marker */
|
||||
|
||||
extern int ZapDay;
|
||||
/* staff of enchantment use marker */
|
||||
|
||||
extern int HelmHour;
|
||||
/* helm of teleportation use marker*/
|
||||
|
||||
extern int HelmDay;
|
||||
/* helm of teleportation use marker*/
|
||||
|
||||
extern int SymbolUseHour;
|
||||
/* holy symbol use marker */
|
||||
|
||||
extern int SymbolUseDay;
|
||||
/* holy symbol use marker */
|
||||
|
||||
extern int Constriction;
|
||||
/* Dragonlord Attack State */
|
||||
|
||||
extern int Blessing;
|
||||
/* Altar Blessing State */
|
||||
|
||||
extern int LastDay;
|
||||
/* DPW date of dole */
|
||||
|
||||
extern int RitualHour;
|
||||
/* last use of ritual magic */
|
||||
|
||||
extern int RitualRoom;
|
||||
/* last room use of ritual magic */
|
||||
|
||||
extern int Lawstone;
|
||||
/* magic stone counter */
|
||||
|
||||
extern int Chaostone;
|
||||
/* magic stone counter */
|
||||
|
||||
extern int Mindstone;
|
||||
/* magic stone counter */
|
||||
|
||||
extern int Searchnum;
|
||||
/* number of times to search on 's' */
|
||||
|
||||
extern int Verbosity;
|
||||
/* verbosity level */
|
||||
|
||||
extern int Behavior;
|
||||
/* NPC behavior, if entered */
|
||||
|
||||
extern char Seed;
|
||||
/* random seed */
|
||||
|
||||
extern long Time;
|
||||
/* turn number */
|
||||
|
||||
extern int Tick;
|
||||
/* current second in minute; action coordinator */
|
||||
|
||||
extern char Stringbuffer[STRING_BUFFER_SIZE][80];
|
||||
/* the last printed strings */
|
||||
|
||||
extern long Gymcredit;
|
||||
/* credit at rampart gym */
|
||||
|
||||
extern int Spellsleft;
|
||||
/* research allowance at college */
|
||||
|
||||
extern int SalaryAmount;
|
||||
/* legion salary */
|
||||
|
||||
extern int SalaryAccount;
|
||||
/* account number to which legion salary is paid */
|
||||
|
||||
extern int Studiesleft;
|
||||
/* study allowance at Monastery */
|
||||
|
||||
extern int StarGemUse;
|
||||
/* last date of star gem use */
|
||||
|
||||
extern int HiMagicUse;
|
||||
/* last date of high magic use */
|
||||
|
||||
extern int HiMagic;
|
||||
/* current level for l_throne */
|
||||
|
||||
#ifdef NEW_BANK
|
||||
extern bank_account *bank;
|
||||
/* ptr to a list of bank accounts */
|
||||
#else
|
||||
extern long Balance;
|
||||
/* bank account */
|
||||
#endif
|
||||
|
||||
extern long FixedPoints;
|
||||
/* points are frozen after adepthood*/
|
||||
|
||||
extern int LastCountryLocX;
|
||||
/* previous position in countryside */
|
||||
|
||||
extern int LastCountryLocY;
|
||||
/* previous position in countryside */
|
||||
|
||||
extern int LastTownLocX;
|
||||
/* previous position in village or city */
|
||||
|
||||
extern int LastTownLocY;
|
||||
/* previous position in village or city */
|
||||
|
||||
extern char Password[64];
|
||||
/* autoteller password */
|
||||
|
||||
extern pol Condoitems;
|
||||
/* items in condo */
|
||||
|
||||
extern pol Bagitems;
|
||||
/* items in bag of holding artifact */
|
||||
|
||||
extern char Str1[STRING_LEN],Str2[STRING_LEN],Str3[STRING_LEN],Str4[STRING_LEN];
|
||||
/* Some string space, random uses */
|
||||
|
||||
|
||||
|
||||
/* high score names, levels, behavior */
|
||||
|
||||
extern int Shadowlordbehavior,Archmagebehavior,Primebehavior,Justiciarbehavior;
|
||||
extern int Commandantbehavior,Chaoslordbehavior,Lawlordbehavior;
|
||||
extern int Championbehavior,Priestbehavior[7],Hibehavior,Dukebehavior;
|
||||
extern int Grandmasterbehavior;
|
||||
extern char Shadowlord[80],Archmage[80],Prime[80],Commandant[80],Duke[80];
|
||||
extern char Champion[80],Priest[7][80],Hiscorer[80],Hidescrip[80];
|
||||
extern char Chaoslord[80],Lawlord[80],Justiciar[80],Grandmaster[80];
|
||||
extern int Shadowlordlevel,Archmagelevel,Primelevel,Commandantlevel,Dukelevel;
|
||||
extern int Championlevel,Priestlevel[7],Hilevel,Justiciarlevel;
|
||||
extern int Grandmasterlevel;
|
||||
extern long Hiscore;
|
||||
extern int Chaoslordlevel,Lawlordlevel,Chaos,Law;
|
||||
|
||||
/* New globals which used to be statics */
|
||||
extern int twiddle;
|
||||
extern int saved;
|
||||
extern int onewithchaos;
|
||||
extern int club_hinthour;
|
||||
extern int winnings;
|
||||
extern int tavern_hinthour;
|
||||
extern int scroll_ids[30];
|
||||
extern int potion_ids[30];
|
||||
extern int stick_ids[30];
|
||||
extern int ring_ids[30];
|
||||
extern int cloak_ids[30];
|
||||
extern int boot_ids[30];
|
||||
|
||||
extern int deepest[E_MAX + 1];
|
||||
extern int level_seed[E_MAX + 1];
|
||||
|
||||
#endif /* INCLUDED_GLOB_H */
|
615
guild1.c
Normal file
615
guild1.c
Normal file
@ -0,0 +1,615 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* guild1.c */
|
||||
/* L_ functions */
|
||||
|
||||
/* These functions implement the various guilds. */
|
||||
/* They are all l_ functions since they are basically activated*/
|
||||
/* at some site or other. */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
int merc_xps [COMMANDANT] =
|
||||
{
|
||||
0, 400, 1500, 4000, -1
|
||||
};
|
||||
|
||||
void l_merc_guild(void)
|
||||
{
|
||||
print1("Legion of Destiny, Mercenary Guild, Inc.");
|
||||
|
||||
if (nighttime())
|
||||
{
|
||||
print2("The barracks are under curfew right now.");
|
||||
return;
|
||||
}
|
||||
|
||||
print2("You enter Legion HQ, ");
|
||||
if (Player.rank[LEGION] == COMMANDANT)
|
||||
{
|
||||
nprint2("Your aide follows you to the staff room.");
|
||||
morewait();
|
||||
clearmsg();
|
||||
}
|
||||
else if (Player.rank[LEGION] > 0)
|
||||
{
|
||||
nprint2("and report to your commander.");
|
||||
morewait();
|
||||
}
|
||||
|
||||
switch (Player.rank[LEGION])
|
||||
{
|
||||
case 0:
|
||||
nprint2("and see the Recruiting Centurion.");
|
||||
morewait();
|
||||
print2("Do you wish to join the Legion? [yn] ");
|
||||
|
||||
if ('y' == ynq2())
|
||||
{
|
||||
clearmsg();
|
||||
if (Player.rank[ARENA] > 0)
|
||||
{
|
||||
print1("The Centurion checks your record, and gets angry:");
|
||||
print2("'The legion don't need any Arena Jocks. Git!'");
|
||||
}
|
||||
else if (Player.rank[ORDER] > 0)
|
||||
{
|
||||
print1("The Centurion checks your record, and is amused:");
|
||||
print2("'A paladin in the ranks? You must be joking.'");
|
||||
}
|
||||
else if (Player.con < 12)
|
||||
{
|
||||
print1("The Centurion looks you over, sadly.");
|
||||
print2("You are too fragile to join the legion.");
|
||||
}
|
||||
else if (Player.str < 10)
|
||||
{
|
||||
print1("The Centurion looks at you contemptuously.");
|
||||
print2("Your strength is too low to pass the physical!");
|
||||
}
|
||||
else
|
||||
{
|
||||
pob newitem;
|
||||
bank_account * account;
|
||||
|
||||
print1("You are tested for strength and stamina...");
|
||||
morewait();
|
||||
nprint1(" and you pass!");
|
||||
|
||||
print2("Commandant ");
|
||||
nprint2(Commandant);
|
||||
nprint2(" shakes your hand.");
|
||||
morewait();
|
||||
|
||||
print1("You are also issued a shortsword and leather.");
|
||||
print2("You are now a Legionaire.");
|
||||
morewait();
|
||||
clearmsg();
|
||||
|
||||
/* gain shortsword */
|
||||
newitem = checkmalloc(sizeof(struct object));
|
||||
*newitem = Objects[OB_SHORT_SWORD];
|
||||
gain_item(newitem);
|
||||
|
||||
/* gain leather armor */
|
||||
newitem = checkmalloc(sizeof(struct object));
|
||||
*newitem = Objects[OB_LEATHER];
|
||||
gain_item(newitem);
|
||||
|
||||
cinema_scene("Your starting salary will be 500 AU per month paid into an account the",
|
||||
"legion has set up for you. The password is \"loyalty\". Don't lose your card!", 0);
|
||||
|
||||
/* gain bank card for salary account */
|
||||
account = bank_create_account(TRUE, 0, "loyalty");
|
||||
account->balance = 500;
|
||||
|
||||
Objects[OB_DEBIT_CARD].known = 1;
|
||||
newitem = bank_create_card(account->number, OB_DEBIT_CARD);
|
||||
gain_item(newitem);
|
||||
|
||||
clearmsg();
|
||||
|
||||
SalaryAmount = 500;
|
||||
SalaryAccount = account->number;
|
||||
|
||||
Player.rank[LEGION] = LEGIONAIRE;
|
||||
Player.guildxp[LEGION] = 1;
|
||||
Player.str++;
|
||||
Player.con++;
|
||||
Player.maxstr++;
|
||||
Player.maxcon++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case COMMANDANT:
|
||||
print1("You find the disposition of your forces satisfactory.");
|
||||
break;
|
||||
|
||||
case COLONEL:
|
||||
if ((Player.level > Commandantlevel)
|
||||
&& find_and_remove_item(CORPSEID, DEMON_EMP))
|
||||
{
|
||||
print1("You liberated the Demon Emperor's Regalia!");
|
||||
morewait();
|
||||
clearmsg();
|
||||
|
||||
print1("The Legion is assembled in salute to you!");
|
||||
print2("The Regalia is held high for all to see and admire.");
|
||||
morewait();
|
||||
clearmsg();
|
||||
|
||||
print1("Commandant ");
|
||||
nprint1(Commandant);
|
||||
nprint1(" promotes you to replace him,");
|
||||
print2("and announces his own overdue retirement.");
|
||||
morewait();
|
||||
clearmsg();
|
||||
|
||||
print1("You are the new Commandant of the Legion!");
|
||||
print2("The Emperor's Regalia is sold for a ridiculous sum.");
|
||||
morewait();
|
||||
clearmsg();
|
||||
|
||||
print1("You now know the Spell of Regeneration.");
|
||||
print2("Your training is complete. You get top salary.");
|
||||
|
||||
strcpy(Commandant, Player.name);
|
||||
Commandantlevel = Player.level;
|
||||
Commandantbehavior = fixnpc(4);
|
||||
save_hiscore_npc(8);
|
||||
|
||||
Spells[S_REGENERATE].known = TRUE;
|
||||
Player.rank[LEGION] = COMMANDANT;
|
||||
Player.str += 2;
|
||||
Player.con += 2;
|
||||
Player.maxstr += 2;
|
||||
Player.maxcon += 2;
|
||||
|
||||
SalaryAmount = 10000;
|
||||
}
|
||||
else if (Player.level <= Commandantlevel)
|
||||
{
|
||||
clearmsg();
|
||||
print1("Your CO expresses satisfaction with your progress.");
|
||||
print2("But your service record does not yet permit promotion.");
|
||||
}
|
||||
else
|
||||
{
|
||||
clearmsg();
|
||||
print1("Why do you come empty handed?");
|
||||
print2("You must return with the Regalia of the Demon Emperor!");
|
||||
}
|
||||
break;
|
||||
|
||||
case FORCE_LEADER:
|
||||
clearmsg();
|
||||
print1("Your CO expresses satisfaction with your progress.");
|
||||
|
||||
if (Player.guildxp[LEGION] < merc_xps[Player.rank[LEGION]])
|
||||
{
|
||||
print2("But your service record does not yet permit promotion.");
|
||||
}
|
||||
else
|
||||
{
|
||||
print2("You have been promoted to Legion Colonel!");
|
||||
morewait();
|
||||
|
||||
print1("Your next promotion is contingent on the return of");
|
||||
print2("the Regalia of the Demon Emperor.");
|
||||
morewait();
|
||||
|
||||
print1("The Demon Emperor holds court at the base of a volcano");
|
||||
print2("to the far south, in the heart of a swamp.");
|
||||
morewait();
|
||||
clearmsg();
|
||||
|
||||
print1("You have been taught the spell of heroism!");
|
||||
print2("You are given advanced training, and a raise.");
|
||||
|
||||
Spells[S_HERO].known = TRUE;
|
||||
Player.rank[LEGION]=COLONEL;
|
||||
Player.str++;
|
||||
Player.con++;
|
||||
Player.maxstr++;
|
||||
Player.maxcon++;
|
||||
|
||||
SalaryAmount = 5000;
|
||||
}
|
||||
break;
|
||||
|
||||
case CENTURION:
|
||||
clearmsg();
|
||||
print1("Your CO expresses satisfaction with your progress.");
|
||||
|
||||
if (Player.guildxp[LEGION] < merc_xps[Player.rank[LEGION]])
|
||||
{
|
||||
print2("But your service record does not yet permit promotion.");
|
||||
}
|
||||
else
|
||||
{
|
||||
print2("You are now a Legion Force-Leader!");
|
||||
morewait();
|
||||
clearmsg();
|
||||
|
||||
print1("You receive more training, and another raise.");
|
||||
|
||||
Player.rank[LEGION]=FORCE_LEADER;
|
||||
Player.maxstr++;
|
||||
Player.str++;
|
||||
|
||||
SalaryAmount = 2000;
|
||||
}
|
||||
break;
|
||||
|
||||
case LEGIONAIRE:
|
||||
clearmsg();
|
||||
print1("Your CO expresses satisfaction with your progress.");
|
||||
|
||||
if (Player.guildxp[LEGION] < merc_xps[Player.rank[LEGION]])
|
||||
{
|
||||
print2("But your service record does not yet permit promotion.");
|
||||
}
|
||||
else
|
||||
{
|
||||
print2("You are promoted to Legion Centurion!");
|
||||
morewait();
|
||||
clearmsg();
|
||||
|
||||
print1("You get advanced training, and a higher salary.");
|
||||
|
||||
Player.rank[LEGION] = CENTURION;
|
||||
Player.maxcon++;
|
||||
Player.con++;
|
||||
|
||||
SalaryAmount = 1000;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void l_castle(void)
|
||||
{
|
||||
pob o;
|
||||
int x, y;
|
||||
|
||||
if (Player.level < 3) {
|
||||
print1("You can't possibly enter the castle, you nobody!");
|
||||
print2("Come back when you are famous.");
|
||||
}
|
||||
else {
|
||||
print1("You are ushered into the castle.");
|
||||
if (Player.rank[NOBILITY]<DUKE) {
|
||||
print2("His Grace, ");
|
||||
nprint2(Duke);
|
||||
nprint2("-- Duke of Rampart! <fanfare>");
|
||||
morewait();
|
||||
clearmsg();
|
||||
}
|
||||
if (Player.rank[NOBILITY]==0) {
|
||||
print1("Well, sirrah, wouldst embark on a quest? [yn] ");
|
||||
if (ynq1() == 'y') {
|
||||
print2("Splendid. Bring me the head of the Goblin King.");
|
||||
Player.rank[NOBILITY]=COMMONER;
|
||||
}
|
||||
else {
|
||||
print1("You scoundrel! Guards! Take this blackguard away!");
|
||||
morewait();
|
||||
p_damage(25,UNSTOPPABLE,"castle guards for lese majeste");
|
||||
send_to_jail();
|
||||
}
|
||||
}
|
||||
else if (Player.rank[NOBILITY]==COMMONER) {
|
||||
if (find_and_remove_item(CORPSEID,GOBLIN_KING)) {
|
||||
print1("Good job, sirrah! I promote you to the rank of esquire.");
|
||||
Player.rank[NOBILITY]=ESQUIRE;
|
||||
gain_experience(100);
|
||||
print2("Now that you have proved yourself true, another quest!");
|
||||
morewait();
|
||||
print1("Bring to me a Holy Defender!");
|
||||
print2("One is said to be in the possession of the Great Wyrm");
|
||||
morewait();
|
||||
clearmsg();
|
||||
print1("in the depths of the sewers below the city.");
|
||||
}
|
||||
else print2("Do not return until you achieve the quest, caitiff!");
|
||||
}
|
||||
else if (Player.rank[NOBILITY]==ESQUIRE) {
|
||||
if (find_and_remove_item(OB_DEFENDER,-1)) {
|
||||
print1("My thanks, squire. In return, I dub thee knight!");
|
||||
Player.rank[NOBILITY]=KNIGHT;
|
||||
gain_experience(1000);
|
||||
print2("If thou wouldst please me further...");
|
||||
morewait();
|
||||
print1("Bring me a suit of dragonscale armor.");
|
||||
print2("You might have to kill a dragon to get one....");
|
||||
}
|
||||
else print2("Greetings, squire. My sword? What, you don't have it?");
|
||||
}
|
||||
else if (Player.rank[NOBILITY]==KNIGHT) {
|
||||
if (find_and_remove_item(OB_DRAGONSCALE,-1)) {
|
||||
print1("Thanks, good sir knight.");
|
||||
print2("Here are letters patent to a peerage!");
|
||||
Player.rank[NOBILITY]=LORD;
|
||||
gain_experience(10000);
|
||||
morewait();
|
||||
print1("If you would do me a final service...");
|
||||
print2("I require the Orb of Mastery. If you would be so kind...");
|
||||
morewait();
|
||||
print1("By the way, you might find the Orb in the possession");
|
||||
print2("Of the Elemental Master on the Astral Plane");
|
||||
}
|
||||
else print2("Your quest is not yet complete, sir knight.");
|
||||
}
|
||||
else if (Player.rank[NOBILITY]==LORD) {
|
||||
if (find_item(&o,OB_ORB_MASTERY,-1)) {
|
||||
print1("My sincerest thanks, my lord.");
|
||||
print2("You have proved yourself a true paragon of chivalry");
|
||||
morewait();
|
||||
print1("I abdicate the Duchy in your favor....");
|
||||
print2("Oh, you can keep the Orb, by the way....");
|
||||
Player.rank[NOBILITY]=DUKE;
|
||||
gain_experience(10000);
|
||||
strcpy(Duke,Player.name);
|
||||
morewait();
|
||||
Dukebehavior = fixnpc(4);
|
||||
save_hiscore_npc(12);
|
||||
for (y = 52; y < 63; y++)
|
||||
for (x = 2; x < 52; x++) {
|
||||
if (Level->site[x][y].p_locf == L_TRAP_SIREN) {
|
||||
Level->site[x][y].p_locf = L_NO_OP;
|
||||
lset(x, y, CHANGED);
|
||||
}
|
||||
if (x >= 12 && loc_statusp(x, y, SECRET)) {
|
||||
lreset(x, y, SECRET);
|
||||
lset(x, y, CHANGED);
|
||||
}
|
||||
if (x >= 20 && x <= 23 && y == 56) {
|
||||
Level->site[x][y].locchar = FLOOR;
|
||||
lset(x, y, CHANGED);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else print2("I didn't really think you were up to the task....");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void l_arena(void)
|
||||
{
|
||||
char response;
|
||||
pob newitem;
|
||||
int i,prize,monsterlevel;
|
||||
char *melee = NULL;
|
||||
|
||||
print1("Rampart Coliseum");
|
||||
if (Player.rank[ARENA] == 0) {
|
||||
print2("Enter the games, or Register as a Gladiator? [e,r,ESCAPE] ");
|
||||
do response = (char) mcigetc();
|
||||
while ((response != 'e') && (response != 'r') && (response != ESCAPE));
|
||||
}
|
||||
else {
|
||||
print2("Enter the games? [yn] ");
|
||||
response = ynq2();
|
||||
if (response == 'y') response = 'e';
|
||||
else response = ESCAPE;
|
||||
}
|
||||
if (response == 'r') {
|
||||
if (Player.rank[ARENA]>0)
|
||||
print2("You're already a gladiator....");
|
||||
else if (Player.rank[ORDER]>0)
|
||||
print2("We don't let Paladins into our Guild.");
|
||||
else if (Player.rank[LEGION]>0)
|
||||
print2("We don't train no stinkin' mercs!");
|
||||
else if (Player.str < 13)
|
||||
print2("Yer too weak to train!");
|
||||
else if (Player.agi < 12)
|
||||
print2("Too clumsy to be a gladiator!");
|
||||
else {
|
||||
print1("Ok, yer now an Arena Trainee.");
|
||||
print2("Here's a wooden sword, and a shield");
|
||||
morewait();
|
||||
clearmsg();
|
||||
newitem = ((pob) checkmalloc(sizeof(objtype)));
|
||||
*newitem = Objects[OB_CLUB]; /* club */
|
||||
gain_item(newitem);
|
||||
newitem = ((pob) checkmalloc(sizeof(objtype)));
|
||||
*newitem = Objects[OB_LRG_RND_SHIELD]; /* shield */
|
||||
gain_item(newitem);
|
||||
Player.rank[ARENA] = TRAINEE;
|
||||
Arena_Opponent = 3;
|
||||
morewait();
|
||||
clearmsg();
|
||||
print1("You've got 5000Au credit at the Gym.");
|
||||
Gymcredit+=5000;
|
||||
}
|
||||
}
|
||||
else if (response == 'e') {
|
||||
print1("OK, we're arranging a match....");
|
||||
morewait();
|
||||
Arena_Monster = ((pmt) checkmalloc(sizeof(montype)));
|
||||
Arena_Victory = FALSE;
|
||||
switch(Arena_Opponent) {
|
||||
case 0:
|
||||
*Arena_Monster = Monsters[GEEK];
|
||||
break;
|
||||
case 1:
|
||||
*Arena_Monster = Monsters[HORNET];
|
||||
break;
|
||||
case 2:
|
||||
*Arena_Monster = Monsters[HYENA];
|
||||
break;
|
||||
case 3:
|
||||
*Arena_Monster = Monsters[GOBLIN];
|
||||
break;
|
||||
case 4:
|
||||
*Arena_Monster = Monsters[GRUNT];
|
||||
break;
|
||||
case 5:
|
||||
*Arena_Monster = Monsters[TOVE];
|
||||
break;
|
||||
case 6:
|
||||
*Arena_Monster = Monsters[APPR_NINJA];
|
||||
break;
|
||||
case 7:
|
||||
*Arena_Monster = Monsters[SALAMANDER];
|
||||
break;
|
||||
case 8:
|
||||
*Arena_Monster = Monsters[ANT];
|
||||
break;
|
||||
case 9:
|
||||
*Arena_Monster = Monsters[MANTICORE];
|
||||
break;
|
||||
case 10:
|
||||
*Arena_Monster = Monsters[SPECTRE];
|
||||
break;
|
||||
case 11:
|
||||
*Arena_Monster = Monsters[BANDERSNATCH];
|
||||
break;
|
||||
case 12:
|
||||
*Arena_Monster = Monsters[LICHE];
|
||||
break;
|
||||
case 13:
|
||||
*Arena_Monster = Monsters[AUTO_MAJOR];
|
||||
break;
|
||||
case 14:
|
||||
*Arena_Monster = Monsters[JABBERWOCK];
|
||||
break;
|
||||
case 15:
|
||||
*Arena_Monster = Monsters[JOTUN];
|
||||
break;
|
||||
default:
|
||||
if ((Player.rank[ARENA] < 5) && (Player.rank[ARENA] > 0)) {
|
||||
strcpy(Str1,Champion);
|
||||
strcat(Str1,", the arena champion");
|
||||
*Arena_Monster = Monsters[HISCORE_NPC];
|
||||
Arena_Monster->monstring = salloc(Str1);
|
||||
strcpy(Str2,"The corpse of ");
|
||||
strcat(Str2,Str1);
|
||||
Arena_Monster->corpsestr = salloc(Str2);
|
||||
m_status_set( Arena_Monster, ALLOC );
|
||||
Arena_Monster->level = 20;
|
||||
Arena_Monster->hp = Championlevel*Championlevel*5;
|
||||
Arena_Monster->hit = Championlevel*4;
|
||||
Arena_Monster->ac = Championlevel*3;
|
||||
Arena_Monster->dmg = 100+Championlevel*2;
|
||||
Arena_Monster->xpv = Championlevel*Championlevel*5;
|
||||
Arena_Monster->speed = 3;
|
||||
melee = Arena_Monster->meleestr = (char *) checkmalloc(30*sizeof(char));
|
||||
strcpy(Arena_Monster->meleestr,"");
|
||||
for(i=0;i<Championlevel/5;i++)
|
||||
strcat(Arena_Monster->meleestr,"L?R?");
|
||||
m_status_set(Arena_Monster, MOBILE);
|
||||
m_status_set(Arena_Monster, HOSTILE);
|
||||
}
|
||||
else {
|
||||
do
|
||||
i = random_range(ML9 - ML0) + ML0;
|
||||
while (i == NPC || i == HISCORE_NPC || i == ZERO_NPC ||
|
||||
(Monsters[i].uniqueness != COMMON) ||
|
||||
(Monsters[i].dmg == 0));
|
||||
*Arena_Monster = Monsters[i];
|
||||
}
|
||||
break;
|
||||
}
|
||||
monsterlevel = Arena_Monster->level;
|
||||
if (Arena_Monster->level != 20) {
|
||||
strcpy(Str1,nameprint());
|
||||
strcat(Str1," the ");
|
||||
strcat(Str1,Arena_Monster->monstring);
|
||||
Arena_Monster->monstring = salloc(Str1);
|
||||
strcpy(Str2,"The corpse of ");
|
||||
strcat(Str2,Str1);
|
||||
Arena_Monster->corpsestr = salloc(Str2);
|
||||
m_status_set( Arena_Monster, ALLOC );
|
||||
}
|
||||
Arena_Monster->uniqueness = UNIQUE_MADE;
|
||||
print1("You have a challenger: ");
|
||||
print2(Arena_Monster->monstring);
|
||||
Arena_Monster->attacked = TRUE;
|
||||
m_status_set(Arena_Monster,HOSTILE);
|
||||
/* DAG pump up the stats of the arena monster; from env.c */
|
||||
/* DAG should we even do this for the champion? */
|
||||
Arena_Monster->hp += Arena_Monster->level*10;
|
||||
Arena_Monster->hit += Arena_Monster->hit;
|
||||
Arena_Monster->dmg += Arena_Monster->dmg/2;
|
||||
|
||||
morewait();
|
||||
clearmsg();
|
||||
change_environment(E_ARENA);
|
||||
print1("Let the battle begin....");
|
||||
|
||||
time_clock(TRUE);
|
||||
while (Current_Environment == E_ARENA)
|
||||
time_clock(FALSE);
|
||||
|
||||
/* DAG all this nasty mess cleaned up... */
|
||||
/* one process with m_status_set( Arena_Monster, ALLOC) */
|
||||
|
||||
/* free(name); */
|
||||
/* free(corpse); */
|
||||
|
||||
if (melee)
|
||||
free(melee);
|
||||
if (! Arena_Victory) {
|
||||
print1("The crowd boos your craven behavior!!!");
|
||||
if (Player.rank[ARENA] > 0) {
|
||||
print2("You are thrown out of the Gladiator's Guild!");
|
||||
morewait();
|
||||
clearmsg();
|
||||
if (Gymcredit > 0) print1("Your credit at the gym is cut off!");
|
||||
Gymcredit = 0;
|
||||
Player.rank[ARENA] = -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Arena_Opponent++;
|
||||
if (monsterlevel == 20) {
|
||||
print1("The crowd roars its approval!");
|
||||
if (Player.rank[ARENA]) {
|
||||
print2("You are the new Arena Champion!");
|
||||
Championlevel = Player.level;
|
||||
strcpy(Champion,Player.name);
|
||||
Player.rank[ARENA] = 5;
|
||||
morewait();
|
||||
Championbehavior = fixnpc(4);
|
||||
save_hiscore_npc(11);
|
||||
print1("You are awarded the Champion's Spear: Victrix!");
|
||||
morewait();
|
||||
newitem = ((pob) checkmalloc(sizeof(objtype)));
|
||||
*newitem = Objects[OB_VICTRIX];
|
||||
gain_item(newitem);
|
||||
|
||||
}
|
||||
else {
|
||||
print1("As you are not an official gladiator,");
|
||||
nprint1("you are not made Champion.");
|
||||
morewait();
|
||||
}
|
||||
}
|
||||
morewait();
|
||||
clearmsg();
|
||||
print1("Good fight! ");
|
||||
nprint1("Your prize is: ");
|
||||
prize = max(25,monsterlevel * 50);
|
||||
if (Player.rank[ARENA] > 0) prize *= 2;
|
||||
mnumprint(prize);
|
||||
nprint1("Au.");
|
||||
Player.cash+=prize;
|
||||
if ((Player.rank[ARENA]<4) &&
|
||||
(Arena_Opponent>5) &&
|
||||
(Arena_Opponent % 3 == 0)) {
|
||||
if (Player.rank[ARENA]>0) {
|
||||
Player.rank[ARENA]++;
|
||||
morewait();
|
||||
print1("You've been promoted to a stronger class!");
|
||||
print2("You are also entitled to additional training.");
|
||||
Gymcredit+=Arena_Opponent*1000;
|
||||
}
|
||||
}
|
||||
}
|
||||
xredraw();
|
||||
}
|
||||
else clearmsg();
|
||||
}
|
224
house.c
Normal file
224
house.c
Normal file
@ -0,0 +1,224 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* house.c */
|
||||
/* some functions to make the house levels */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
/* loads the house level into Level*/
|
||||
void load_house(int kind, int populate)
|
||||
{
|
||||
map *home;
|
||||
int i,j;
|
||||
char site;
|
||||
int stops;
|
||||
|
||||
TempLevel = Level;
|
||||
initrand(Current_Environment, Player.x + Player.y + hour()*10);
|
||||
if (ok_to_free(TempLevel)) {
|
||||
#ifndef SAVE_LEVELS
|
||||
free_level(TempLevel);
|
||||
#endif
|
||||
TempLevel = NULL;
|
||||
}
|
||||
#ifndef SAVE_LEVELS
|
||||
Level = ((plv) checkmalloc(sizeof(levtype)));
|
||||
#else
|
||||
msdos_changelevel(TempLevel,0,-1);
|
||||
Level = &TheLevel;
|
||||
#endif
|
||||
clear_level(Level);
|
||||
switch(kind) {
|
||||
case E_HOUSE:
|
||||
home = map_open(MAP_house);
|
||||
break;
|
||||
case E_MANSION:
|
||||
home = map_open(MAP_mansion);
|
||||
break;
|
||||
default:
|
||||
case E_HOVEL:
|
||||
home = map_open(MAP_hovel);
|
||||
break;
|
||||
}
|
||||
Level->level_width=map_getWidth(home);
|
||||
Level->level_length=map_getLength(home);
|
||||
map_setLevel(home, 0);
|
||||
|
||||
stops = 0;
|
||||
for(j=0;j<Level->level_length;j++) {
|
||||
for(i=0;i<Level->level_width;i++) {
|
||||
if (kind == E_HOVEL) Level->site[i][j].lstatus = SEEN;
|
||||
else Level->site[i][j].lstatus = 0;
|
||||
Level->site[i][j].roomnumber = RS_CORRIDOR;
|
||||
Level->site[i][j].p_locf = L_NO_OP;
|
||||
site = map_getSiteChar(home,i,j);
|
||||
switch(site) {
|
||||
case 'N':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_BEDROOM;
|
||||
if (random_range(2) && populate) make_house_npc(i,j);
|
||||
break;
|
||||
case 'H':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_BEDROOM;
|
||||
if (random_range(2) && populate) make_mansion_npc(i,j);
|
||||
break;
|
||||
case 'D':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_DININGROOM;
|
||||
break;
|
||||
case '.':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
if (stops) {
|
||||
lset(i,j,STOPS);
|
||||
stops = 0;
|
||||
}
|
||||
break;
|
||||
case 'c':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_CLOSET;
|
||||
break;
|
||||
case 'G':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_BATHROOM;
|
||||
break;
|
||||
case 'B':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_BEDROOM;
|
||||
break;
|
||||
case 'K':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_KITCHEN;
|
||||
break;
|
||||
case 'S':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].showchar = WALL;
|
||||
lset(i,j,SECRET);
|
||||
Level->site[i][j].roomnumber = RS_SECRETPASSAGE;
|
||||
break;
|
||||
case '3':
|
||||
Level->site[i][j].locchar = SAFE;
|
||||
Level->site[i][j].showchar = WALL;
|
||||
lset(i,j,SECRET);
|
||||
Level->site[i][j].p_locf = L_SAFE;
|
||||
break;
|
||||
case '^':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = TRAP_BASE+random_range(NUMTRAPS);
|
||||
break;
|
||||
case 'P':
|
||||
Level->site[i][j].locchar = PORTCULLIS;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS;
|
||||
break;
|
||||
case 'R':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_RAISE_PORTCULLIS;
|
||||
break;
|
||||
case 'p':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS;
|
||||
break;
|
||||
case 'T':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_PORTCULLIS_TRAP;
|
||||
break;
|
||||
case 'X':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].p_locf = L_HOUSE_EXIT;
|
||||
stops = 1;
|
||||
break;
|
||||
case '#':
|
||||
Level->site[i][j].locchar = WALL;
|
||||
switch (kind) {
|
||||
case E_HOVEL: Level->site[i][j].aux = 10; break;
|
||||
case E_HOUSE: Level->site[i][j].aux = 50; break;
|
||||
case E_MANSION: Level->site[i][j].aux = 150; break;
|
||||
}
|
||||
break;
|
||||
case '|':
|
||||
Level->site[i][j].locchar = OPEN_DOOR;
|
||||
Level->site[i][j].roomnumber = RS_CORRIDOR;
|
||||
lset(i,j,STOPS);
|
||||
break;
|
||||
case '+':
|
||||
Level->site[i][j].locchar = CLOSED_DOOR;
|
||||
Level->site[i][j].roomnumber = RS_CORRIDOR;
|
||||
Level->site[i][j].aux = LOCKED;
|
||||
lset(i,j,STOPS);
|
||||
break;
|
||||
case 'd':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_CORRIDOR;
|
||||
if (populate)
|
||||
make_site_monster(i,j,DOBERMAN);
|
||||
break;
|
||||
case 'a':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_CORRIDOR;
|
||||
Level->site[i][j].p_locf = L_TRAP_SIREN;
|
||||
break;
|
||||
case 'A':
|
||||
Level->site[i][j].locchar = FLOOR;
|
||||
Level->site[i][j].roomnumber = RS_CORRIDOR;
|
||||
if (populate)
|
||||
make_site_monster(i,j,AUTO_MINOR); /* automaton */
|
||||
break;
|
||||
}
|
||||
Level->site[i][j].showchar = ' ';
|
||||
}
|
||||
}
|
||||
map_close(home);
|
||||
initrand(E_RESTORE, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* makes a log npc for houses and hovels */
|
||||
void make_house_npc(int i, int j)
|
||||
{
|
||||
pml ml = ((pml) checkmalloc(sizeof(mltype)));
|
||||
pob ob;
|
||||
ml->m = ((pmt) checkmalloc(sizeof(montype)));
|
||||
*(ml->m) = Monsters[NPC];
|
||||
make_log_npc(ml->m);
|
||||
if (ml->m->id == NPC) mprint("You detect signs of life in this house.");
|
||||
else mprint("An eerie shiver runs down your spine as you enter....");
|
||||
/* if not == NPC, then we got a ghost off the npc list */
|
||||
ml->m->x = i;
|
||||
ml->m->y = j;
|
||||
Level->site[i][j].creature = ml->m;
|
||||
ml->m->click = (Tick + 1) % 50;
|
||||
ml->next = Level->mlist;
|
||||
Level->mlist = ml;
|
||||
m_status_set(ml->m,HOSTILE);
|
||||
if (nighttime())
|
||||
m_status_reset(ml->m,AWAKE);
|
||||
else m_status_set(ml->m,AWAKE);
|
||||
if (ml->m->startthing > -1) {
|
||||
ob = ((pob) checkmalloc(sizeof(objtype)));
|
||||
*ob = Objects[ml->m->startthing];
|
||||
m_pickup(ml->m,ob);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* makes a hiscore npc for mansions */
|
||||
void make_mansion_npc(int i, int j)
|
||||
{
|
||||
pml ml = ((pml) checkmalloc(sizeof(mltype)));
|
||||
ml->m = ((pmt) checkmalloc(sizeof(montype)));
|
||||
*(ml->m) = Monsters[NPC];
|
||||
make_hiscore_npc(ml->m,random_range(14) + 1);
|
||||
mprint("You detect signs of life in this house.");
|
||||
ml->m->x = i;
|
||||
ml->m->y = j;
|
||||
Level->site[i][j].creature = ml->m;
|
||||
ml->m->click = (Tick + 1) % 50;
|
||||
ml->next = Level->mlist;
|
||||
Level->mlist = ml;
|
||||
m_status_set(ml->m,HOSTILE);
|
||||
if (nighttime())
|
||||
m_status_reset(ml->m,AWAKE);
|
||||
else m_status_set(ml->m,AWAKE);
|
||||
}
|
||||
|
484
iinit.h
Normal file
484
iinit.h
Normal file
@ -0,0 +1,484 @@
|
||||
/* omega, (C) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* iinit.h */
|
||||
/* This file defines and initializes the Objects Array */
|
||||
|
||||
/* the struct object from defs.h looks like:
|
||||
|
||||
struct object
|
||||
{
|
||||
int id;
|
||||
int weight;
|
||||
int plus;
|
||||
int charge;
|
||||
int dmg;
|
||||
int hit;
|
||||
int aux;
|
||||
int number;
|
||||
int fragility;
|
||||
long basevalue;
|
||||
unsigned char known;
|
||||
unsigned char used;
|
||||
int blessing;
|
||||
unsigned char type;
|
||||
unsigned char uniqueness;
|
||||
int usef;
|
||||
unsigned char level;
|
||||
Symbol objchar;
|
||||
char *objstr;
|
||||
char *truename;
|
||||
char *cursestr;
|
||||
};
|
||||
|
||||
*/
|
||||
|
||||
|
||||
struct object Objects[TOTALITEMS] = {
|
||||
{ THINGID+0,10,0,0,0,0,0,1,10,50,0,0,0,0,COMMON,I_RAISE_PORTCULLIS,2,THING,"small grey box with red button","disposeable garage door opener","disposeable garage door opener" },
|
||||
|
||||
{ THINGID+1,20,0,0,0,0,0,1,20,2000,0,0,0,0,COMMON,I_NO_OP,4,THING,"some rocks","uncut diamonds","uncut diamonds" },
|
||||
|
||||
{ THINGID+2,15,0,0,0,0,0,1,10,50,0,0,0,0,COMMON,I_PICK,2,THING,"twisted piece of metal","thieve's pick","thieve's pick" },
|
||||
|
||||
{ THINGID+3,10,0,0,0,0,0,1,15,1500,0,0,0,0,COMMON,I_NO_OP,1,THING,"large green gem","humongous emerald","humongous emerald" },
|
||||
|
||||
{ THINGID+4,200,0,0,0,0,0,1,18,1750,0,0,0,0,COMMON,I_NO_OP,4,THING,"gold ingot","gold ingot","gold ingot" },
|
||||
|
||||
{ THINGID+5,5,0,0,0,0,0,1,1,3000,0,0,0,0,COMMON,I_NO_OP,5,THING,"old illegible documents","bearer bonds","bearer bonds" },
|
||||
|
||||
{ THINGID+6,100,0,0,0,0,0,1,1,1,0,0,0,0,COMMON,I_NO_OP,0,THING,"bucket of salt water","bucket of salt water","bucket of salt water" },
|
||||
|
||||
{ THINGID+7,3,0,0,0,0,0,1,10,20,0,0,0,0,COMMON,I_KEY,2,THING,"key","magic key","magic key" },
|
||||
|
||||
{ THINGID+8,30,0,0,0,0,6,1,8,10,0,0,0,0,COMMON,I_PERM_ILLUMINATE,0,THING,"torch","torch","torch" },
|
||||
|
||||
{ THINGID+9,10,0,0,0,0,0,1,12,0,0,0,0,0,COMMON,I_NO_OP,0,THING,"grot","grot","grot" },
|
||||
|
||||
{ THINGID+10,10,0,0,0,0,0,1,12,0,0,0,0,0,COMMON,I_NO_OP,0,THING,"grot","grot","grot" },
|
||||
|
||||
{ THINGID+11,10,0,0,0,0,0,1,12,0,0,0,0,0,COMMON,I_NO_OP,0,THING,"grot","grot","grot" },
|
||||
|
||||
{ THINGID+12,10,0,0,0,0,0,1,12,0,0,0,0,0,COMMON,I_NO_OP,0,THING,"grot","grot","grot" },
|
||||
|
||||
{ THINGID+13,10,0,0,0,0,0,1,12,0,0,0,0,0,COMMON,I_NO_OP,0,THING,"grot","grot","grot" },
|
||||
|
||||
{ THINGID+14,10,0,0,0,0,0,1,12,0,0,0,0,0,COMMON,I_NO_OP,0,THING,"grot","grot","grot" },
|
||||
|
||||
{ THINGID+15,10,0,0,0,0,0,1,12,0,0,0,0,0,COMMON,I_NO_OP,0,THING,"grot","grot","grot" },
|
||||
|
||||
{ THINGID+16,10,0,0,0,0,0,1,12,0,0,0,0,0,UNIQUE_MADE,I_NO_OP,0,THING,"Justiciar's Badge","Justiciar's Badge","Justiciar's Badge" },
|
||||
|
||||
{ THINGID+17,10,0,0,0,0,89,1,3,30,0,0,0,0,COMMON,I_TRAP,0,THING,"spring-loaded tube","dart-trap component","dart-trap component" },
|
||||
|
||||
{ THINGID+18,10,0,0,0,0,98,1,3,30,0,0,0,0,COMMON,I_TRAP,0,THING,"pressurized cannister","acid-trap component","acid-trap component" },
|
||||
|
||||
{ THINGID+19,10,0,0,0,0,92,1,3,30,0,0,0,0,COMMON,I_TRAP,0,THING,"coil of fine wire","snare component","snare component" },
|
||||
|
||||
{ THINGID+20,10,0,0,0,0,94,1,3,30,0,0,0,0,COMMON,I_TRAP,0,THING,"mound of powdered aluminum","fire-trap component","fire-trap component" },
|
||||
|
||||
{ THINGID+21,10,0,0,0,0,95,1,3,30,0,0,0,0,COMMON,I_TRAP,0,THING,"powerful rune","teleport-trap component","teleport-trap component" },
|
||||
|
||||
{ THINGID+22,10,0,0,0,0,97,1,3,30,0,0,0,0,COMMON,I_TRAP,0,THING,"pressurized cannister","sleepgas-trap component","sleepgas-trap component" },
|
||||
|
||||
{ THINGID+23,10,0,0,0,0,96,1,3,30,0,0,0,0,COMMON,I_TRAP,0,THING,"powerful rune","disintegration-trap component","disintegration-trap component" },
|
||||
|
||||
{ THINGID+24,10,0,0,0,0,100,1,3,30,0,0,0,0,COMMON,I_TRAP,0,THING,"dark fabric patch","abyss-trap component","abyss-trap component" },
|
||||
|
||||
{ THINGID+25,10,0,0,0,0,99,1,3,30,0,0,0,0,COMMON,I_TRAP,0,THING,"powerful rune","manadrain-trap component","manadrain-trap component" },
|
||||
|
||||
/*{ 172,1,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_PERM_KNOWLEDGE,0,RING,"?","ring of self-knowledge","ring of delusion" },*/
|
||||
{ THINGID+26,1,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_PERM_KNOWLEDGE,0,THING,"small mirror","mirror of self-knowledge","mirror of delusion" },
|
||||
|
||||
{ THINGID+27,2,0,0,0,0,0,1,10,1,0,0,0,0,COMMON,I_NO_OP,3,THING,"plastic card with black stripe","debit card","debit card"},
|
||||
|
||||
{ THINGID+28,2,0,0,0,0,0,1,10,1,0,0,0,0,COMMON,I_NO_OP,5,THING,"plastic card with black stripe","credit card","credit card"},
|
||||
|
||||
{ THINGID+29,2,0,0,0,0,0,1,10,1,0,0,0,0,COMMON,I_NO_OP,1,THING,"plastic card with square gold patch","pre-paid card","pre-paid card"},
|
||||
|
||||
{ THINGID+30,2,0,0,0,0,0,1,10,1,0,0,0,0,COMMON,I_NO_OP,10,THING,"plastic card with square gold patch","smart card","smart card"},
|
||||
|
||||
{ FOODID+0,20,0,0,0,0,8,1,0,2,0,0,0,0,COMMON,I_FOOD,0,FOOD,"red and white striped bucket","food ration","food ration" },
|
||||
|
||||
{ FOODID+1,10,0,0,0,0,48,1,0,200,0,0,0,0,COMMON,I_LEMBAS,2,FOOD,"wafer of lembas","wafer of lembas","wafer of lembas" },
|
||||
|
||||
{ FOODID+2,1,0,0,0,0,1,1,0,50,0,0,0,0,COMMON,I_STIM,3,FOOD,"small gray tablet","stimtab","stimtab" },
|
||||
|
||||
{ FOODID+3,1,0,0,0,0,1,1,0,100,0,0,0,0,COMMON,I_POW,3,FOOD,"small gray tablet","powtab","powtab" },
|
||||
|
||||
{ FOODID+4,1,0,0,0,0,36,1,0,20,0,0,0,0,COMMON,I_FOOD,3,FOOD,"small gray tablet","nutritab","nutritab" },
|
||||
|
||||
{ FOODID+5,1,0,0,0,0,1,1,0,500,0,0,0,0,COMMON,I_IMMUNE,3,FOOD,"small gray tablet","immunotab","immunotab" },
|
||||
|
||||
{ FOODID+6,1,0,0,0,0,2,1,0,1,0,0,0,0,COMMON,I_FOOD,0,FOOD,"jelly baby","jelly baby","jelly baby" },
|
||||
|
||||
{ FOODID+7,20,0,0,0,0,-1,1,0,25,0,0,0,0,COMMON,I_POISON_FOOD,1,FOOD,"food ration","poisoned ration","poisoned ration" },
|
||||
|
||||
{ FOODID+8,2,0,0,0,0,1,1,0,100,0,0,0,0,COMMON,I_PEPPER_FOOD,2,FOOD,"withered reddish stringy vegetable","szechuan pepper","szechuan pepper" },
|
||||
|
||||
{ FOODID+9,2,0,0,0,0,8,1,0,5,0,0,0,0,COMMON,I_FOOD,2,FOOD,"messy red and white disk","pepperoni pizza pie","pepperoni pizza pie" },
|
||||
|
||||
{ FOODID+10,2,0,0,0,0,6,1,0,7,0,0,0,0,COMMON,I_FOOD,2,FOOD,"brown bag with strange ideograms","hunan take-out","hunan take-out" },
|
||||
|
||||
{ FOODID+11,2,0,0,0,0,2,1,0,5,0,0,0,0,COMMON,I_FOOD,2,FOOD,"strange foamy cylinders","twinkies","twinkies" },
|
||||
|
||||
{ FOODID+12,2,0,0,0,0,3,1,0,3,0,0,0,0,COMMON,I_FOOD,2,FOOD,"squiggly orange spirals","cheese-doodles","cheese-doodles" },
|
||||
|
||||
{ FOODID+13,2,0,0,0,0,4,1,0,3,0,0,0,0,COMMON,I_FOOD,2,FOOD,"sweet nutty-smelling disks","pecan twirls","pecan_twirls" },
|
||||
|
||||
{ FOODID+14,2,0,0,0,0,10,1,0,75,0,0,0,0,COMMON,I_FOOD,2,FOOD,"pale white strips with green dots","veal piccata with capers","veal piccata with capers" },
|
||||
|
||||
{ FOODID+15,2,0,0,0,0,3,1,0,5,0,0,0,0,COMMON,I_FOOD,2,FOOD,"a bag of hard brown kernels","a bag of unmilled grain","a bag of unmilled grain" },
|
||||
|
||||
{ SCROLLID+0,5,0,0,0,0,0,1,1,5,0,0,0,0,COMMON,I_NOTHING,0,SCROLL,"?","blank scroll","Antinomy!" },
|
||||
|
||||
{ SCROLLID+1,5,0,0,0,0,0,1,1,250,0,0,0,0,COMMON,I_SPELLS,1,SCROLL,"?","scroll of spells","scroll of spell loss" },
|
||||
|
||||
{ SCROLLID+2,5,0,0,0,0,0,1,1,400,0,0,0,0,COMMON,I_BLESS,2,SCROLL,"?","scroll of blessing","scroll of cursing" },
|
||||
|
||||
{ SCROLLID+3,5,0,0,0,0,0,1,1,5000,0,0,0,0,COMMON,I_ACQUIRE,7,SCROLL,"?","scroll of acquirement","scroll of destruction" },
|
||||
|
||||
{ SCROLLID+4,5,0,0,0,0,0,1,1,200,0,0,0,0,COMMON,I_ENCHANT,2,SCROLL,"?","scroll of enchantment","scroll of disenchantment" },
|
||||
|
||||
{ SCROLLID+5,5,0,0,0,0,0,1,1,75,0,0,0,0,COMMON,I_TELEPORT,1,SCROLL,"?","scroll of teleportation","scroll of teleportation" },
|
||||
|
||||
{ SCROLLID+6,5,0,0,0,0,0,1,1,10000,0,0,0,0,COMMON,I_WISH,10,SCROLL,"?","scroll of wishing","scroll of wishing" },
|
||||
|
||||
{ SCROLLID+7,5,0,0,0,0,0,1,1,25,0,0,0,0,COMMON,I_CLAIRVOYANCE,1,SCROLL,"?","scroll of clairvoyance","scroll of amnesia" },
|
||||
|
||||
{ SCROLLID+8,5,0,0,0,0,0,1,1,50,0,0,0,0,COMMON,I_DISPLACE,2,SCROLL,"?","scroll of displacement","scroll of vulnerability" },
|
||||
|
||||
{ SCROLLID+9,5,0,0,0,0,0,1,1,20,0,0,0,0,COMMON,I_ID,0,SCROLL,"?","scroll of identification","scroll of forgetfulness" },
|
||||
|
||||
{ SCROLLID+10,5,0,0,0,0,0,1,1,10,0,0,0,0,COMMON,I_HINT,0,SCROLL,"?","hint sheet","hint sheet" },
|
||||
|
||||
{ SCROLLID+11,5,0,0,0,0,0,1,1,50,0,0,0,0,COMMON,I_JANE_T,2,SCROLL,"?","Jane's guide to treasure","Jane's guide to treasure" },
|
||||
|
||||
{ SCROLLID+12,5,0,0,0,0,0,1,1,50,0,0,0,0,COMMON,I_ALERT,1,SCROLL,"?","scroll of alertness","scroll of drowsiness" },
|
||||
|
||||
{ SCROLLID+13,5,0,0,0,0,0,1,1,300,0,0,0,0,COMMON,I_FLUX,5,SCROLL,"?","scroll of cosmic flux","scroll of cosmic flux" },
|
||||
|
||||
{ SCROLLID+14,5,0,0,0,0,0,1,1,100,0,0,0,0,COMMON,I_CHARGE,2,SCROLL,"?","scroll of charging","scroll of draining" },
|
||||
|
||||
{ SCROLLID+15,5,0,0,0,0,0,1,1,100,0,0,0,0,COMMON,I_WARP,3,SCROLL,"?","scroll of the warp","scroll of the warp" },
|
||||
|
||||
{ SCROLLID+16,5,0,0,0,0,0,1,1,10,0,0,0,0,COMMON,I_KNOWLEDGE,1,SCROLL,"?","scroll of self-knowledge","scroll of delusion" },
|
||||
|
||||
{ SCROLLID+17,5,0,0,0,0,0,1,1,100,0,0,0,0,COMMON,I_LAW,2,SCROLL,"?","scroll of law","scroll of law" },
|
||||
|
||||
{ SCROLLID+18,5,0,0,0,0,0,1,1,200,0,0,0,0,COMMON,I_HERO,5,SCROLL,"?","scroll of heroism","scroll of cowardliness" },
|
||||
|
||||
{ SCROLLID+19,5,0,0,0,0,0,1,1,50,0,0,0,0,COMMON,I_TRUESIGHT,2,SCROLL,"?","scroll of true sight","scroll of blindness" },
|
||||
|
||||
{ SCROLLID+20,5,0,0,0,0,0,1,1,250,0,0,0,0,COMMON,I_DISPEL,3,SCROLL,"?","scroll of dispelling","scroll of self-dispelling" },
|
||||
|
||||
{ SCROLLID+21,5,0,0,0,0,0,1,1,300,0,0,0,0,COMMON,I_SUMMON,2,SCROLL,"?","scroll of summoning","scroll of summoning" },
|
||||
|
||||
{ SCROLLID+22,5,0,0,0,0,0,1,1,30,0,0,0,0,COMMON,I_ILLUMINATE,0,SCROLL,"?","scroll of light","scroll of darkness" },
|
||||
|
||||
{ SCROLLID+23,5,0,0,0,0,0,1,1,250,0,0,0,0,COMMON,I_DEFLECT,3,SCROLL,"?","scroll of deflection","scroll of vulnerability" },
|
||||
|
||||
{ POTIONID+0,20,0,0,0,0,0,1,5,0,0,0,0,0,COMMON,I_NO_OP,0,POTION,"?","potion of quenching thirst","Antinomy!" },
|
||||
|
||||
{ POTIONID+1,20,0,0,0,0,0,1,5,40,0,0,0,0,COMMON,I_HEAL,2,POTION,"?","potion of healing","potion of disruption" },
|
||||
|
||||
{ POTIONID+2,20,0,0,0,0,0,1,5,10,0,0,0,0,COMMON,I_OBJDET,1,POTION,"?","potion of object detection","potion of object detection" },
|
||||
|
||||
{ POTIONID+3,20,0,0,0,0,0,1,5,10,0,0,0,0,COMMON,I_MONDET,1,POTION,"?","potion of monster detection","potion of monster detection" },
|
||||
|
||||
{ POTIONID+4,20,0,0,0,0,0,1,5,20,0,0,0,0,COMMON,I_NEUTRALIZE_POISON,2,POTION,"?","potion of neutralize poison","potion of poison" },
|
||||
|
||||
{ POTIONID+5,20,0,0,0,0,0,1,5,100,0,0,0,0,COMMON,I_ALERT,0,POTION,"?","potion of alertness","potion of sleep" },
|
||||
|
||||
{ POTIONID+6,20,0,0,0,0,0,1,5,40,0,0,0,0,COMMON,I_SPEED,1,POTION,"?","potion of speed","potion of slowness" },
|
||||
|
||||
{ POTIONID+7,20,0,0,0,0,0,1,5,50,0,0,0,0,COMMON,I_RESTORE,3,POTION,"?","potion of restoration","potion of debilitation" },
|
||||
|
||||
{ POTIONID+8,20,-1,0,0,0,0,1,5,1500,0,0,0,0,COMMON,I_AZOTH,7,POTION,"mercury","Azoth","mercury" },
|
||||
|
||||
{ POTIONID+9,20,0,0,0,0,0,1,5,100,0,0,0,0,COMMON,I_REGENERATE,4,POTION,"?","potion of regeneration","potion of great disruption" },
|
||||
|
||||
{ POTIONID+10,20,0,0,0,0,0,1,5,100,0,0,0,0,COMMON,I_INVISIBLE,2,POTION,"?","potion of invisibility","potion of aggravation" },
|
||||
|
||||
{ POTIONID+11,20,0,0,0,0,0,1,5,30,0,0,0,0,COMMON,I_BREATHING,2,POTION,"?","potion of breathing","potion of choking" },
|
||||
|
||||
{ POTIONID+12,20,0,0,0,0,0,1,5,200,0,0,0,0,COMMON,I_AUGMENT,5,POTION,"?","potion of augmentation","potion of debilitation" },
|
||||
|
||||
{ POTIONID+13,20,0,0,0,0,0,1,5,50,0,0,0,0,COMMON,I_FEAR_RESIST,2,POTION,"?","potion of banishing fear","potion of fear" },
|
||||
|
||||
{ POTIONID+14,20,0,0,0,0,0,1,5,100,0,0,0,0,COMMON,I_CHAOS,3,POTION,"?","potion of chaos","Antinomy!" },
|
||||
|
||||
{ POTIONID+15,20,0,0,0,0,0,1,5,200,0,0,0,0,COMMON,I_ACCURACY,3,POTION,"?","potion of accuracy","potion of fuzziness" },
|
||||
|
||||
{ POTIONID+16,20,0,0,0,0,0,1,5,50,0,0,0,0,COMMON,I_LEVITATION,1,POTION,"?","potion of levitation","potion of levitation" },
|
||||
|
||||
{ POTIONID+17,20,0,0,0,0,0,1,5,50,0,0,0,0,COMMON,I_CURE,1,POTION,"?","potion of curing","potion of disease" },
|
||||
|
||||
{ WEAPONID+0,10,0,0,6,12,0,1,15,5,0,0,0,THRUSTING,COMMON,I_NORMAL_WEAPON,0,WEAPON,"dagger","dagger","dagger" },
|
||||
|
||||
{ WEAPONID+1,25,0,0,8,11,0,1,15,40,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,1,WEAPON,"short sword","short sword","short sword" },
|
||||
|
||||
{ WEAPONID+2,40,0,0,12,9,0,1,15,90,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,2,WEAPON,"broad sword","broad sword","broad sword" },
|
||||
|
||||
{ WEAPONID+3,50,0,0,16,8,0,1,15,250,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,3,WEAPON,"bastard sword","bastard sword","bastard sword" },
|
||||
|
||||
{ WEAPONID+4,50,0,0,16,10,0,1,15,500,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,4,WEAPON,"katana","katana","katana" },
|
||||
|
||||
{ WEAPONID+5,75,0,0,20,7,0,1,15,400,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,5,WEAPON,"great-sword","great-sword","great-sword" },
|
||||
|
||||
{ WEAPONID+6,15,0,0,6,15,0,1,15,50,0,0,0,THRUSTING,COMMON,I_NORMAL_WEAPON,2,WEAPON,"epee","epee","epee" },
|
||||
|
||||
{ WEAPONID+7,20,0,0,8,13,0,1,15,250,0,0,0,THRUSTING,COMMON,I_NORMAL_WEAPON,3,WEAPON,"rapier","rapier","rapier" },
|
||||
|
||||
{ WEAPONID+8,25,0,0,11,12,0,1,15,500,0,0,0,THRUSTING,COMMON,I_NORMAL_WEAPON,5,WEAPON,"estoc","estoc","estoc" },
|
||||
|
||||
{ WEAPONID+9,35,0,0,8,8,0,1,15,40,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,1,WEAPON,"cutlass","cutlass","cutlass" },
|
||||
|
||||
{ WEAPONID+10,25,0,0,8,10,0,1,15,50,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,1,WEAPON,"hand-axe","hand-axe","hand-axe" },
|
||||
|
||||
{ WEAPONID+11,50,0,0,12,8,0,1,15,100,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,2,WEAPON,"battle-axe","battle-axe","battle-axe" },
|
||||
|
||||
{ WEAPONID+12,100,0,0,24,7,0,1,15,200,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,5,WEAPON,"great-axe","great-axe","great-axe" },
|
||||
|
||||
{ WEAPONID+13,50,0,0,12,8,0,1,15,50,0,0,0,STRIKING,COMMON,I_NORMAL_WEAPON,2,WEAPON,"mace","mace","mace" },
|
||||
|
||||
{ WEAPONID+14,50,0,0,14,6,0,1,15,60,0,0,0,STRIKING,COMMON,I_NORMAL_WEAPON,2,WEAPON,"war-hammer","war-hammer","war-hammer" },
|
||||
|
||||
{ WEAPONID+15,60,0,0,16,7,0,1,15,150,0,0,0,STRIKING,COMMON,I_NORMAL_WEAPON,5,WEAPON,"morning-star","morning-star","morning-star" },
|
||||
|
||||
{ WEAPONID+16,50,0,0,12,7,0,1,15,50,0,0,0,STRIKING,COMMON,I_NORMAL_WEAPON,3,WEAPON,"flail","flail","flail" },
|
||||
|
||||
{ WEAPONID+17,30,0,0,6,10,0,1,15,5,0,0,0,STRIKING,COMMON,I_NORMAL_WEAPON,0,WEAPON,"club","club","club" },
|
||||
|
||||
{ WEAPONID+18,80,0,0,9,12,0,1,15,30,0,0,0,STRIKING,COMMON,I_NORMAL_WEAPON,1,WEAPON,"quarterstaff","quarterstaff","quarterstaff" },
|
||||
|
||||
{ WEAPONID+19,50,0,0,10,10,0,1,15,50,0,0,0,THRUSTING,COMMON,I_NORMAL_WEAPON,2,WEAPON,"spear","spear","spear" },
|
||||
|
||||
{ WEAPONID+20,100,0,0,16,6,0,1,15,100,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,3,WEAPON,"halberd","halberd","halberd" },
|
||||
|
||||
{ WEAPONID+21,80,0,0,12,7,0,1,15,75,0,0,0,THRUSTING,COMMON,I_NORMAL_WEAPON,3,WEAPON,"trident","trident","trident" },
|
||||
|
||||
{ WEAPONID+22,20,0,0,4,8,1005,1,15,100,0,0,0,STRIKING,COMMON,I_NORMAL_WEAPON,2,WEAPON,"whip","whip","whip" },
|
||||
|
||||
{ WEAPONID+23,20,0,0,30,20,1002,1,15,2000,0,0,0,THRUSTING,COMMON,I_LIGHTSABRE,9,WEAPON,"grey metal cylinder","lightsabre","lightsabre" },
|
||||
|
||||
{ WEAPONID+24,500,8,0,16,8,1003,1,15,1000,0,0,-8,CUTTING,COMMON,I_DEMONBLADE,9,WEAPON,"bastard sword","Demonblade","Demonblade" },
|
||||
|
||||
{ WEAPONID+25,250,7,0,17,10,1004,1,15,3000,0,0,7,STRIKING,COMMON,I_MACE_DISRUPT,7,WEAPON,"mace","mace of disruption","mace" },
|
||||
|
||||
{ WEAPONID+26,100,0,0,12,15,0,1,15,300,0,0,0,MISSILE,COMMON,I_NORMAL_WEAPON,2,MISSILEWEAPON,"longbow","longbow","longbow" },
|
||||
|
||||
{ WEAPONID+27,150,0,0,20,15,0,1,15,500,0,0,0,MISSILE,COMMON,I_NORMAL_WEAPON,3,MISSILEWEAPON,"crossbow","crossbow","crossbow" },
|
||||
|
||||
{ WEAPONID+28,2,0,0,3,3,1006,1,15,2,0,0,0,MISSILE,COMMON,I_NORMAL_WEAPON,1,MISSILEWEAPON,"arrow","arrow","arrow" },
|
||||
|
||||
{ WEAPONID+29,2,0,0,3,0,1007,1,15,5,0,0,0,MISSILE,COMMON,I_NORMAL_WEAPON,1,MISSILEWEAPON,"bolt","bolt","bolt" },
|
||||
|
||||
{ WEAPONID+30,50,0,0,3,10,1005,1,15,50,0,0,0,MISSILE,COMMON,I_NORMAL_WEAPON,2,MISSILEWEAPON,"bola","bola","bola" },
|
||||
|
||||
{ WEAPONID+31,40,5,0,12,9,1008,1,15,3000,0,0,0,CUTTING,COMMON,I_NORMAL_WEAPON,7,WEAPON,"broad sword","vorpal sword","sword of self-mutilation" },
|
||||
|
||||
{ WEAPONID+32,100,7,0,20,7,1009,1,15,5000,0,0,-7,CUTTING,COMMON,I_DESECRATE,9,WEAPON,"great-sword","Desecrator","Desecrator" },
|
||||
|
||||
{ WEAPONID+33,60,7,0,16,7,1010,1,15,2000,0,0,0,STRIKING,COMMON,I_PERM_FIRE_RESIST,6,WEAPON,"morning-star","firestar","firestar" },
|
||||
|
||||
{ WEAPONID+34,50,7,0,10,12,1011,1,15,3000,0,0,7,THRUSTING,COMMON,I_DEFEND,7,WEAPON,"estoc","Defender","Defender" },
|
||||
|
||||
{ WEAPONID+35,50,10,0,100,10,1012,1,15,5000,0,0,10,THRUSTING,UNIQUE_MADE,I_VICTRIX,10,WEAPON,"ivory spear","Victrix","Victrix" },
|
||||
|
||||
{ WEAPONID+36,500,6,0,32,6,0,1,15,2000,0,0,0,CUTTING,UNIQUE_MADE,I_NORMAL_WEAPON,7,WEAPON,"great-axe","Goblins' Hewer","Goblins' Hewer" },
|
||||
|
||||
{ WEAPONID+37,100,20,0,30,10,0,1,15,500,0,0,-10,CUTTING,COMMON,I_NORMAL_WEAPON,6,WEAPON,"scythe","scythe of slicing","scythe of slicing" },
|
||||
|
||||
{ WEAPONID+38,250,0,0,50,-10,0,1,15,100,0,0,0,STRIKING,COMMON,I_NORMAL_WEAPON,5,WEAPON,"giant club","giant club","giant club" },
|
||||
|
||||
{ WEAPONID+39,500,0,0,10000,1000,1014,1,15,10000,0,0,0,CUTTING,UNIQUE_MADE,I_NORMAL_WEAPON,10,WEAPON,"Scythe of Death","Scythe of Death","Scythe of Death" },
|
||||
|
||||
{ WEAPONID+40,30,0,0,16,16,1015,1,15,1000,0,0,0,STRIKING,COMMON,I_NORMAL_WEAPON,4,WEAPON,"whip","acid whip","acid whip" },
|
||||
|
||||
{ ARMORID+0,100,0,0,1,0,0,1,20,5,0,0,0,0,COMMON,I_NORMAL_ARMOR,0,ARMOR,"flak jacket","flak jacket","flak jacket" },
|
||||
|
||||
{ ARMORID+1,200,0,0,2,0,1,1,20,10,0,0,0,0,COMMON,I_NORMAL_ARMOR,1,ARMOR,"soft leather armor","soft leather armor","soft leather armor" },
|
||||
|
||||
{ ARMORID+2,200,0,0,2,0,1,1,20,30,0,0,0,0,COMMON,I_NORMAL_ARMOR,1,ARMOR,"cuirbouilli","cuirbouilli","cuirbouilli" },
|
||||
|
||||
{ ARMORID+3,300,0,0,3,0,2,1,20,100,0,0,0,0,COMMON,I_NORMAL_ARMOR,2,ARMOR,"ring mail","ring mail","ring mail" },
|
||||
|
||||
{ ARMORID+4,400,0,0,4,0,3,1,20,200,0,0,0,0,COMMON,I_NORMAL_ARMOR,3,ARMOR,"chain mail","chain mail","chain mail" },
|
||||
|
||||
{ ARMORID+5,400,0,0,4,0,2,1,20,300,0,0,0,0,COMMON,I_NORMAL_ARMOR,4,ARMOR,"scale mail","scale mail","scale mail" },
|
||||
|
||||
{ ARMORID+6,400,0,0,5,0,3,1,20,450,0,0,0,0,COMMON,I_NORMAL_ARMOR,5,ARMOR,"partial plate mail","partial plate mail","partial plate mail" },
|
||||
|
||||
{ ARMORID+7,600,0,0,6,0,4,1,20,750,0,0,0,0,COMMON,I_NORMAL_ARMOR,6,ARMOR,"full plate mail","full plate mail","full plate mail" },
|
||||
|
||||
{ ARMORID+8,500,0,0,7,0,4,1,20,1500,0,0,0,0,COMMON,I_NORMAL_ARMOR,6,ARMOR,"plate armor","plate armor","plate armor" },
|
||||
|
||||
{ ARMORID+9,200,0,0,5,0,2,1,20,1500,0,0,0,0,COMMON,I_NORMAL_ARMOR,6,ARMOR,"lamellar armor","lamellar armor","lamellar armor" },
|
||||
|
||||
{ ARMORID+10,200,0,0,5,0,2,1,20,2000,0,0,0,0,COMMON,I_PERM_FEAR_RESIST,7,ARMOR,"mithril chain mail","mithril chain mail","mithril chain mail" },
|
||||
|
||||
{ ARMORID+11,300,0,0,8,0,3,1,20,3000,0,0,0,0,COMMON,I_PERM_FEAR_RESIST,7,ARMOR,"mithril plate armor","mithril plate armor","mithril plate armor" },
|
||||
|
||||
{ ARMORID+12,500,0,0,6,0,3,1,20,3000,0,0,0,0,COMMON,I_PERM_FIRE_RESIST,7,ARMOR,"dragonscale armor","dragonscale armor","dragonscale armor" },
|
||||
|
||||
{ ARMORID+13,100,9,0,7,0,2,1,20,1000,0,0,0,0,COMMON,I_PERM_ENERGY_RESIST,8,ARMOR,"prismatrix armor","prismatrix armor","prismatrix armor" },
|
||||
|
||||
{ ARMORID+14,0,0,0,20,0,0,1,20,5000,0,0,0,0,COMMON,I_PERM_BREATHING,9,ARMOR,"powered combat armor","powered combat armor","powered combat armor" },
|
||||
|
||||
{ ARMORID+15,0,0,0,10,0,0,1,20,3000,0,0,0,0,COMMON,I_PERM_BREATHING,7,ARMOR,"powered scout armor","powered scout armor","powered scout armor" },
|
||||
|
||||
{ ARMORID+16,100,5,0,5,0,0,1,20,2000,0,0,-9,0,COMMON,I_PERM_ENERGY_RESIST,3,ARMOR,"demonhide armor","demonhide armor","demonhide armor" },
|
||||
|
||||
{ SHIELDID+0,20,0,0,0,0,1,1,15,10,0,0,0,0,COMMON,I_NORMAL_SHIELD,0,SHIELD,"buckler","buckler","buckler" },
|
||||
|
||||
{ SHIELDID+1,40,0,0,0,0,2,1,15,20,0,0,0,0,COMMON,I_NORMAL_SHIELD,1,SHIELD,"small round shield","small round shield","small round shield" },
|
||||
|
||||
{ SHIELDID+2,100,0,0,0,0,3,1,15,50,0,0,0,0,COMMON,I_NORMAL_SHIELD,2,SHIELD,"large round shield","large round shield","large round shield" },
|
||||
|
||||
{ SHIELDID+3,200,0,0,0,0,4,1,15,75,0,0,0,0,COMMON,I_NORMAL_SHIELD,2,SHIELD,"heater shield","heater shield","heater shield" },
|
||||
|
||||
{ SHIELDID+4,300,0,0,0,0,5,1,15,150,0,0,0,0,COMMON,I_NORMAL_SHIELD,3,SHIELD,"hoplon","hoplon","hoplon" },
|
||||
|
||||
{ SHIELDID+5,500,0,0,0,0,6,1,15,200,0,0,0,0,COMMON,I_NORMAL_SHIELD,4,SHIELD,"tower shield","tower shield","tower shield" },
|
||||
|
||||
{ SHIELDID+6,20,0,0,0,0,7,1,15,1000,0,0,0,0,COMMON,I_NORMAL_SHIELD,6,SHIELD,"plasteel shield","plasteel shield","plasteel shield" },
|
||||
|
||||
{ SHIELDID+7,200,6,0,0,0,6,1,15,2000,0,0,0,0,COMMON,I_PERM_DEFLECT,7,SHIELD,"shield of deflection","shield of deflection","shield of deflection" },
|
||||
|
||||
{ CLOAKID+0,30,0,0,0,0,0,1,4,15,0,0,0,0,COMMON,I_NO_OP,0,CLOAK,"?","cloak of wool","cloak of wool" },
|
||||
|
||||
{ CLOAKID+1,30,0,0,0,0,0,1,4,500,0,0,0,0,COMMON,I_PERM_NEGIMMUNE,3,CLOAK,"?","cloak of negimmunity","cloak of level drain" },
|
||||
|
||||
{ CLOAKID+2,30,0,0,0,0,0,1,4,500,0,0,0,0,COMMON,I_PERM_INVISIBLE,5,CLOAK,"?","cloak of invisibility","cloak of invisibility" },
|
||||
|
||||
{ CLOAKID+3,30,0,0,0,0,0,1,4,1000,0,0,0,0,COMMON,I_PERM_ACCURACY,5,CLOAK,"?","cloak of skill","cloak of skill" },
|
||||
|
||||
{ CLOAKID+4,30,0,0,0,0,0,1,4,500,0,0,0,0,COMMON,I_PERM_PROTECTION,3,CLOAK,"?","cloak of protection","cloak of damage" },
|
||||
|
||||
{ CLOAKID+5,30,0,0,0,0,0,1,4,2000,0,0,0,0,COMMON,I_PERM_DISPLACE,6,CLOAK,"?","cloak of displacement","cloak of vulnerability" },
|
||||
|
||||
{ CLOAKID+6,30,0,0,0,0,0,1,4,500,0,0,0,0,COMMON,I_PERM_TRUESIGHT,3,CLOAK,"?","cloak of true sight","cloak of blindness" },
|
||||
|
||||
{ BOOTID+0,30,0,0,0,0,0,1,6,1000,0,0,0,0,COMMON,I_PERM_SPEED,4,BOOTS,"?","boots of speed","boots of slowness" },
|
||||
|
||||
{ BOOTID+1,30,0,0,0,0,0,1,6,1000,0,0,0,0,COMMON,I_PERM_HERO,6,BOOTS,"?","boots of heroism","boots of cowardliness" },
|
||||
|
||||
{ BOOTID+2,30,0,0,0,0,0,1,6,500,0,0,0,0,COMMON,I_PERM_LEVITATE,3,BOOTS,"?","boots of levitation","boots of levitation" },
|
||||
|
||||
{ BOOTID+3,30,0,0,0,0,0,1,6,250,0,0,0,0,COMMON,I_PERM_AGILITY,3,BOOTS,"?","boots of agility","boots of clumsiness" },
|
||||
|
||||
{ BOOTID+4,30,0,0,0,0,0,1,6,200,0,0,0,0,COMMON,I_BOOTS_JUMPING,2,BOOTS,"?","jumping boots","jumping boots" },
|
||||
|
||||
{ BOOTID+5,30,0,0,0,0,0,1,6,7,0,0,0,0,COMMON,I_NO_OP,0,BOOTS,"?","boots of leather","boots of leather" },
|
||||
|
||||
{ BOOTID+6,30,0,0,0,0,0,1,6,2700,0,0,0,0,COMMON,I_BOOTS_7LEAGUE,7,BOOTS,"?","seven league boots","umpteen league boots" },
|
||||
|
||||
{ RINGID+0,1,0,0,0,0,0,1,10,400,0,0,0,0,COMMON,I_PERM_TRUESIGHT,3,RING,"?","ring of truesight","ring of blindness" },
|
||||
|
||||
{ RINGID+1,1,0,0,0,0,0,1,10,1,0,0,-1,0,COMMON,I_PERM_BURDEN,0,RING,"?","ring of burden","ring of burden" },
|
||||
|
||||
{ RINGID+2,1,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_PERM_STRENGTH,1,RING,"?","ring of strength","ring of strength" },
|
||||
|
||||
{ RINGID+3,1,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_PERM_GAZE_IMMUNE,2,RING,"?","ring of gaze immunity","ring of gaze immunity" },
|
||||
|
||||
{ RINGID+4,1,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_PERM_FIRE_RESIST,3,RING,"?","ring of fire resistance","ring of fire resistance" },
|
||||
|
||||
{ RINGID+5,1,0,0,0,0,0,1,10,10,0,0,0,0,COMMON,I_NO_OP,0,RING,"?","ring of brass and glass","ring of brass and glass" },
|
||||
|
||||
{ RINGID+6,1,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_PERM_POISON_RESIST,4,RING,"?","ring of poison resistance","ring of poison" },
|
||||
|
||||
{ RINGID+7,1,0,0,0,0,0,1,10,1000,0,0,0,0,COMMON,I_PERM_REGENERATE,5,RING,"?","ring of regeneration","ring of regeneration" },
|
||||
|
||||
/*{ RINGID+172,1,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_PERM_KNOWLEDGE,0,RING,"?","ring of self-knowledge","ring of delusion" },*/
|
||||
|
||||
{ RINGID+8,1,0,0,0,0,0,1,10,500,0,0,0,0,COMMON,I_PERM_PROTECTION,4,RING,"?","ring of protection","ring of vulnerability" },
|
||||
|
||||
{ STICKID+0,80,0,0,0,0,0,1,10,500,0,0,0,0,COMMON,I_FIREBOLT,3,STICK,"?","staff of firebolts","staff of firebolts" },
|
||||
|
||||
{ STICKID+1,80,0,0,0,0,0,1,10,10,0,0,0,0,COMMON,I_NOTHING,0,STICK,"?","walking stick","walking stick" },
|
||||
|
||||
{ STICKID+2,80,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_SLEEP_OTHER,1,STICK,"?","staff of sleep","staff of sleep" },
|
||||
|
||||
{ STICKID+3,80,0,0,0,0,0,1,10,500,0,0,0,0,COMMON,I_LBALL,4,STICK,"?","wand of ball lightning","wand of ball lightning" },
|
||||
|
||||
{ STICKID+4,80,0,0,0,0,0,1,10,500,0,0,0,0,COMMON,I_SUMMON,2,STICK,"?","rod of summoning","rod of summoning" },
|
||||
|
||||
{ STICKID+5,80,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_HIDE,1,STICK,"?","rod of hiding","rod of hiding" },
|
||||
|
||||
{ STICKID+6,80,0,0,0,0,0,1,10,500,0,0,0,0,COMMON,I_LBOLT,3,STICK,"?","staff of lightning bolts","staff of lightning bolts" },
|
||||
|
||||
{ STICKID+7,80,0,0,0,0,0,1,10,500,0,0,0,0,COMMON,I_FIREBALL,5,STICK,"?","wand of fireballs","wand of fireballs" },
|
||||
|
||||
{ STICKID+8,80,0,0,0,0,0,1,10,2000,0,0,0,0,COMMON,I_DISINTEGRATE,7,STICK,"?","rod of disintegration","rod of disintegration" },
|
||||
|
||||
{ STICKID+9,80,0,0,0,0,0,1,10,1000,0,0,0,0,COMMON,I_DISRUPT,6,STICK,"?","staff of disruption","staff of disruption" },
|
||||
|
||||
{ STICKID+10,80,0,0,0,0,0,1,10,100,0,0,0,0,COMMON,I_SNOWBALL,2,STICK,"?","snowball stick","snowball stick" },
|
||||
|
||||
{ STICKID+11,80,0,0,0,0,0,1,10,50,0,0,0,0,COMMON,I_MISSILE,1,STICK,"?","staff of missiles","staff of missiles" },
|
||||
|
||||
{ STICKID+12,80,0,0,0,0,0,1,10,200,0,0,0,0,COMMON,I_APPORT,2,STICK,"?","rod of apportation","rod of lossage" },
|
||||
|
||||
{ STICKID+13,80,0,0,0,0,0,1,10,750,0,0,0,0,COMMON,I_DISPEL,6,STICK,"?","staff of dispelling","staff of self-dispelling" },
|
||||
|
||||
{ STICKID+14,80,0,0,0,0,0,1,10,500,0,0,0,0,COMMON,I_HEAL,3,STICK,"?","staff of healing","staff of harming" },
|
||||
|
||||
{ STICKID+15,80,0,0,0,0,0,1,10,1000,0,0,0,0,COMMON,I_POLYMORPH,3,STICK,"wand of stupidity","wand of polymorph","wand of stupidity" },
|
||||
|
||||
{ STICKID+16,80,0,0,0,0,0,1,10,500,0,0,0,0,COMMON,I_FEAR,2,STICK,"?","wand of fear","wand of fear" },
|
||||
|
||||
{ ARTIFACTID+0,500,0,0,0,0,0,1,15,10000,0,0,0,0,UNIQUE_MADE,I_ORBMASTERY,10,ARTIFACT,"Mysterious Orb","Orb of Mastery","Orb of Mastery" },
|
||||
|
||||
{ ARTIFACTID+1,50,0,0,0,0,0,1,15,2000,0,0,0,0,COMMON,I_ORBFIRE,9,ARTIFACT,"Mysterious Orb","Orb of Fire","Orb of Fire" },
|
||||
|
||||
{ ARTIFACTID+2,50,0,0,0,0,0,1,15,2000,0,0,0,0,COMMON,I_ORBWATER,8,ARTIFACT,"Mysterious Orb","Orb of Water","Orb of Water" },
|
||||
|
||||
{ ARTIFACTID+3,50,0,0,0,0,0,1,15,2000,0,0,0,0,COMMON,I_ORBEARTH,7,ARTIFACT,"Mysterious Orb","Orb of Earth","Orb of Earth" },
|
||||
|
||||
{ ARTIFACTID+4,50,0,0,0,0,0,1,15,2000,0,0,0,0,COMMON,I_ORBAIR,6,ARTIFACT,"Mysterious Orb","Orb of Air","Orb of Air" },
|
||||
|
||||
{ ARTIFACTID+5,25,0,0,0,0,0,1,15,100,0,0,0,0,COMMON,I_ORBDEAD,1,ARTIFACT,"Black Orb","Burnt-out Orb","Burnt-out Orb" },
|
||||
|
||||
{ ARTIFACTID+6,75,0,0,0,0,0,1,15,500,0,0,0,0,COMMON,I_CRYSTAL,3,ARTIFACT,"Glass Orb","Crystal Ball","Ball of Mindlessness" },
|
||||
|
||||
{ ARTIFACTID+7,25,0,0,0,0,0,1,15,1000,0,0,0,0,COMMON,I_ANTIOCH,5,ARTIFACT,"Metal Pineapple","Holy Hand-Grenade of Antioch","Holy Hand-Grenade of Antioch" },
|
||||
|
||||
{ ARTIFACTID+8,500,0,0,0,0,0,1,15,1,0,0,0,0,UNIQUE_UNMADE,I_NOTHING,1,ARTIFACT,"Mystic Amulet","Amulet of Yendor","Amulet of Yendor" },
|
||||
|
||||
{ ARTIFACTID+9,1,0,0,0,0,0,1,15,20000,0,0,0,0,UNIQUE_MADE,I_KOLWYNIA,7,ARTIFACT,"Key","Kolwynia, the Key That Was Lost","Kolwynia, the Key That was Lost" },
|
||||
|
||||
{ ARTIFACTID+10,10,0,0,0,0,0,1,15,500,0,0,0,0,UNIQUE_UNMADE,I_DEATH,3,ARTIFACT,"?","Potion of Death","Potion of Death" },
|
||||
|
||||
{ ARTIFACTID+11,100,0,0,0,0,0,1,15,2000,0,0,0,0,UNIQUE_UNMADE,I_ENCHANTMENT,5,ARTIFACT,"Scintillating Staff","Staff of Enchantment","Staff of Enchantment" },
|
||||
|
||||
{ ARTIFACTID+12,0,0,0,0,0,0,1,15,1500,0,0,0,0,UNIQUE_UNMADE,I_HELM,2,ARTIFACT,"Strange Weightless Helm","Helm of Teleportation","Helm of Teleportation" },
|
||||
|
||||
{ ARTIFACTID+13,10,0,0,0,0,0,1,15,500,0,0,0,0,UNIQUE_UNMADE,I_LIFE,6,ARTIFACT,"?","Potion of Life","Potion of Life" },
|
||||
|
||||
{ ARTIFACTID+14,5,0,0,0,0,1,1,15,5000,0,0,0,0,UNIQUE_MADE,I_SYMBOL,10,ARTIFACT,"Silver Gallows","Holy Symbol of Odin","Holy Symbol of Odin" },
|
||||
|
||||
{ ARTIFACTID+15,5,0,0,0,0,2,1,15,5000,0,0,0,0,UNIQUE_MADE,I_SYMBOL,10,ARTIFACT,"Jet Scarab","Holy Symbol of Set","Holy Symbol of Set" },
|
||||
|
||||
{ ARTIFACTID+16,5,0,0,0,0,3,1,15,5000,0,0,0,0,UNIQUE_MADE,I_SYMBOL,10,ARTIFACT,"Gold Owl Pendant","Holy Symbol of Athena","Holy Symbol of Athena" },
|
||||
|
||||
{ ARTIFACTID+17,5,0,0,0,0,4,1,15,5000,0,0,0,0,UNIQUE_MADE,I_SYMBOL,10,ARTIFACT,"Obsidian Crescent","Holy Symbol of Hecate","Holy Symbol of Hecate" },
|
||||
|
||||
{ ARTIFACTID+18,5,0,0,0,0,5,1,15,5000,0,0,0,0,UNIQUE_MADE,I_SYMBOL,10,ARTIFACT,"Sprig of Mistletoe","Holy Symbol of Druidism","Holy Symbol of Druidism" },
|
||||
|
||||
{ ARTIFACTID+19,5,0,0,0,0,6,1,15,5000,0,0,0,0,UNIQUE_MADE,I_SYMBOL,10,ARTIFACT,"Blue Crystal Pendant","Holy Symbol of Destiny","Holy Symbol of Destiny" },
|
||||
|
||||
{ ARTIFACTID+20,1000,0,0,0,0,0,1,15,1000,0,0,0,0,UNIQUE_UNMADE,I_JUGGERNAUT,6,ARTIFACT,"Crudely Carved Monolith","Juggernaut of Karnak","Juggernaut of Karnak" },
|
||||
|
||||
{ ARTIFACTID+21,10,0,0,0,0,0,1,0,10000,0,0,0,0,UNIQUE_MADE,I_STARGEM,7,ARTIFACT,"Strangely Glowing Crystal","Star Gem","Star Gem" },
|
||||
|
||||
{ ARTIFACTID+22,1000,0,0,0,0,0,1,10,1000,0,0,0,0,UNIQUE_MADE,I_SCEPTRE,10,ARTIFACT,"Extremely Heavy Stick ","Sceptre of High Magic","Sceptre of High Magic" },
|
||||
|
||||
{ ARTIFACTID+23,10,0,0,0,0,0,1,10,1000,0,0,0,0,UNIQUE_MADE,I_PLANES,10,ARTIFACT,"Octagonal Copper Amulet ","Amulet of the Planes","Amulet of the Planes" },
|
||||
|
||||
{ ARTIFACTID+24,100,0,0,0,0,0,1,10,1000,0,0,0,0,UNIQUE_UNMADE,I_HOLDING,3,ARTIFACT,"brown bag","Bag of Holding","Bag of Devouring" },
|
||||
|
||||
{ ARTIFACTID+25,10,0,0,0,0,0,1,10,1000,0,0,0,0,UNIQUE_MADE,I_SERENITY,10,ARTIFACT,"Small, simple amulet ","Amulet of Serenity","Amulet of Serenity" },
|
||||
|
||||
{ CASHID,0,0,0,0,0,0,1,10,0,0,0,0,0,COMMON,I_NO_OP,0,CASH,"money","money","money (the root of all evil)" },
|
||||
|
||||
{ CORPSEID,100,0,0,0,0,0,1,10,0,0,0,0,0,COMMON,I_CORPSE,0,CORPSE,"a mysterious corpse","a mysterious corpse","a mysterious corpse" }
|
||||
};
|
10
init.c
Normal file
10
init.c
Normal file
@ -0,0 +1,10 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* init.c */
|
||||
|
||||
#include "defs.h"
|
||||
|
||||
#include "iinit.h"
|
||||
|
||||
#include "minit.h"
|
||||
|
||||
/* This file contains all the object and monster definitions */
|
712
item.c
Normal file
712
item.c
Normal file
@ -0,0 +1,712 @@
|
||||
/* omega copyright (C) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* item.c */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
/* make a random new object, returning pointer */
|
||||
pob create_object(int itemlevel)
|
||||
{
|
||||
pob new;
|
||||
int r;
|
||||
int ok = FALSE;
|
||||
|
||||
while (! ok) {
|
||||
new = ((pob) checkmalloc(sizeof(objtype)));
|
||||
r= random_range(135);
|
||||
if (r < 20) make_thing(new,-1);
|
||||
else if (r < 40) make_food(new,-1);
|
||||
else if (r < 50) make_scroll(new,-1);
|
||||
else if (r < 60) make_potion(new,-1);
|
||||
else if (r < 70) make_weapon(new,-1);
|
||||
else if (r < 80) make_armor(new,-1);
|
||||
else if (r < 90) make_shield(new,-1);
|
||||
else if (r < 100) make_stick(new,-1);
|
||||
else if (r < 110) make_boots(new,-1);
|
||||
else if (r < 120) make_cloak(new,-1);
|
||||
else if (r < 130) make_ring(new,-1);
|
||||
else make_artifact(new,-1);
|
||||
/* not ok if object is too good for level, or if unique and already made */
|
||||
/* 1/100 chance of finding object if too good for level */
|
||||
ok = ((new->uniqueness < UNIQUE_MADE) &&
|
||||
((new->level < itemlevel+random_range(3))
|
||||
|| (random_range(100)==23)));
|
||||
if (!ok)
|
||||
{
|
||||
free_obj( new, TRUE );
|
||||
}
|
||||
}
|
||||
if (new->uniqueness == UNIQUE_UNMADE)
|
||||
Objects[new->id].uniqueness=UNIQUE_MADE;
|
||||
return(new);
|
||||
}
|
||||
|
||||
void make_cash(pob new, int level)
|
||||
{
|
||||
*new = Objects[CASHID];
|
||||
new->basevalue = random_range(level*level+10)+1; /* aux is AU value */
|
||||
new->objstr = cashstr();
|
||||
new->cursestr = new->truename = new->objstr;
|
||||
}
|
||||
|
||||
void make_food(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMFOODS);
|
||||
*new = Objects[FOODID+id];
|
||||
}
|
||||
|
||||
|
||||
void make_corpse(pob new, pmt m)
|
||||
{
|
||||
*new = Objects[CORPSEID];
|
||||
new->charge = m->id;
|
||||
new->weight = m->corpseweight;
|
||||
new->basevalue = m->corpsevalue;
|
||||
new->known = 2;
|
||||
new->objstr = m->corpsestr;
|
||||
new->truename = new->cursestr = new->objstr;
|
||||
if ( m_statusp(m, ALLOC ) )
|
||||
{
|
||||
/* DAG we are keeping the corpsestr here, can free monstring */
|
||||
/* later, should track this in the object as well, as this */
|
||||
/* is still a memory leak (though smaller than before) */
|
||||
free ( m->monstring );
|
||||
m->monstring = Monsters[m->id].monstring;
|
||||
m->corpsestr = Monsters[m->id].corpsestr;
|
||||
m_status_reset( m, ALLOC );
|
||||
/* DAG level not otherwise used for corpses. Use to hold ALLOC info. */
|
||||
new->level |= ALLOC;
|
||||
}
|
||||
/* DG I_CANNIBAL not implemented... fall through to code in I_CORPSE */
|
||||
/* WDT HACK, of course -- we need to implement I_CANNIBAL. */
|
||||
#if 0
|
||||
if ((m->monchar&0xff) == '@')
|
||||
new->usef = I_CANNIBAL;
|
||||
else
|
||||
#endif
|
||||
if (m_statusp(m,EDIBLE)) {
|
||||
new->usef = I_FOOD;
|
||||
new->aux = 6;
|
||||
}
|
||||
else if (m_statusp(m,POISONOUS))
|
||||
new->usef = I_POISON_FOOD;
|
||||
/* Special corpse-eating effects */
|
||||
else switch(m->id) {
|
||||
case TSETSE: /*tse tse fly */
|
||||
case TORPOR: /*torpor beast */
|
||||
new->usef = I_SLEEP_SELF;
|
||||
break;
|
||||
case NASTY:
|
||||
new->usef = I_INVISIBLE;
|
||||
break;
|
||||
case BLIPPER:
|
||||
new->usef = I_TELEPORT;
|
||||
break;
|
||||
case EYE: /* floating eye -- it's traditional.... */
|
||||
new->usef = I_CLAIRVOYANCE;
|
||||
break;
|
||||
case FUZZY: /*astral fuzzy */
|
||||
new->usef = I_DISPLACE;
|
||||
break;
|
||||
case SERV_LAW:
|
||||
new->usef = I_CHAOS;
|
||||
break;
|
||||
case SERV_CHAOS:
|
||||
new->usef = I_LAW;
|
||||
break;
|
||||
case ASTRAL_VAMP: /* astral vampire */
|
||||
new->usef = I_ENCHANT;
|
||||
break;
|
||||
case MANABURST:
|
||||
new->usef = I_SPELLS;
|
||||
break;
|
||||
case RAKSHASA:
|
||||
new->usef = I_TRUESIGHT;
|
||||
break;
|
||||
/* DG fall through to code in I_CORPSE and special case there */
|
||||
#if 0 /* WDT HACK? */
|
||||
case BEHEMOTH:
|
||||
new->usef = I_HEAL;
|
||||
break;
|
||||
case UNICORN:
|
||||
new->usef = I_NEUTRALIZE_POISON;
|
||||
break;
|
||||
#endif
|
||||
case COMA: /*coma beast */
|
||||
new->usef = I_ALERT;
|
||||
break;
|
||||
/* DG I_INEDIBLE not implemented... fall through to code in I_CORPSE */
|
||||
#if 0 /* WDT HACK: yawn. */
|
||||
default:
|
||||
new->usef = I_INEDIBLE;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void make_ring(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMRINGS);
|
||||
*new = Objects[RINGID+id];
|
||||
if (new->blessing == 0) new->blessing = itemblessing();
|
||||
if (new->plus == 0) new->plus = itemplus()+1;
|
||||
if (new->blessing < 0) new->plus = -1 - abs(new->plus);
|
||||
}
|
||||
|
||||
void make_thing (pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMTHINGS);
|
||||
|
||||
*new = Objects[THINGID+id];
|
||||
|
||||
if (0 == strcmp(new->objstr, "grot"))
|
||||
{
|
||||
new->objstr = grotname();
|
||||
new->truename = new->cursestr = new->objstr;
|
||||
}
|
||||
else if (new->id >= CARDID && new->id < (CARDID + NUMCARDS))
|
||||
{
|
||||
switch (new->id)
|
||||
{
|
||||
case OB_DEBIT_CARD:
|
||||
new->aux = bank_random_account_number();
|
||||
break;
|
||||
|
||||
case OB_CREDIT_CARD:
|
||||
new->charge = random_range(250) + random_range(250) + random_range(250);
|
||||
break;
|
||||
|
||||
case OB_PREPAID_CARD:
|
||||
new->charge = random_range(50) + random_range(50) + random_range(50);
|
||||
break;
|
||||
|
||||
case OB_SMART_CARD:
|
||||
new->aux = bank_random_account_number();
|
||||
new->charge = random_range(500) + random_range(500) + random_range(500);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void make_scroll(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMSCROLLS);
|
||||
*new = Objects[SCROLLID+id];
|
||||
/* if a scroll of spells, aux is the spell id in Spells */
|
||||
if (new->id == OB_SPELLS_SCROLL) {
|
||||
new->aux = random_range(NUMSPELLS);
|
||||
}
|
||||
}
|
||||
|
||||
void make_potion(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMPOTIONS);
|
||||
*new = Objects[POTIONID+id];
|
||||
if (new->plus == 0) new->plus = itemplus();
|
||||
}
|
||||
|
||||
void make_weapon(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMWEAPONS);
|
||||
*new = Objects[WEAPONID+id];
|
||||
if ((id == 28) || (id == 29)) /* bolt or arrow */
|
||||
new->number = random_range(20)+1;
|
||||
if (new->blessing == 0) new->blessing = itemblessing();
|
||||
if (new->plus == 0) {
|
||||
new->plus = itemplus();
|
||||
if (new->blessing < 0)
|
||||
new->plus = -1 - abs(new->plus);
|
||||
else if (new->blessing > 0)
|
||||
new->plus = 1 + abs(new->plus);
|
||||
}
|
||||
}
|
||||
|
||||
void make_shield(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMSHIELDS);
|
||||
*new = Objects[SHIELDID+id];
|
||||
if (new->plus == 0)
|
||||
new->plus = itemplus();
|
||||
if (new->blessing == 0) new->blessing = itemblessing();
|
||||
if (new->blessing < 0)
|
||||
new->plus = -1 - abs(new->plus);
|
||||
else if (new->blessing > 0)
|
||||
new->plus = 1 + abs(new->plus);
|
||||
}
|
||||
|
||||
void make_armor(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMARMOR);
|
||||
*new = Objects[ARMORID+id];
|
||||
if (new->plus == 0) new->plus = itemplus();
|
||||
if (new->blessing == 0) new->blessing = itemblessing();
|
||||
if (new->blessing < 0)
|
||||
new->plus = -1 - abs(new->plus);
|
||||
else if (new->blessing > 0)
|
||||
new->plus = 1 + abs(new->plus);
|
||||
}
|
||||
|
||||
void make_cloak(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMCLOAKS);
|
||||
Objects[OB_CLOAK_PROTECT].plus = 2;
|
||||
*new = Objects[CLOAKID+id];
|
||||
if (new->blessing == 0) new->blessing = itemblessing();
|
||||
}
|
||||
|
||||
void make_boots(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMBOOTS);
|
||||
*new = Objects[BOOTID+id];
|
||||
if (new->blessing == 0) new->blessing = itemblessing();
|
||||
}
|
||||
|
||||
void make_stick(pob new, int id)
|
||||
{
|
||||
if (id == -1) id = random_range(NUMSTICKS);
|
||||
*new = Objects[STICKID+id];
|
||||
new->charge = itemcharge();
|
||||
if (new->blessing == 0) new->blessing = itemblessing();
|
||||
}
|
||||
|
||||
void make_artifact(pob new, int id)
|
||||
{
|
||||
if (id == -1)
|
||||
do
|
||||
id = random_range(NUMARTIFACTS);
|
||||
while (Objects[id].uniqueness >= UNIQUE_MADE);
|
||||
*new = Objects[ARTIFACTID+id];
|
||||
if ( new->id == OB_HOLDING )
|
||||
new->blessing = itemblessing();
|
||||
}
|
||||
|
||||
|
||||
/* this function is used to shuffle the id numbers of scrolls, potions, etc */
|
||||
/* taken from Knuth 2 */
|
||||
void shuffle(int ids[], int number)
|
||||
{
|
||||
int top, swap, with;
|
||||
|
||||
for (top = 0; top < number; top++)
|
||||
ids[top] = top;
|
||||
for (top = number - 1; top >= 0; top--) {
|
||||
swap = ids[top];
|
||||
with = random_range(top + 1); /* from 0 to top, inclusive */
|
||||
ids[top] = ids[with];
|
||||
ids[with] = swap;
|
||||
}
|
||||
}
|
||||
|
||||
/* item name functions */
|
||||
|
||||
char *scrollname(int id)
|
||||
{
|
||||
switch(scroll_ids[id]) {
|
||||
case 0: return "scroll-GRISTOGRUE";
|
||||
case 1: return "scroll-Kho Reck Tighp";
|
||||
case 2: return "scroll-E Z";
|
||||
case 3: return "scroll-Kevitz";
|
||||
case 4: return "scroll-Arcanum Prime";
|
||||
case 5: return "scroll-NYARLATHOTEP";
|
||||
case 6: return "scroll-Gilthoniel";
|
||||
case 7: return "scroll-Zarathustra";
|
||||
case 8: return "scroll-Ancient Lore";
|
||||
case 9: return "scroll-Eyes Only";
|
||||
case 10: return "scroll-Ambogar Empheltz";
|
||||
case 11: return "scroll-Isengard";
|
||||
case 12: return "scroll-Deosil Widdershins";
|
||||
case 13: return "scroll-Magister Paracelsus";
|
||||
case 14: return "scroll-Qlipphotic Summons";
|
||||
case 15: return "scroll-Aratron Samael";
|
||||
case 16: return "scroll-De Wormiis Mysterius";
|
||||
case 17: return "scroll-Necronomicon";
|
||||
case 18: return "scroll-Pnakotic Manuscript";
|
||||
case 19: return "scroll-Codex of Xalimar";
|
||||
case 20: return "scroll-The Mabinogion";
|
||||
case 21: return "scroll-Ginseng Shiatsu";
|
||||
case 22: return "scroll-Tome of Tromax";
|
||||
case 23: return "scroll-Book of the Dead ";
|
||||
case 24: return "scroll-The Flame Tongue";
|
||||
case 25: return "scroll-Karst Khogar";
|
||||
case 26: return "scroll-The Yellow Sign";
|
||||
case 27: return "scroll-The Kevillist Manifesto";
|
||||
case 28: return "scroll-Goshtar Script";
|
||||
default:
|
||||
case 29: return "scroll-Pendragon Encryption";
|
||||
}
|
||||
}
|
||||
|
||||
char *grotname(void)
|
||||
{
|
||||
switch(random_range(21)) {
|
||||
case 0: return "pot lid";
|
||||
case 1: return "mound of offal";
|
||||
case 2: return "sword that was broken";
|
||||
case 3: return "salted snail";
|
||||
case 4: return "key";
|
||||
case 5: return "toadstool";
|
||||
case 6: return "greenish spindle";
|
||||
case 7: return "tin soldier";
|
||||
case 8: return "broken yo-yo";
|
||||
case 9: return "NYC subway map";
|
||||
case 10: return "Nixon's the One! button";
|
||||
case 11: return "beer can (empty)";
|
||||
case 12: return "golden bejewelled falcon";
|
||||
case 13: return "hamster cage";
|
||||
case 14: return "wooden nickel";
|
||||
case 15: return "three-dollar bill";
|
||||
case 16: return "rosebud";
|
||||
case 17: return "water pistol";
|
||||
case 18: return "shattered skull";
|
||||
case 19: return "black bag";
|
||||
default:
|
||||
case 20: return "jawbone of an ass";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
char *potionname(int id)
|
||||
{
|
||||
switch (potion_ids[id]) {
|
||||
case 0: return "vial of dewy liquid";
|
||||
case 1: return "jug of tarry black substance";
|
||||
case 2: return "flask of cold smoking froth";
|
||||
case 3: return "phial of glowing fluid";
|
||||
case 4: return "bottle of sickening slime";
|
||||
case 5: return "sac of greenish gel";
|
||||
case 6: return "wineskin of odorous goo";
|
||||
case 7: return "canteen of sweet sap";
|
||||
case 8: return "urn of clear fluid";
|
||||
case 9: return "clotted grey ooze";
|
||||
case 10: return "keg of bubbly golden fluid";
|
||||
case 11: return "tube of minty paste";
|
||||
case 12: return "pitcher of aromatic liquid";
|
||||
case 13: return "pot of rancid grease";
|
||||
case 14: return "thermos of hot black liquid";
|
||||
case 15: return "magnum of deep red liquid";
|
||||
case 16: return "vase full of ichor";
|
||||
case 17: return "container of white cream";
|
||||
case 18: return "syringe of clear fluid";
|
||||
default:
|
||||
case 19: return "can of volatile essence";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char *stickname(int id)
|
||||
{
|
||||
switch (stick_ids[id]) {
|
||||
case 0: return "oaken staff";
|
||||
case 1: return "heavy metal rod";
|
||||
case 2: return "shaft of congealed light";
|
||||
case 3: return "slender ceramic wand";
|
||||
case 4: return "rune-inscribed bone wand";
|
||||
case 5: return "knurly staff";
|
||||
case 6: return "steel knobbed rod";
|
||||
case 7: return "lucite wand";
|
||||
case 8: return "sturdy alpenstock";
|
||||
case 9: return "gem-studded ebony staff";
|
||||
case 10: return "chromed sequinned staff";
|
||||
case 11: return "old peeling stick";
|
||||
case 12: return "jointed metal rod";
|
||||
case 13: return "wand with lead ferrules";
|
||||
case 14: return "forked wooden stick";
|
||||
case 15: return "cane with gold eagle handle";
|
||||
case 16: return "crystalline wand";
|
||||
case 17: return "metal stick with trigger";
|
||||
case 18: return "leather-handled stone rod";
|
||||
default:
|
||||
case 19: return "tiny mithril wand";
|
||||
}
|
||||
}
|
||||
|
||||
char *ringname(int id)
|
||||
{
|
||||
switch (ring_ids[id]) {
|
||||
case 0: return "gold ring with a blue gem";
|
||||
case 1: return "brass ring";
|
||||
case 2: return "mithril ring with a red gem";
|
||||
case 3: return "platinum ring"; break;
|
||||
case 4: return "gold dragon's head ring";
|
||||
case 5: return "bronze ring";
|
||||
case 6: return "aardvark seal ring";
|
||||
case 7: return "grey metal ring";
|
||||
case 8: return "silver skull ring";
|
||||
case 9: return "onyx ring";
|
||||
case 10: return "Collegium Magii class ring";
|
||||
case 11: return "worn stone ring";
|
||||
case 12: return "diorite ring";
|
||||
case 13: return "ancient scarab ring"; break;
|
||||
case 14: return "plastic charm ring";
|
||||
case 15: return "soapy gypsum ring";
|
||||
case 16: return "glass ring";
|
||||
case 17: return "glowing bluestone ring";
|
||||
case 18: return "ring with eye sigil";
|
||||
default:
|
||||
case 19: return "zirconium ring";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char *cloakname(int id)
|
||||
{
|
||||
switch (cloak_ids[id]) {
|
||||
case 0: return "tattered piece of cloth";
|
||||
case 1: return "fuligin cloak";
|
||||
case 2: return "chintz cloak";
|
||||
case 3: return "diaphanous cape"; break;
|
||||
case 4: return "red half-cloak";
|
||||
case 5: return "mouse-hide cloak";
|
||||
case 6: return "kelly green cloak";
|
||||
case 7: return "cloth-of-gold cloak";
|
||||
case 8: return "dirty old cloak";
|
||||
case 9: return "weightless cloak";
|
||||
case 10: return "boat cloak";
|
||||
case 11: return "greasy tarpaulin";
|
||||
case 12: return "sable cloak";
|
||||
case 13: return "soft velvet cloak"; break;
|
||||
case 14: return "opera cape";
|
||||
case 15: return "elegant brocade cloak";
|
||||
case 16: return "cloak of many colors";
|
||||
case 17: return "grey-green rag";
|
||||
case 18: return "puce and chartreuse cloak";
|
||||
default:
|
||||
case 19: return "smoky cloak";
|
||||
}
|
||||
}
|
||||
|
||||
char *bootname(int id)
|
||||
{
|
||||
switch (boot_ids[id]) {
|
||||
case 0: return "sturdy leather boots";
|
||||
case 1: return "calf-length moccasins";
|
||||
case 2: return "dark-colored tabi";
|
||||
case 3: return "patent-leather shoes"; break;
|
||||
case 4: return "beaten-up gumshoes";
|
||||
case 5: return "alligator-hide boots";
|
||||
case 6: return "comfortable sandals";
|
||||
case 7: return "roller skates";
|
||||
case 8: return "purple suede gaiters";
|
||||
case 9: return "mirror-plated wingtips";
|
||||
case 10: return "heavy workboots";
|
||||
case 11: return "polyurethane-soled sneakers";
|
||||
case 12: return "clodhoppers";
|
||||
case 13: return "wooden shoes"; break;
|
||||
case 14: return "ski boots";
|
||||
case 15: return "hob-nailed boots";
|
||||
case 16: return "elven boots";
|
||||
case 17: return "cowboy boots";
|
||||
case 18: return "flipflop slippers";
|
||||
default:
|
||||
case 19: return "riding boots";
|
||||
}
|
||||
}
|
||||
|
||||
int itemplus(void)
|
||||
{
|
||||
int p = 0;
|
||||
|
||||
while (random_range(2) == 0)
|
||||
p++;
|
||||
return(p);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int itemcharge(void)
|
||||
{
|
||||
return(random_range(20)+1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int itemblessing(void)
|
||||
{
|
||||
switch(random_range(10)) {
|
||||
case 0:
|
||||
case 1:return(-1-random_range(10));
|
||||
case 8:
|
||||
case 9:return(1+random_range(10));
|
||||
default: return(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int twohandedp(int id)
|
||||
{
|
||||
switch(id) {
|
||||
case OB_GREAT_SWORD:
|
||||
case OB_GREAT_AXE:
|
||||
case OB_QUARTERSTAFF:
|
||||
case OB_HALBERD:
|
||||
case OB_LONGBOW:
|
||||
case OB_CROSSBOW:
|
||||
case OB_DESECRATOR:
|
||||
case OB_HEWER:
|
||||
case OB_GIANT_CLUB:
|
||||
case OB_SCYTHE_DEATH:
|
||||
return(TRUE);
|
||||
default: return(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void item_use(pob o)
|
||||
{
|
||||
clearmsg();
|
||||
switch(o->usef) {
|
||||
case -1:i_no_op(o); break;
|
||||
case 0:i_nothing(o); break;
|
||||
|
||||
/* scrolls */
|
||||
case I_SPELLS: i_spells(o); break;
|
||||
case I_BLESS: i_bless(o); break;
|
||||
case I_ACQUIRE: i_acquire(o); break;
|
||||
case I_ENCHANT: i_enchant(o); break;
|
||||
case I_TELEPORT: i_teleport(o); break;
|
||||
case I_WISH: i_wish(o); break;
|
||||
case I_CLAIRVOYANCE: i_clairvoyance(o); break;
|
||||
case I_DISPLACE: i_displace(o); break;
|
||||
case I_ID: i_id(o); break;
|
||||
case I_JANE_T: i_jane_t(o); break;
|
||||
case I_FLUX: i_flux(o); break;
|
||||
case I_WARP: i_warp(o); break;
|
||||
case I_ALERT: i_alert(o); break;
|
||||
case I_CHARGE: i_charge(o); break;
|
||||
case I_KNOWLEDGE: i_knowledge(o); break;
|
||||
case I_LAW: i_law(o); break;
|
||||
case I_HINT: hint(); break;
|
||||
case I_HERO: i_hero(o); break;
|
||||
case I_TRUESIGHT: i_truesight(o); break;
|
||||
case I_ILLUMINATE: i_illuminate(o); break;
|
||||
case I_DEFLECT: i_deflect(o); break;
|
||||
|
||||
/* potion functions */
|
||||
case I_HEAL: i_heal(o); break;
|
||||
case I_OBJDET: i_objdet(o); break;
|
||||
case I_MONDET: i_mondet(o); break;
|
||||
case I_SLEEP_SELF: i_sleep_self(o); break;
|
||||
case I_NEUTRALIZE_POISON: i_neutralize_poison(o); break;
|
||||
case I_RESTORE: i_restore(o); break;
|
||||
case I_SPEED: i_speed(o); break;
|
||||
case I_AZOTH: i_azoth(o); break;
|
||||
case I_AUGMENT: i_augment(o); break;
|
||||
case I_REGENERATE: i_regenerate(o); break;
|
||||
case I_INVISIBLE: i_invisible(o); break;
|
||||
case I_BREATHING: i_breathing(o); break;
|
||||
case I_FEAR_RESIST: i_fear_resist(o); break;
|
||||
case I_CHAOS: i_chaos(o); break;
|
||||
case I_ACCURACY: i_accuracy(o); break;
|
||||
case I_LEVITATION: i_levitate(o); break;
|
||||
case I_CURE: i_cure(o); break;
|
||||
|
||||
/* stick functions */
|
||||
case I_FIREBOLT: i_firebolt(o); break;
|
||||
case I_LBOLT: i_lbolt(o); break;
|
||||
case I_MISSILE: i_missile(o); break;
|
||||
case I_SLEEP_OTHER: i_sleep_other(o); break;
|
||||
case I_FIREBALL: i_fireball(o); break;
|
||||
case I_LBALL: i_lball(o); break;
|
||||
case I_SNOWBALL: i_snowball(o); break;
|
||||
case I_SUMMON: i_summon(o); break;
|
||||
case I_HIDE: i_hide(o); break;
|
||||
case I_DISRUPT: i_disrupt(o); break;
|
||||
case I_DISINTEGRATE: i_disintegrate(o); break;
|
||||
case I_APPORT: i_apport(o); break;
|
||||
case I_DISPEL: i_dispel(o); break;
|
||||
case I_POLYMORPH: i_polymorph(o); break;
|
||||
case I_FEAR:i_fear(o); break;
|
||||
|
||||
/* food functions */
|
||||
case I_FOOD: i_food(o); break;
|
||||
case I_LEMBAS: i_lembas(o); break;
|
||||
case I_STIM: i_stim(o); break;
|
||||
case I_POW: i_pow(o); break;
|
||||
case I_IMMUNE: i_immune(o); break;
|
||||
case I_POISON_FOOD: i_poison_food(o); break;
|
||||
case I_CORPSE: i_corpse(o); break;
|
||||
case I_PEPPER_FOOD: i_pepper_food(o); break;
|
||||
|
||||
/* boots functions */
|
||||
case I_PERM_SPEED: i_perm_speed(o); break;
|
||||
case I_PERM_HERO: i_perm_hero(o); break;
|
||||
case I_PERM_LEVITATE: i_perm_levitate(o); break;
|
||||
case I_PERM_AGILITY: i_perm_agility(o); break;
|
||||
|
||||
/* artifact functions */
|
||||
case I_SCEPTRE:i_sceptre(o);break;
|
||||
case I_PLANES:i_planes(o);break;
|
||||
case I_SERENITY:i_serenity(o);break;
|
||||
case I_STARGEM:i_stargem(o);break;
|
||||
case I_SYMBOL:i_symbol(o); break;
|
||||
case I_ORBMASTERY: i_orbmastery(o); break;
|
||||
case I_ORBFIRE: i_orbfire(o); break;
|
||||
case I_ORBWATER: i_orbwater(o); break;
|
||||
case I_ORBEARTH: i_orbearth(o); break;
|
||||
case I_ORBAIR: i_orbair(o); break;
|
||||
case I_ORBDEAD: i_orbdead(o); break;
|
||||
case I_CRYSTAL: i_crystal(o); break;
|
||||
case I_LIFE: i_life(o); break;
|
||||
case I_DEATH: i_death(o); break;
|
||||
case I_ANTIOCH: i_antioch(o); break;
|
||||
case I_HELM: i_helm(o); break;
|
||||
case I_KOLWYNIA: i_kolwynia(o); break;
|
||||
case I_ENCHANTMENT: i_enchantment(o); break;
|
||||
case I_JUGGERNAUT: i_juggernaut(o); break;
|
||||
case I_HOLDING: i_holding(o); break;
|
||||
|
||||
/* cloak functions */
|
||||
case I_PERM_DISPLACE: i_perm_displace(o); break;
|
||||
case I_PERM_NEGIMMUNE: i_perm_negimmune(o); break;
|
||||
case I_PERM_INVISIBLE: i_perm_invisible(o); break;
|
||||
case I_PERM_PROTECTION: i_perm_protection(o);break;
|
||||
case I_PERM_ACCURACY: i_perm_accuracy(o);break;
|
||||
case I_PERM_TRUESIGHT: i_perm_truesight(o); break;
|
||||
|
||||
/* ring functions */
|
||||
case I_PERM_BURDEN: i_perm_burden(o); break;
|
||||
case I_PERM_STRENGTH: i_perm_strength(o); break;
|
||||
case I_PERM_GAZE_IMMUNE: i_perm_gaze_immune(o); break;
|
||||
case I_PERM_FIRE_RESIST: i_perm_fire_resist(o); break;
|
||||
case I_PERM_POISON_RESIST: i_perm_poison_resist(o); break;
|
||||
case I_PERM_REGENERATE: i_perm_regenerate(o); break;
|
||||
case I_PERM_KNOWLEDGE: i_perm_knowledge(o); break;
|
||||
|
||||
/* armor functions */
|
||||
case I_NORMAL_ARMOR: i_normal_armor(o); break;
|
||||
case I_PERM_FEAR_RESIST: i_perm_fear_resist(o); break;
|
||||
case I_PERM_ENERGY_RESIST: i_perm_energy_resist(o); break;
|
||||
case I_PERM_BREATHING: i_perm_breathing(o); break;
|
||||
|
||||
/* weapons functions */
|
||||
case I_NORMAL_WEAPON: i_normal_weapon(o); break;
|
||||
case I_LIGHTSABRE: i_lightsabre(o); break;
|
||||
case I_DEMONBLADE: i_demonblade(o); break;
|
||||
case I_DESECRATE: i_desecrate(o); break;
|
||||
case I_MACE_DISRUPT: i_mace_disrupt(o); break;
|
||||
case I_DEFEND: i_defend(o); break;
|
||||
case I_VICTRIX: i_victrix(o); break;
|
||||
|
||||
/* thing functions */
|
||||
case I_PICK: i_pick(o); break;
|
||||
case I_KEY: i_key(o); break;
|
||||
case I_PERM_ILLUMINATE: i_perm_illuminate(o); break;
|
||||
case I_TRAP: i_trap(o); break;
|
||||
case I_RAISE_PORTCULLIS:i_raise_portcullis(o); break;
|
||||
|
||||
/* shield functions */
|
||||
case I_NORMAL_SHIELD: i_normal_shield(o); break;
|
||||
case I_PERM_DEFLECT: i_perm_deflect(o); break;
|
||||
#ifdef DEBUG /* WDT: good idea, DG. I'll be using this often, I predict! */
|
||||
/* looking for objects without, or with unimplemented, functions */
|
||||
default:
|
||||
fprintf(DG_debug_log, "tried to use a %s with o->usef %d\n",
|
||||
itemid(o), o->usef);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
990
itemf1.c
Normal file
990
itemf1.c
Normal file
@ -0,0 +1,990 @@
|
||||
/* omega copyright (C) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* itemf1.c */
|
||||
|
||||
/* various item functions: potions,scrolls,boots,cloaks,things,food */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
/* general item functions */
|
||||
|
||||
void i_no_op(pob o)
|
||||
{
|
||||
}
|
||||
|
||||
void i_nothing(pob o)
|
||||
{
|
||||
}
|
||||
|
||||
/* scroll functions */
|
||||
|
||||
void i_knowledge(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
knowledge(o->blessing);
|
||||
}
|
||||
|
||||
static int is_capital_letter (char ch)
|
||||
{
|
||||
if (ch >= 'A' && ch <= 'Z') return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int is_vowel (char ch)
|
||||
{
|
||||
if ('a' == ch) return TRUE;
|
||||
if ('e' == ch) return TRUE;
|
||||
if ('i' == ch) return TRUE;
|
||||
if ('o' == ch) return TRUE;
|
||||
if ('u' == ch) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void i_jane_t (pob o)
|
||||
{
|
||||
int volume;
|
||||
int range_idx;
|
||||
int range_beg;
|
||||
int range_end;
|
||||
char first_letter;
|
||||
|
||||
Objects[o->id].known = 1;
|
||||
|
||||
print1("Jane's Guide to the World's Treasures: ");
|
||||
|
||||
volume = random_range(6);
|
||||
switch (volume)
|
||||
{
|
||||
case 0:
|
||||
nprint1("SCROLLS");
|
||||
range_beg = SCROLLID;
|
||||
range_end = POTIONID;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
nprint1("POTIONS");
|
||||
range_beg = POTIONID;
|
||||
range_end = WEAPONID;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
nprint1("CLOAKS");
|
||||
range_beg = CLOAKID;
|
||||
range_end = BOOTID;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
nprint1("BOOTS");
|
||||
range_beg = BOOTID;
|
||||
range_end = RINGID;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
nprint1("RINGS");
|
||||
range_beg = RINGID;
|
||||
range_end = STICKID;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
nprint1("STICKS");
|
||||
range_beg = STICKID;
|
||||
range_end = ARTIFACTID;
|
||||
break;
|
||||
|
||||
default:
|
||||
/* bomb on error */
|
||||
range_beg = range_end = 0;
|
||||
assert(FALSE);
|
||||
}
|
||||
|
||||
menuclear();
|
||||
menuprint("You could probably now recognise:\n");
|
||||
|
||||
for(range_idx = range_beg; range_idx < range_end; ++range_idx)
|
||||
{
|
||||
Objects[range_idx].known = 1;
|
||||
first_letter = Objects[range_idx].truename[0];
|
||||
|
||||
if (is_capital_letter(first_letter) || volume == 3)
|
||||
sprintf(Str1, " %s\n", Objects[range_idx].truename);
|
||||
else if (is_vowel(first_letter))
|
||||
sprintf(Str1, " an %s\n", Objects[range_idx].truename);
|
||||
else
|
||||
sprintf(Str1, " a %s\n", Objects[range_idx].truename);
|
||||
|
||||
menuprint(Str1);
|
||||
}
|
||||
|
||||
showmenu();
|
||||
morewait();
|
||||
xredraw();
|
||||
}
|
||||
|
||||
|
||||
void i_flux(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
flux(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
/* enchantment */
|
||||
void i_enchant(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
enchant(o->blessing < 0 ? -1-o->plus : o->plus+1);
|
||||
}
|
||||
|
||||
/* scroll of clairvoyance */
|
||||
void i_clairvoyance(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
if (o->blessing < 0)
|
||||
amnesia();
|
||||
else clairvoyance(5+o->blessing*5);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void i_acquire(pob o)
|
||||
{
|
||||
int blessing;
|
||||
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
blessing = o->blessing;
|
||||
*o = Objects[OB_BLANK_SCROLL]; /* blank out the scroll */
|
||||
acquire(blessing);
|
||||
}
|
||||
|
||||
void i_teleport(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
p_teleport(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
void i_spells(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
mprint("A scroll of spells.");
|
||||
morewait();
|
||||
learnspell(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* scroll of blessing */
|
||||
void i_bless(pob o)
|
||||
{
|
||||
Objects[o->id].known = 1;
|
||||
bless(o->blessing);
|
||||
}
|
||||
|
||||
/* scroll of wishing */
|
||||
void i_wish(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
wish(o->blessing);
|
||||
*o = Objects[OB_BLANK_SCROLL]; /* blank out the scroll */
|
||||
}
|
||||
|
||||
/* scroll of displacement */
|
||||
void i_displace(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
displace(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
/* scroll of deflection */
|
||||
void i_deflect(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
deflection(o->blessing);
|
||||
}
|
||||
|
||||
/* scroll of identification */
|
||||
void i_id(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
identify(o->blessing);
|
||||
}
|
||||
|
||||
/* potion functions */
|
||||
|
||||
/* potion of healing */
|
||||
void i_heal(pob o)
|
||||
{
|
||||
if (o->blessing > -1) {
|
||||
Objects[o->id].known = 1;
|
||||
heal(1+o->plus);
|
||||
}
|
||||
else heal(-1-abs(o->plus));
|
||||
}
|
||||
|
||||
/* potion of monster detection */
|
||||
void i_mondet(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
mondet(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
/* potion of object detection */
|
||||
void i_objdet(pob o)
|
||||
{
|
||||
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
objdet(o->blessing);
|
||||
}
|
||||
|
||||
/* potion of neutralize poison */
|
||||
void i_neutralize_poison(pob o)
|
||||
{
|
||||
if (o->blessing > -1) {
|
||||
Objects[o->id].known = 1;
|
||||
mprint("You feel vital!");
|
||||
Player.status[POISONED] = 0;
|
||||
}
|
||||
else p_poison(random_range(20)+5);
|
||||
}
|
||||
|
||||
|
||||
/* potion of sleep */
|
||||
void i_sleep_self(pob o)
|
||||
{
|
||||
sleep_player(6);
|
||||
Objects[o->id].known = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* potion of speed */
|
||||
void i_speed(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
haste(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
/* potion of restoration */
|
||||
void i_restore(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
recover_stat(o->blessing);
|
||||
}
|
||||
|
||||
void i_augment(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
augment(o->blessing);
|
||||
}
|
||||
|
||||
void i_azoth(pob o)
|
||||
{
|
||||
if (o->plus < 0) {
|
||||
mprint("The mercury was poisonous!");
|
||||
p_poison(25);
|
||||
}
|
||||
else if (o->plus == 0) {
|
||||
mprint("The partially enchanted azoth makes you sick!");
|
||||
Player.con = ((int) (Player.con / 2));
|
||||
calc_melee();
|
||||
}
|
||||
else if (o->blessing < 1) {
|
||||
mprint("The unblessed azoth warps your soul!");
|
||||
Player.pow = Player.maxpow = ((int) (Player.maxpow / 2));
|
||||
level_drain(random_range(10),"cursed azoth");
|
||||
}
|
||||
else {
|
||||
mprint("The azoth fills you with cosmic power!");
|
||||
if (Player.str > Player.maxstr*2) {
|
||||
mprint("The power rages out of control!");
|
||||
p_death("overdose of azoth");
|
||||
}
|
||||
else {
|
||||
heal(10);
|
||||
cleanse(1);
|
||||
Player.mana = calcmana()*3;
|
||||
toggle_item_use(TRUE);
|
||||
Player.str = (Player.maxstr++)*3;
|
||||
toggle_item_use(FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void i_regenerate(pob o)
|
||||
{
|
||||
regenerate(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* boots functions */
|
||||
void i_perm_speed(pob o)
|
||||
{
|
||||
if (o->blessing > -1) {
|
||||
if (o->used) {
|
||||
o->known = 2;
|
||||
Objects[o->id].known = 1;
|
||||
if (Player.status[SLOWED] > 0) {
|
||||
Player.status[SLOWED] = 0;
|
||||
}
|
||||
mprint("The world slows down!");
|
||||
Player.status[HASTED] += 1500;
|
||||
}
|
||||
else {
|
||||
Player.status[HASTED] -= 1500;
|
||||
if (Player.status[HASTED] < 1)
|
||||
mprint("The world speeds up again.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (o->used) {
|
||||
if (Player.status[HASTED] > 0) {
|
||||
Player.status[HASTED] = 0;
|
||||
}
|
||||
mprint("You feel slower.");
|
||||
Player.status[SLOWED] += 1500;
|
||||
}
|
||||
else {
|
||||
Player.status[SLOWED] -= 1500;
|
||||
if (Player.status[SLOWED] < 1)
|
||||
mprint("You feel quicker again.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* cloak functions */
|
||||
void i_perm_displace(pob o)
|
||||
{
|
||||
if (o->blessing > -1) {
|
||||
if (o->used) {
|
||||
mprint("You feel dislocated.");
|
||||
Player.status[DISPLACED] += 1500;
|
||||
}
|
||||
else {
|
||||
Player.status[DISPLACED] -= 1500;
|
||||
if (Player.status[DISPLACED] < 1) {
|
||||
mprint("You feel a sense of position.");
|
||||
Player.status[DISPLACED] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (o->used) {
|
||||
mprint("You have a forboding of bodily harm!");
|
||||
Player.status[VULNERABLE] += 1500;
|
||||
}
|
||||
else {
|
||||
Player.status[VULNERABLE] -= 1500;
|
||||
if (Player.status[VULNERABLE] < 1) {
|
||||
mprint("You feel less endangered.");
|
||||
Player.status[VULNERABLE] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void i_perm_negimmune(pob o)
|
||||
{
|
||||
if (o->blessing > -1) {
|
||||
if (o->used) {
|
||||
Player.immunity[NEGENERGY]++;
|
||||
}
|
||||
else Player.immunity[NEGENERGY]--;
|
||||
}
|
||||
else if (o->used)
|
||||
level_drain(abs(o->blessing),"cursed cloak of level drain");
|
||||
}
|
||||
|
||||
/* food functions */
|
||||
|
||||
|
||||
void i_food(pob o)
|
||||
{
|
||||
switch(random_range(6)) {
|
||||
case 0: mprint("That tasted horrible!"); break;
|
||||
case 1: mprint("Yum!"); break;
|
||||
case 2: mprint("How nauseous!"); break;
|
||||
case 3: mprint("Can I have some more? Please?"); break;
|
||||
case 4: mprint("Your mouth feels like it is growing hair!"); break;
|
||||
case 5: mprint("Tastes like home cooking!"); break;
|
||||
}
|
||||
}
|
||||
|
||||
void i_stim(pob o)
|
||||
{
|
||||
mprint("You feel Hyper!");
|
||||
i_speed(o);
|
||||
Player.str +=3;
|
||||
Player.con -=1;
|
||||
calc_melee();
|
||||
}
|
||||
|
||||
void i_pow(pob o)
|
||||
{
|
||||
mprint("You feel a surge of mystic power!");
|
||||
Player.mana = 2 * calcmana();
|
||||
}
|
||||
|
||||
void i_poison_food(pob o)
|
||||
{
|
||||
mprint("This food was contaminated with cyanide!");
|
||||
p_poison(random_range(20)+5);
|
||||
}
|
||||
|
||||
void i_pepper_food(pob o)
|
||||
{
|
||||
mprint("You innocently start to chew the szechuan pepper.....");
|
||||
morewait();
|
||||
mprint("hot.");
|
||||
morewait();
|
||||
mprint("Hot.");
|
||||
morewait();
|
||||
mprint("Hot!");
|
||||
morewait();
|
||||
mprint("HOT!!!!!!");
|
||||
morewait();
|
||||
p_damage(1,UNSTOPPABLE,"a szechuan pepper");
|
||||
mprint("Your sinuses melt and run out your ears.");
|
||||
mprint("Your mouth and throat seem to be permanently on fire.");
|
||||
mprint("You feel much more awake now....");
|
||||
Player.immunity[SLEEP]++;
|
||||
}
|
||||
|
||||
void i_lembas(pob o)
|
||||
{
|
||||
heal(10);
|
||||
cleanse(0);
|
||||
Player.food = 40;
|
||||
}
|
||||
|
||||
|
||||
void i_cure(pob o)
|
||||
{
|
||||
cure(o->blessing);
|
||||
}
|
||||
|
||||
void i_immune(pob o)
|
||||
{
|
||||
if (o->blessing > 0) {
|
||||
mprint("You feel a sense of innoculation");
|
||||
Player.immunity[INFECTION]++;
|
||||
cure(o->blessing);
|
||||
}
|
||||
}
|
||||
|
||||
void i_breathing(pob o)
|
||||
{
|
||||
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
breathe(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
void i_invisible(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
invisible(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
void i_perm_invisible(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
if (o->used) {
|
||||
if (o->blessing > -1) {
|
||||
mprint("You feel transparent!");
|
||||
Player.status[INVISIBLE] += 1500;
|
||||
}
|
||||
else {
|
||||
mprint("You feel a forboding of bodily harm!");
|
||||
Player.status[VULNERABLE] += 1500;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (o->blessing > -1) {
|
||||
Player.status[INVISIBLE]-=1500;
|
||||
if (Player.status[INVISIBLE] < 1) {
|
||||
mprint("You feel opaque again.");
|
||||
Player.status[INVISIBLE] = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Player.status[VULNERABLE] -= 1500;
|
||||
if (Player.status[VULNERABLE] < 1) {
|
||||
mprint("You feel less endangered now.");
|
||||
Player.status[VULNERABLE] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void i_warp(pob o)
|
||||
{
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
warp(o->blessing);
|
||||
}
|
||||
|
||||
|
||||
void i_alert(pob o)
|
||||
{
|
||||
if (o->blessing > -1) {
|
||||
Objects[o->id].known = 1;
|
||||
alert(o->blessing);
|
||||
}
|
||||
}
|
||||
|
||||
void i_charge(pob o)
|
||||
{
|
||||
int i;
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
i = getitem_prompt("A scroll of charging. Charge: ", STICK);
|
||||
if (i != ABORT) {
|
||||
if (o->blessing < 0) {
|
||||
mprint("The stick glows black!");
|
||||
Player.possessions[i]->charge = 0;
|
||||
}
|
||||
else {
|
||||
mprint("The stick glows blue!");
|
||||
Player.possessions[i]->charge += (random_range(10)+1)*(o->blessing+1);
|
||||
if (Player.possessions[i]->charge > 99)
|
||||
Player.possessions[i]->charge = 99;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void i_fear_resist(pob o)
|
||||
{
|
||||
if (o->blessing > -1) {
|
||||
Objects[o->id].known = 1;
|
||||
if (Player.status[AFRAID] > 0) {
|
||||
mprint("You feel stauncher now.");
|
||||
Player.status[AFRAID] = 0;
|
||||
}
|
||||
}
|
||||
else if (! p_immune(FEAR)) {
|
||||
mprint("You panic!");
|
||||
Player.status[AFRAID]+=random_range(100);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* use a thieves pick */
|
||||
void i_pick(pob o)
|
||||
{
|
||||
int dir;
|
||||
int ox,oy;
|
||||
o->used = FALSE;
|
||||
if ((! o->known) && (! Player.rank[THIEVES]))
|
||||
mprint("You have no idea what do with a piece of twisted metal.");
|
||||
else {
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
mprint("Pick lock:");
|
||||
dir = getdir();
|
||||
if (dir == ABORT)
|
||||
resetgamestatus(SKIP_MONSTERS);
|
||||
else {
|
||||
ox = Player.x + Dirs[0][dir];
|
||||
oy = Player.y + Dirs[1][dir];
|
||||
if ((Level->site[ox][oy].locchar != CLOSED_DOOR) ||
|
||||
loc_statusp(ox,oy,SECRET)) {
|
||||
mprint("You can't unlock that!");
|
||||
resetgamestatus(SKIP_MONSTERS);
|
||||
}
|
||||
else if (Level->site[ox][oy].aux == LOCKED) {
|
||||
if (Level->depth == MaxDungeonLevels-1)
|
||||
mprint("The lock is too complicated for you!!!");
|
||||
else if (Level->depth*2 + random_range(50) <
|
||||
Player.dex+Player.level+Player.rank[THIEVES]*10) {
|
||||
mprint("You picked the lock!");
|
||||
Level->site[ox][oy].aux = UNLOCKED;
|
||||
lset(ox, oy, CHANGED);
|
||||
gain_experience(max(3,Level->depth));
|
||||
}
|
||||
else mprint("You failed to pick the lock.");
|
||||
}
|
||||
else mprint("That door is already unlocked!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* use a magic key*/
|
||||
void i_key(pob o)
|
||||
{
|
||||
int dir;
|
||||
int ox,oy;
|
||||
o->used = FALSE;
|
||||
mprint("Unlock door: ");
|
||||
dir = getdir();
|
||||
if (dir == ABORT)
|
||||
resetgamestatus(SKIP_MONSTERS);
|
||||
else {
|
||||
ox = Player.x + Dirs[0][dir];
|
||||
oy = Player.y + Dirs[1][dir];
|
||||
if ((Level->site[ox][oy].locchar != CLOSED_DOOR) ||
|
||||
loc_statusp(ox,oy,SECRET)) {
|
||||
mprint("You can't unlock that!");
|
||||
resetgamestatus(SKIP_MONSTERS);
|
||||
}
|
||||
else if (Level->site[ox][oy].aux == LOCKED) {
|
||||
mprint("The lock clicks open!");
|
||||
Level->site[ox][oy].aux = UNLOCKED;
|
||||
lset(ox, oy, CHANGED);
|
||||
o->blessing--;
|
||||
if ((o->blessing<0)||(Level->depth == MaxDungeonLevels-1)) {
|
||||
mprint("The key disintegrates!");
|
||||
conform_lost_objects(1,o);
|
||||
}
|
||||
else
|
||||
mprint("Your key glows faintly.");
|
||||
}
|
||||
else mprint("That door is already unlocked!");
|
||||
}
|
||||
}
|
||||
|
||||
void i_corpse(pob o)
|
||||
{
|
||||
/* WDT HACK: there are some comments in this function which need
|
||||
* to be backed up with assert(). */
|
||||
/* DAG reply: I don't like to use assert() for minor things like this
|
||||
as the game can safely play on, yet an assert() will cause the game
|
||||
to exit if it fails. Not friendly. Now an error message or error
|
||||
log of some sort would make sense. */
|
||||
/* WDT discussion: there's no law which demands that an assert has to
|
||||
* kill the program -- well, okay, not the standard assert, but I seldom
|
||||
* use that one. And anyhow, we shouldn't distribute a version with the
|
||||
* asserts compiled in; that's against the purpose. */
|
||||
/* object's charge holds the former monster id */
|
||||
switch (o->charge) {
|
||||
case MEND_PRIEST:
|
||||
case ITIN_MERCH:
|
||||
case GUARD:
|
||||
case NPC:
|
||||
case MERCHANT:
|
||||
case ZERO_NPC:
|
||||
case HISCORE_NPC:
|
||||
case APPR_NINJA:
|
||||
case SNEAK_THIEF:
|
||||
case BRIGAND:
|
||||
case GENIN:
|
||||
case MAST_THIEF:
|
||||
case CHUNIN:
|
||||
case JONIN: /* cannibalism */
|
||||
mprint("Yechh! How could you! You didn't even cook him first!");
|
||||
if (Player.alignment > 0) Player.food = 25;
|
||||
else mprint("You'd eat your own grandmother.");
|
||||
if (Player.alignment < 0) mprint("...without salt.");
|
||||
Player.food += 8;
|
||||
Player.alignment -=10;
|
||||
foodcheck();
|
||||
break;
|
||||
case FNORD: /* fnord */
|
||||
mprint("You feel illuminated!");
|
||||
Player.iq++;
|
||||
break;
|
||||
case DENEBIAN: /* denebian slime devil */
|
||||
mprint("I don't believe this. You ate Denebian Slime?");
|
||||
mprint("You deserve a horrible wasting death, uncurable by any means!");
|
||||
break;
|
||||
case DRAGONETTE: /* can't get here... i_usef changed to I_FOOD */
|
||||
mprint("Those dragon-steaks were fantastic!");
|
||||
Player.food=24;
|
||||
foodcheck();
|
||||
break;
|
||||
case BEHEMOTH:
|
||||
mprint("You feel infinitely more virile now.");
|
||||
Player.str = max(Player.str,Player.maxstr+10);
|
||||
Player.food = 24;
|
||||
foodcheck();
|
||||
break;
|
||||
case INVIS_SLAY:
|
||||
mprint("Guess what? You're invisible.");
|
||||
if (Player.status[INVISIBLE] < 1000) Player.status[INVISIBLE] = 666;
|
||||
Player.food+=6;
|
||||
foodcheck();
|
||||
break;
|
||||
case UNICORN:
|
||||
mprint("You ATE a unicorn's horn?!?!?");
|
||||
Player.immunity[POISON]=1000;
|
||||
break;
|
||||
case HORNET: /* can't get here... i_usef changed to I_POISON_FOOD */
|
||||
case GRUNT:
|
||||
case TSETSE: /* can't get here... i_usef changed to I_SLEEP_SELF */
|
||||
case AGGRAVATOR:
|
||||
case BLIPPER: /* can't get here... i_usef changed to I_TELEPORT */
|
||||
case GOBLIN:
|
||||
case GEEK:
|
||||
case NIGHT_GAUNT: /* can't get here... i_usef changed to I_POISON_FOOD */
|
||||
case TOVE:
|
||||
case TASMANIAN:
|
||||
case JUBJUB: /* can't get here... i_usef changed to I_FOOD */
|
||||
case CATEAGLE:
|
||||
mprint("Well, you forced it down. Not much nutrition, though.");
|
||||
Player.food++;
|
||||
foodcheck();
|
||||
break;
|
||||
case SEWER_RAT:
|
||||
case PHANTASTICON: /* can't get here... i_usef changed to I_POISON_FOOD */
|
||||
case EYE: /* can't get here... i_usef changed to I_CLAIRVOYANCE */
|
||||
case NASTY: /* can't get here... i_usef changed to I_INVISIBLE */
|
||||
case CATOBLEPAS:
|
||||
case HAUNT: /* can't get here... i_usef changed to I_POISON_FOOD */
|
||||
case ROUS:
|
||||
case DEATHSTAR: /* can't get here... i_usef changed to I_POISON_FOOD */
|
||||
case EATER:
|
||||
mprint("Oh, yuck. The 'food' seems to be tainted.");
|
||||
mprint("You feel very sick. You throw up.");
|
||||
Player.food = min(Player.food, 4);
|
||||
default: mprint("It proved completely inedible, but you tried anyhow.");
|
||||
}
|
||||
}
|
||||
|
||||
void i_accuracy(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
accuracy(o->blessing);
|
||||
}
|
||||
|
||||
void i_perm_accuracy(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
if ((o->used) && (o->blessing > -1)) {
|
||||
Player.status[ACCURATE] += 1500;
|
||||
mprint("You feel skillful and see bulls' eyes everywhere.");
|
||||
}
|
||||
else {
|
||||
Player.status[ACCURATE] -= 1500;
|
||||
if (Player.status[ACCURATE] < 1) {
|
||||
Player.status[ACCURATE] = 0;
|
||||
calc_melee();
|
||||
mprint("Your vision blurs....");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void i_hero(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
hero(o->blessing);
|
||||
}
|
||||
|
||||
void i_perm_hero(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
if (o->used){
|
||||
if (o->blessing > -1) {
|
||||
Player.status[HERO] += 1500;
|
||||
calc_melee();
|
||||
mprint("You feel super!");
|
||||
}
|
||||
else {
|
||||
Player.status[HERO] = 0;
|
||||
calc_melee();
|
||||
if (! Player.immunity[FEAR]) {
|
||||
Player.status[AFRAID]+=1500;
|
||||
mprint("You feel cowardly....");
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (o->blessing > -1) {
|
||||
Player.status[HERO] -= 1500;
|
||||
if (Player.status[HERO] < 1) {
|
||||
calc_melee();
|
||||
mprint("You feel less super now.");
|
||||
Player.status[HERO] = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Player.status[AFRAID] -= 1500;
|
||||
if (Player.status[AFRAID] < 1) {
|
||||
mprint("You finally conquer your fear.");
|
||||
Player.status[AFRAID] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void i_levitate(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
levitate(o->blessing);
|
||||
}
|
||||
|
||||
void i_perm_levitate(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
if (o->blessing > -1) {
|
||||
if (o->used) {
|
||||
Player.status[LEVITATING] += 1400;
|
||||
mprint("You start to float a few inches above the floor");
|
||||
mprint("You find you can easily control your altitude");
|
||||
}
|
||||
else {
|
||||
Player.status[LEVITATING] -= 1500;
|
||||
if (Player.status[LEVITATING] < 1) {
|
||||
Player.status[LEVITATING] = 0;
|
||||
mprint("You sink to the floor.");
|
||||
}
|
||||
}
|
||||
}
|
||||
else i_perm_burden(o);
|
||||
}
|
||||
|
||||
void i_perm_protection(pob o)
|
||||
{
|
||||
if (o->used){
|
||||
if (o->blessing > -1)
|
||||
Player.status[PROTECTION] += abs(o->plus)+1;
|
||||
else
|
||||
Player.status[PROTECTION] -= abs(o->plus)+1;
|
||||
}
|
||||
else {
|
||||
if (o->blessing > -1)
|
||||
Player.status[PROTECTION] -= abs(o->plus)+1;
|
||||
else
|
||||
Player.status[PROTECTION] += abs(o->plus)+1;
|
||||
}
|
||||
calc_melee();
|
||||
}
|
||||
|
||||
void i_perm_agility(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 2;
|
||||
Objects[o->id].known = 1;
|
||||
if (o->used){
|
||||
if (o->blessing > -1)
|
||||
Player.agi += abs(o->plus)+1;
|
||||
else
|
||||
Player.agi -= abs(o->plus)+1;
|
||||
}
|
||||
else {
|
||||
if (o->blessing > -1)
|
||||
Player.agi -= abs(o->plus)+1;
|
||||
else
|
||||
Player.agi += abs(o->plus)+1;
|
||||
}
|
||||
calc_melee();
|
||||
}
|
||||
|
||||
void i_truesight(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
truesight(o->blessing);
|
||||
}
|
||||
|
||||
void i_perm_truesight(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
if (o->used){
|
||||
if (o->blessing > -1) {
|
||||
Player.status[TRUESIGHT] += 1500;
|
||||
mprint("You feel sharp!");
|
||||
}
|
||||
else {
|
||||
Player.status[BLINDED] += 1500;
|
||||
mprint("You've been blinded!");
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (o->blessing > -1) {
|
||||
Player.status[TRUESIGHT] -= 1500;
|
||||
if (Player.status[TRUESIGHT] < 1) {
|
||||
mprint("You feel less keen now.");
|
||||
Player.status[TRUESIGHT] = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Player.status[BLINDED] -= 1500;
|
||||
if (Player.status[BLINDED] < 1) {
|
||||
mprint("You can see again!");
|
||||
Player.status[BLINDED] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void i_illuminate(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
illuminate(o->blessing);
|
||||
}
|
||||
|
||||
void i_perm_illuminate(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
if (o->used)
|
||||
Player.status[ILLUMINATION]+=1500;
|
||||
else
|
||||
Player.status[ILLUMINATION]=max(0,Player.status[ILLUMINATION]-1500);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void i_trap(pob o)
|
||||
{
|
||||
Objects[o->id].known = 1;
|
||||
|
||||
if ((Level->site[Player.x][Player.y].locchar != FLOOR) ||
|
||||
(Level->site[Player.x][Player.y].p_locf != L_NO_OP))
|
||||
mprint("Your attempt fails.");
|
||||
else if (! o->known) {
|
||||
mprint("Fiddling with the thing, you have a small accident....");
|
||||
p_movefunction(o->aux);
|
||||
}
|
||||
else {
|
||||
mprint("You successfully set a trap at your location.");
|
||||
Level->site[Player.x][Player.y].p_locf = o->aux;
|
||||
lset(Player.x, Player.y, CHANGED);
|
||||
}
|
||||
dispose_lost_objects(1,o);
|
||||
}
|
||||
|
||||
|
||||
void i_raise_portcullis(pob o)
|
||||
{
|
||||
l_raise_portcullis();
|
||||
mprint("The box beeps once and explodes in your hands!");
|
||||
conform_lost_objects(1,o);
|
||||
}
|
||||
|
522
itemf2.c
Normal file
522
itemf2.c
Normal file
@ -0,0 +1,522 @@
|
||||
/* omega copyright (C) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* itemf2.c */
|
||||
|
||||
/* mostly ring, armor, and weapon functions */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
|
||||
|
||||
/* ring functions */
|
||||
void i_perm_knowledge(pob o)
|
||||
{
|
||||
if (o->known < 1)
|
||||
o->known = 1;
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
/* DAG hack for mirror of self-knowledge
|
||||
if (o->used)
|
||||
knowledge(o->blessing);
|
||||
*/
|
||||
knowledge(o->blessing);
|
||||
}
|
||||
|
||||
void i_perm_strength(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
if (o->used){
|
||||
if (o->blessing > -1)
|
||||
Player.str += abs(o->plus)+1;
|
||||
else
|
||||
Player.str -= abs(o->plus)+1;
|
||||
}
|
||||
else {
|
||||
if (o->blessing > -1)
|
||||
Player.str -= abs(o->plus)+1;
|
||||
else
|
||||
Player.str += abs(o->plus)+1;
|
||||
}
|
||||
calc_melee();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void i_perm_burden(pob o)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (o->used) {
|
||||
o->weight = 1000;
|
||||
mprint("You feel heavier.");
|
||||
}
|
||||
else {
|
||||
o->weight = 1;
|
||||
mprint("Phew. What a relief.");
|
||||
}
|
||||
Player.itemweight = 0;
|
||||
for (i=0;i<MAXITEMS;i++) {
|
||||
if (Player.possessions[i] != NULL)
|
||||
Player.itemweight +=
|
||||
(Player.possessions[i]->weight*Player.possessions[i]->number);
|
||||
}
|
||||
}
|
||||
|
||||
void i_perm_gaze_immune(pob o)
|
||||
{
|
||||
if (o->used) Player.immunity[GAZE]++;
|
||||
else Player.immunity[GAZE]--;
|
||||
}
|
||||
|
||||
void i_perm_fire_resist(pob o)
|
||||
{
|
||||
if (o->used) Player.immunity[FLAME]++;
|
||||
else Player.immunity[FLAME]--;
|
||||
}
|
||||
|
||||
void i_perm_poison_resist(pob o)
|
||||
{
|
||||
if (o->used) {
|
||||
if (o->blessing < 0) {
|
||||
Player.immunity[POISON] = 0;
|
||||
p_poison(100);
|
||||
}
|
||||
else {
|
||||
Player.immunity[POISON]++;
|
||||
if (Player.status[POISONED] > 0) {
|
||||
mprint("You feel much better now.");
|
||||
Player.status[POISONED] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
Player.status[POISONED] = 0;
|
||||
Player.immunity[POISON]--;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void i_perm_regenerate(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
if (o->used) {
|
||||
mprint("You seem abnormally healthy.");
|
||||
Player.status[REGENERATING] += 1500;
|
||||
}
|
||||
else {
|
||||
Player.status[REGENERATING] -= 1500;
|
||||
if (Player.status[REGENERATING] < 1) {
|
||||
mprint("Your vitality is back to normal");
|
||||
Player.status[REGENERATING] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* armor functions */
|
||||
|
||||
|
||||
void i_normal_armor(pob o)
|
||||
{
|
||||
if (o->used) mprint("You put on your suit of armor.");
|
||||
}
|
||||
|
||||
void i_perm_energy_resist(pob o)
|
||||
{
|
||||
if (o->used){
|
||||
Player.immunity[FLAME]++;
|
||||
Player.immunity[COLD]++;
|
||||
Player.immunity[ELECTRICITY]++;
|
||||
}
|
||||
else {
|
||||
Player.immunity[FLAME]--;
|
||||
Player.immunity[COLD]--;
|
||||
Player.immunity[ELECTRICITY]--;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void i_perm_fear_resist(pob o)
|
||||
{
|
||||
if (o->used){
|
||||
Player.immunity[FEAR]++;
|
||||
if (o->blessing < 0) {
|
||||
Player.status[BERSERK] += 1500;
|
||||
mprint("You feel blood-simple!");
|
||||
}
|
||||
}
|
||||
else {
|
||||
Player.immunity[FEAR]--;
|
||||
if (o->blessing < 0) {
|
||||
Player.status[BERSERK] -= 1500;
|
||||
if (Player.status[BERSERK] < 1) {
|
||||
mprint("You feel less rabid now.");
|
||||
Player.status[BERSERK] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void i_perm_breathing(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 1;
|
||||
if (o->blessing > -1)
|
||||
Objects[o->id].known = 1;
|
||||
|
||||
if (o->blessing > -1) {
|
||||
if (o->used) {
|
||||
mprint("Your breath is energized!");
|
||||
Player.status[BREATHING] += 1500;
|
||||
}
|
||||
else {
|
||||
Player.status[BREATHING] -= 1500;
|
||||
if (Player.status[BREATHING] < 1) {
|
||||
mprint("Your breathing is back to normal.");
|
||||
Player.status[BREATHING] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (o->used) {
|
||||
Player.status[BREATHING] = 0;
|
||||
p_drown();
|
||||
print1("Water pours from the broken suit.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* weapons functions */
|
||||
|
||||
void weapon_acidwhip(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if ((random_range(2) == 1) && (! m_immunityp(m,NORMAL_DAMAGE))) {
|
||||
mprint("You entangle the monster!");
|
||||
m_status_reset(m,MOBILE);
|
||||
}
|
||||
p_hit(m,Player.dmg+dmgmod,ACID);
|
||||
|
||||
}
|
||||
|
||||
void weapon_scythe(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
mprint("Slice!");
|
||||
m_death(m);
|
||||
if (! Player.rank[ADEPT]) {
|
||||
mprint("Ooops!");
|
||||
mprint("You accidentally touch yourself on the backswing....");
|
||||
p_death("the Scythe of Death");
|
||||
}
|
||||
}
|
||||
|
||||
void weapon_demonblade(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if (o->blessing > -1) {
|
||||
mprint("Demonblade disintegrates with a soft sigh.");
|
||||
mprint("You stop foaming at the mouth.");
|
||||
Player.status[BERSERK] = 0;
|
||||
conform_lost_object(o);
|
||||
}
|
||||
else if (m->specialf == M_SP_DEMON) {
|
||||
mprint("The demon flees in terror before your weapon!");
|
||||
m_vanish(m);
|
||||
}
|
||||
else if (m->meleef != M_MELEE_SPIRIT) {
|
||||
if (m->level > random_range(10)) {
|
||||
if( Player.hp < Player.maxhp )
|
||||
Player.hp = min(Player.maxhp,Player.hp+m->hp);
|
||||
Player.str++;
|
||||
if( Player.pow < Player.maxpow )
|
||||
Player.pow = min(Player.maxpow,Player.pow+m->level);
|
||||
m_death(m);
|
||||
mprint("You feel a surge of raw power from Demonblade!");
|
||||
}
|
||||
else p_hit(m,Player.dmg+dmgmod,NORMAL_DAMAGE);
|
||||
|
||||
}
|
||||
else {
|
||||
mprint("Demonblade howls as it strikes the spirit!");
|
||||
if (random_range(10) == 1) {
|
||||
mprint("... and shatters into a thousand lost fragments!");
|
||||
morewait();
|
||||
p_damage(50,UNSTOPPABLE,"Demonblade exploding");
|
||||
conform_lost_object(o);
|
||||
}
|
||||
else {
|
||||
mprint("You feel your lifeforce draining....");
|
||||
p_damage(25,UNSTOPPABLE,"a backlash of negative energies");
|
||||
Player.str -= 3;
|
||||
Player.con -= 3;
|
||||
if (Player.str < 1 || Player.con < 1)
|
||||
p_death("a backlash of negative energies");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void weapon_lightsabre(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if (! o->known) {
|
||||
mprint("Fumbling with the cylinder, you press the wrong stud....");
|
||||
p_damage(100,UNSTOPPABLE,"fumbling with a lightsabre");
|
||||
o->known = 1;
|
||||
}
|
||||
else {
|
||||
/* test prevents confusing immunity messages.... */
|
||||
if (! m_immunityp(m,NORMAL_DAMAGE)) {
|
||||
mprint("Vzzzzmmm!");
|
||||
m_damage(m,20,NORMAL_DAMAGE);
|
||||
}
|
||||
if ((m->hp>0) && (! m_immunityp(m,FLAME))) {
|
||||
mprint("Zzzzap!");
|
||||
m_damage(m,20,FLAME);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void weapon_tangle(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if ((random_range(2) == 1) && (! m_immunityp(m,NORMAL_DAMAGE))) {
|
||||
mprint("You entangle the monster!");
|
||||
m_status_reset(m,MOBILE);
|
||||
}
|
||||
p_hit(m,Player.dmg+dmgmod,NORMAL_DAMAGE);
|
||||
}
|
||||
|
||||
/* if wielding a bow, add bow damage to arrow damage */
|
||||
void weapon_arrow(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if ((Player.possessions[O_WEAPON_HAND] != NULL) &&
|
||||
(Player.possessions[O_WEAPON_HAND]->id == OB_LONGBOW)) /* ie, using a bow */
|
||||
p_hit(m,Player.dmg+o->plus+o->dmg+dmgmod,NORMAL_DAMAGE);
|
||||
else p_hit(m,o->plus+o->dmg+dmgmod,NORMAL_DAMAGE);
|
||||
}
|
||||
|
||||
/* if wielding a crossbow, add bow damage to arrow damage */
|
||||
void weapon_bolt(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if ((Player.possessions[O_WEAPON_HAND] != NULL) &&
|
||||
(Player.possessions[O_WEAPON_HAND]->id == OB_CROSSBOW) && /*ie using a crossbow */
|
||||
(Player.possessions[O_WEAPON_HAND]->aux==LOADED)) {
|
||||
p_hit(m,Player.dmg+o->plus+o->dmg+dmgmod,NORMAL_DAMAGE);
|
||||
Player.possessions[O_WEAPON_HAND]->aux = UNLOADED;
|
||||
}
|
||||
else p_hit(m,o->plus+o->dmg,NORMAL_DAMAGE);
|
||||
}
|
||||
|
||||
|
||||
void weapon_mace_disrupt(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if (m->meleef == M_MELEE_SPIRIT) {
|
||||
mprint("The monster crumbles away to dust!");
|
||||
m_death(m);
|
||||
}
|
||||
else p_hit(m,Player.dmg+dmgmod,UNSTOPPABLE);
|
||||
}
|
||||
|
||||
void weapon_normal_hit(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
p_hit(m,Player.dmg+dmgmod,NORMAL_DAMAGE);
|
||||
}
|
||||
|
||||
|
||||
/* will be updated eventually */
|
||||
void weapon_bare_hands(int dmgmod, pmt m)
|
||||
{
|
||||
|
||||
p_hit(m,Player.dmg+dmgmod,NORMAL_DAMAGE);
|
||||
}
|
||||
|
||||
|
||||
void i_demonblade(pob o)
|
||||
{
|
||||
if (o->used) {
|
||||
o->known = 2;
|
||||
mprint("Demonblade's fangs open and bury themselves in your wrist!");
|
||||
mprint("You hear evil laughter in the distance....");
|
||||
mprint("You begin to foam at the mouth!");
|
||||
Player.status[BERSERK] = 1500;
|
||||
}
|
||||
else {
|
||||
mprint("You hear a sound like a demon cursing.");
|
||||
mprint("You feel less like biting your shield.");
|
||||
Player.status[BERSERK] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void i_normal_weapon(pob o)
|
||||
{
|
||||
if (o->used) mprint("You ready your weapon for battle.");
|
||||
}
|
||||
|
||||
void i_lightsabre(pob o)
|
||||
{
|
||||
if (o->used) mprint("You feel one with the Force.");
|
||||
else mprint("You feel out of touch with the Force.");
|
||||
}
|
||||
|
||||
void i_mace_disrupt(pob o)
|
||||
{
|
||||
mprint("That's a damned heavy mace!");
|
||||
}
|
||||
|
||||
|
||||
void weapon_vorpal(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if ((random_range(10) < 3) && (! m_immunityp(m,NORMAL_DAMAGE))) {
|
||||
o->known = 2;
|
||||
if (random_range(2) == 1)
|
||||
mprint("One Two! One Two! And through and through!");
|
||||
else mprint("Your vorpal blade goes snicker-snack!");
|
||||
m_death(m);
|
||||
}
|
||||
else weapon_normal_hit(dmgmod,o,m);
|
||||
}
|
||||
|
||||
void weapon_desecrate(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
o->known = 2;
|
||||
if (Player.alignment < 0) {
|
||||
mprint("Your opponent screams in agony!");
|
||||
p_hit(m,Player.dmg+dmgmod,UNSTOPPABLE);
|
||||
Player.alignment--;
|
||||
if (Player.hp < Player.maxhp) {
|
||||
mprint("You feel a thrill of power surging up your blade!");
|
||||
Player.hp = min(Player.maxhp,Player.hp+Player.dmg+dmgmod);
|
||||
}
|
||||
}
|
||||
else {
|
||||
mprint("Your blade turns in your hands and hits you!");
|
||||
mprint("You hear evil laughter....");
|
||||
level_drain(Player.dmg,"the sword Desecrator");
|
||||
Player.alignment-=10;
|
||||
mprint("A strange force spreads from the wound throughout your body...");
|
||||
mprint("You feel much more chaotic now.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void weapon_firestar(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if (random_range(3) == 1) {
|
||||
o->known = 2;
|
||||
fball(Player.x,Player.y,Player.x,Player.y,max(Player.dmg,25));
|
||||
}
|
||||
if (m->hp > 0) weapon_normal_hit(dmgmod,o,m);
|
||||
}
|
||||
|
||||
void weapon_defend(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if ((Player.alignment < 0) && (o->blessing > 0)) {
|
||||
mprint("The Holy Defender screams in your hands....");
|
||||
mprint("You stagger before the sound of its rage....");
|
||||
p_damage(50,UNSTOPPABLE,"a pissed-off Holy Defender");
|
||||
mprint("The weapon finally quiets. It seems less holy now.");
|
||||
o->truename = o->cursestr;
|
||||
Player.status[PROTECTION] -= (o->hit);
|
||||
o->plus = 0-abs(o->plus);
|
||||
o->blessing = -1;
|
||||
}
|
||||
if ((o->blessing > 0) &&
|
||||
((m->specialf == M_SP_DEMON) ||
|
||||
(m->meleef == M_MELEE_SPIRIT))) {
|
||||
mprint("Your opponent shies back before your holy weapon!");
|
||||
m->hit = 0;
|
||||
m->speed *=2;
|
||||
}
|
||||
weapon_normal_hit(dmgmod,o,m);
|
||||
}
|
||||
|
||||
void weapon_victrix(int dmgmod, pob o, pmt m)
|
||||
{
|
||||
if (m->meleef == M_MELEE_SPIRIT) {
|
||||
mprint("Your opponent dissipates in a harmless cloud of vapors...");
|
||||
m_death(m);
|
||||
}
|
||||
else weapon_normal_hit(dmgmod,o,m);
|
||||
}
|
||||
|
||||
void i_defend(pob o)
|
||||
{
|
||||
o->known = 2;
|
||||
if (o->used) {
|
||||
mprint("You feel under an aegis!");
|
||||
Player.status[PROTECTION] += o->hit;
|
||||
}
|
||||
else Player.status[PROTECTION] -= o->hit;
|
||||
}
|
||||
|
||||
|
||||
void i_victrix(pob o)
|
||||
{
|
||||
o->known = 2;
|
||||
o->blessing = abs(o->blessing);
|
||||
if (o->used) {
|
||||
Player.immunity[POISON]++;
|
||||
Player.immunity[FEAR]++;
|
||||
Player.immunity[INFECTION]++;
|
||||
}
|
||||
else {
|
||||
Player.immunity[POISON]--;
|
||||
Player.immunity[FEAR]--;
|
||||
Player.immunity[INFECTION]--;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void i_desecrate(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 2;
|
||||
if (o->blessing > 0) {
|
||||
mprint("How weird, a blessed desecrator... ");
|
||||
mprint("The structure of reality cannot permit such a thing....");
|
||||
dispose_lost_objects(1,o);
|
||||
}
|
||||
else if (Level->site[Player.x][Player.y].locchar == ALTAR)
|
||||
sanctify(-1);
|
||||
}
|
||||
|
||||
|
||||
/* shield functions */
|
||||
void i_normal_shield(pob o)
|
||||
{
|
||||
if (o->used) mprint("You sling your shield across a forearm.");
|
||||
}
|
||||
|
||||
|
||||
void i_perm_deflect(pob o)
|
||||
{
|
||||
if (o->known < 1) o->known = 2;
|
||||
if (o->blessing > -1) {
|
||||
if (o->used) {
|
||||
mprint("You feel buffered.");
|
||||
Player.status[DEFLECTION] += 1500;
|
||||
}
|
||||
else {
|
||||
Player.status[DEFLECTION] -= 1500;
|
||||
if (Player.status[DEFLECTION] < 1) {
|
||||
mprint("You feel less defended");
|
||||
Player.status[DEFLECTION] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (o->used) {
|
||||
mprint("You feel naked.");
|
||||
Player.status[VULNERABLE] += 1500;
|
||||
Player.status[DEFLECTION] = 0;
|
||||
}
|
||||
else {
|
||||
Player.status[VULNERABLE] -= 1500;
|
||||
if (Player.status[VULNERABLE] < 1) {
|
||||
mprint("You feel less vulnerable");
|
||||
Player.status[VULNERABLE] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
900
itemf3.c
Normal file
900
itemf3.c
Normal file
@ -0,0 +1,900 @@
|
||||
/* omega copyright (C) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* itemf3.c */
|
||||
|
||||
/* mostly artifact and stick functions */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
/* amulet of the planes */
|
||||
void i_planes(pob o)
|
||||
{
|
||||
if (Player.mana < 1) print1("The amulet spits some multicolored sparks.");
|
||||
else {
|
||||
print1("You focus mana into the amulet....");
|
||||
Player.mana = max(0,Player.mana-100);
|
||||
dataprint();
|
||||
morewait();
|
||||
strategic_teleport(1);
|
||||
}
|
||||
}
|
||||
|
||||
/* amulet of serenity */
|
||||
void i_serenity(pob o)
|
||||
{
|
||||
if (Player.mana < 1) print1("The amulet emits a dull ring.");
|
||||
/* should the amulet drop_at a real ring? */
|
||||
else {
|
||||
print1("You focus your will with the amulet....");
|
||||
Player.mana = max(0,Player.mana-10);
|
||||
Player.maxhp -= 1;
|
||||
Player.hp = Player.maxhp;
|
||||
dataprint();
|
||||
morewait();
|
||||
|
||||
s_restore();
|
||||
s_cure();
|
||||
s_breathe();
|
||||
s_alert();
|
||||
/* artifacts should have a unique function... PGM */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* the sceptre of high magic */
|
||||
void i_sceptre(pob o)
|
||||
{
|
||||
if (HiMagicUse == Date)
|
||||
print1("The Sceptre makes a sort of dull 'thut' noise.");
|
||||
else if (Current_Environment == E_CIRCLE || Current_Environment == E_ASTRAL)
|
||||
{
|
||||
HiMagicUse = Date; /* WDT: this looks like it's a good place to use
|
||||
* the batteries. */
|
||||
print1("The Sceptre warps strangely for a second, and then subsides.");
|
||||
morewait();
|
||||
print2("You smell ozone."); /* WDT: explain the battery use. */
|
||||
}
|
||||
else {
|
||||
HiMagicUse = Date;
|
||||
print1("With a shriek of tearing aether, a magic portal appears!");
|
||||
print2("Step through? [yn] ");
|
||||
if (ynq()=='y') change_environment(E_COURT);
|
||||
print1("The sceptre seems to subside. You hear a high whine, as of");
|
||||
print2("capacitors beginning to recharge.");
|
||||
morewait();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* the star gem */
|
||||
void i_stargem(pob o)
|
||||
{
|
||||
if (StarGemUse == Date) {
|
||||
print1("The Star Gem glints weakly as if to say:");
|
||||
print2("'You have used me overmuch.'");
|
||||
print3("and it vanishes a puff of regret.");
|
||||
Objects[o->id].uniqueness = UNIQUE_UNMADE;
|
||||
/* it's now out there, somewhere */
|
||||
dispose_lost_objects(1,o);
|
||||
}
|
||||
else {
|
||||
StarGemUse = Date;
|
||||
if (o->blessing < 1) {
|
||||
print1("The Star Gem shines brightly and emits a musical tone.");
|
||||
print2("You see a dark cloud roil away from it.");
|
||||
morewait();
|
||||
o->blessing = 10;
|
||||
}
|
||||
print1("The star gem flares with golden light!");
|
||||
morewait();
|
||||
if (Player.status[ILLUMINATION] < 1000) {
|
||||
print1("Interesting, you seem to be permanently accompanied");
|
||||
print2("by a friendly lambent glow....");
|
||||
morewait();
|
||||
Player.status[ILLUMINATION] = 1500;
|
||||
}
|
||||
print1("You suddenly find yourself whisked away by some unknown force!");
|
||||
morewait();
|
||||
setgamestatus(COMPLETED_ASTRAL);
|
||||
change_environment(E_COUNTRYSIDE);
|
||||
Player.x = 61;
|
||||
Player.y = 3;
|
||||
screencheck(Player.x,Player.y);
|
||||
drawvision(Player.x,Player.y);
|
||||
locprint("Star Peak");
|
||||
Country[Player.x][Player.y].current_terrain_type =
|
||||
Country[Player.x][Player.y].base_terrain_type;
|
||||
c_set(Player.x, Player.y, CHANGED);
|
||||
print2("The Star Gem's brilliance seems to fade.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* wand of fear */
|
||||
void i_fear(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
Objects[o->id].known = 1;
|
||||
o->known = max(1,o->known);
|
||||
setspot(&x,&y);
|
||||
if (o->blessing < 0) {
|
||||
x = Player.x;
|
||||
y = Player.y;
|
||||
}
|
||||
inflict_fear(x,y);
|
||||
}
|
||||
|
||||
|
||||
void i_juggernaut(pob o)
|
||||
{
|
||||
int d,x=Player.x,y=Player.y;
|
||||
int seen = 1, not_seen = 0;
|
||||
int tunneled = 0;
|
||||
|
||||
print1("You activate the Juggernaut of Karnak!");
|
||||
if (! o->known) {
|
||||
print2("Uh, oh, it's coming this way!");
|
||||
p_death("the Juggernaut of Karnak");
|
||||
}
|
||||
else {
|
||||
d = getdir();
|
||||
if (d == ABORT)
|
||||
print2("You deactivate the Juggernaut before it escapes.");
|
||||
else {
|
||||
print1("Vroom! ");
|
||||
while (inbounds(x+Dirs[0][d],y+Dirs[1][d])) {
|
||||
x+=Dirs[0][d];
|
||||
y+=Dirs[1][d];
|
||||
if (!view_unblocked(x, y) || offscreen(x,y))
|
||||
seen = 0;
|
||||
if (Level->site[x][y].locchar == WALL)
|
||||
tunneled++;
|
||||
if (Level->site[x][y].locchar != WATER &&
|
||||
Level->site[x][y].locchar != VOID_CHAR &&
|
||||
Level->site[x][y].locchar != ABYSS &&
|
||||
Level->site[x][y].locchar != SPACE &&
|
||||
Level->site[x][y].locchar != LAVA)
|
||||
{
|
||||
Level->site[x][y].locchar = FLOOR;
|
||||
Level->site[x][y].p_locf = L_NO_OP;
|
||||
}
|
||||
lreset(x, y, SECRET);
|
||||
lset(x, y, CHANGED);
|
||||
if (Level->site[x][y].creature != NULL) {
|
||||
if (seen)
|
||||
nprint1("Splat! ");
|
||||
else
|
||||
not_seen++;
|
||||
setgamestatus(SUPPRESS_PRINTING);
|
||||
m_death(Level->site[x][y].creature);
|
||||
resetgamestatus(SUPPRESS_PRINTING);
|
||||
}
|
||||
plotspot(x, y, FALSE);
|
||||
omshowcursor(x, y);
|
||||
}
|
||||
if (not_seen > 6)
|
||||
print2("You hear many distant screams...");
|
||||
else if (not_seen > 3)
|
||||
print2("You hear several distant screams...");
|
||||
else if (not_seen > 1)
|
||||
print2("You hear a couple of distant screams...");
|
||||
else if (not_seen == 1)
|
||||
print2("You hear a distant scream...");
|
||||
gain_experience(1000);
|
||||
dispose_lost_objects(1,o);
|
||||
Level->tunnelled += tunneled - 1;
|
||||
tunnelcheck();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void i_symbol(pob o)
|
||||
{
|
||||
int i;
|
||||
if (! o->known)
|
||||
print1("Nothing seems to happen.");
|
||||
/* if o->charge != 17, then symbol was stolen from own high priest! */
|
||||
else if ((o->aux != Player.patron) || (o->charge != 17)){
|
||||
print1("You invoke the deity...");
|
||||
print2("...who for some reason seems rather annoyed at you...");
|
||||
print3("You are enveloped in Godsfire!");
|
||||
morewait();
|
||||
for(;Player.hp>1;Player.hp--)
|
||||
dataprint();
|
||||
morewait();
|
||||
for(i=0;i<MAXITEMS;i++)
|
||||
if (Player.possessions[i] != NULL)
|
||||
dispose_lost_objects(Player.possessions[i]->number,
|
||||
Player.possessions[i]);
|
||||
Player.mana = 0;
|
||||
dataprint();
|
||||
}
|
||||
else if ( (SymbolUseDay == day() ) && (SymbolUseHour == hour())) {
|
||||
print1("Your deity frowns upon this profligate use of power...");
|
||||
print2("Shazam! A bolt of Godsfire! Your symbol shatters!");
|
||||
dispose_lost_objects(1,o);
|
||||
Player.hp = 1;
|
||||
dataprint();
|
||||
}
|
||||
else {
|
||||
print1("A mystic flow of theurgic energy courses through your body!");
|
||||
SymbolUseHour = hour();
|
||||
SymbolUseDay = day();
|
||||
cleanse(1);
|
||||
heal(10);
|
||||
Player.mana = max(Player.mana,calcmana());
|
||||
dataprint();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void i_crystal(pob o)
|
||||
{
|
||||
if (!o->known) print1("You can't figure out how to activate this orb.");
|
||||
else {
|
||||
print1("You gaze into your crystal ball.");
|
||||
if ( (ViewDay == day()) && (ViewHour == hour())) print2("All you get is Gilligan's Island reruns.");
|
||||
else if ((o->blessing<0) || (Player.iq+Player.level < random_range(30))) {
|
||||
ViewHour = hour();
|
||||
ViewDay = day();
|
||||
print2("Weird interference patterns from the crystal fog your mind....");
|
||||
amnesia();
|
||||
}
|
||||
else {
|
||||
ViewHour = hour();
|
||||
ViewDay = day();
|
||||
print2("You sense the presence of life...");
|
||||
mondet(1);
|
||||
morewait();
|
||||
print2("You sense the presence of objects...");
|
||||
objdet(1);
|
||||
morewait();
|
||||
print2("You begin to see visions of things beyond your ken....");
|
||||
hint();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void i_antioch(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
int count;
|
||||
if (!o->known){
|
||||
print1("Ka-Boom!");
|
||||
print2("You seem to have annihilated yourself.");
|
||||
p_death("the Holy Hand-Grenade of Antioch");
|
||||
}
|
||||
else {
|
||||
print1("Bring out the Holy Hand-Grenade of Antioch!");
|
||||
setspot(&x,&y);
|
||||
print2("Ok, you pull the pin.....");
|
||||
morewait();
|
||||
print1("What do you count up to? ");
|
||||
count = (int) parsenum("");
|
||||
if ((count < 3)&&(Level->site[x][y].creature!=NULL)) {
|
||||
print1("`Three shall be the number of thy counting....");
|
||||
print2("And the number of thy counting shall be three.'");
|
||||
print3("Your target picks up the grenade and throws it back!");
|
||||
morewait();
|
||||
clearmsg();
|
||||
print1("Ka-Boom!");
|
||||
p_death("the Holy Hand-Grenade of Antioch");
|
||||
}
|
||||
else if (count>3) {
|
||||
print1("`Three shall be the number of thy counting.");
|
||||
print2("And the number of thy counting shall be three.'");
|
||||
morewait();
|
||||
clearmsg();
|
||||
print1("Ka-Boom!");
|
||||
p_death("the Holy Hand-Grenade of Antioch");
|
||||
}
|
||||
else {
|
||||
print1("Ka-Boom!");
|
||||
gain_experience(1000);
|
||||
Level->site[x][y].locchar = TRAP;
|
||||
Level->site[x][y].p_locf = L_TRAP_DOOR;
|
||||
lset(x, y, CHANGED);
|
||||
if (Level->site[x][y].creature != NULL) {
|
||||
m_death(Level->site[x][y].creature);
|
||||
print2("You are covered with gore.");
|
||||
}
|
||||
Level->site[x][y].things = NULL;
|
||||
}
|
||||
}
|
||||
dispose_lost_objects(1,o);
|
||||
}
|
||||
|
||||
void i_kolwynia(pob o)
|
||||
{
|
||||
int i;
|
||||
if (! o->known) {
|
||||
print1("You destroy youself with a mana storm. How sad.");
|
||||
p_death("Kolwynia, The Key That Was Lost");
|
||||
}
|
||||
else {
|
||||
gain_experience(5000);
|
||||
print1("You seem to have gained complete mastery of magic.");
|
||||
Player.maxpow *= 2;
|
||||
Player.pow = max( Player.pow, Player.maxpow );
|
||||
for(i=0;i<NUMSPELLS;i++)
|
||||
Spells[i].known = TRUE;
|
||||
}
|
||||
dispose_lost_objects(1,o);
|
||||
}
|
||||
|
||||
void i_enchantment(pob o)
|
||||
{
|
||||
char response;
|
||||
if (ZapHour == hour())
|
||||
print1("The staff doesn't seem to have recharged yet.");
|
||||
else if (! o->known) {
|
||||
ZapHour = hour();
|
||||
print1("You blast the staff backwards....");
|
||||
dispel(-1);
|
||||
}
|
||||
else {
|
||||
ZapHour = hour();
|
||||
print1("Zap with white or black end [wb] ");
|
||||
do response = (char) mcigetc();
|
||||
while ((response != 'w') && (response != 'b'));
|
||||
print2("The staff discharges!");
|
||||
if (response == 'w') enchant(o->blessing*2+1);
|
||||
else dispel(o->blessing);
|
||||
}
|
||||
}
|
||||
|
||||
void i_helm(pob o)
|
||||
{
|
||||
if ( (HelmDay == day()) && ((HelmHour == hour()) ))
|
||||
print1("The helm doesn't seem to have recharged yet.");
|
||||
else if (! o->known) {
|
||||
HelmHour = hour();
|
||||
HelmDay = day();
|
||||
print1("You put the helm on backwards....");
|
||||
p_teleport(-1);
|
||||
}
|
||||
else {
|
||||
HelmHour = hour();
|
||||
print1("Your environment fades.... and rematerializes.");
|
||||
p_teleport(o->blessing);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void i_death(pob o)
|
||||
{
|
||||
clearmsg();
|
||||
print1("Bad move...");
|
||||
p_death("the Potion of Death");
|
||||
}
|
||||
|
||||
void i_life(pob o)
|
||||
{
|
||||
clearmsg();
|
||||
print1("Good move.");
|
||||
Player.maxhp = 2 * Player.maxhp;
|
||||
Player.hp = max( Player.hp, Player.maxhp );
|
||||
dispose_lost_objects(1,o);
|
||||
}
|
||||
|
||||
|
||||
/* f = fire, w = water, e = earth, a = air, m = mastery */
|
||||
int orbcheck(char element)
|
||||
{
|
||||
char response;
|
||||
print1("The orb begins to glow with increasing intensity!");
|
||||
print2("You have the feeling you need to do something more....");
|
||||
morewait();
|
||||
print1("Burn it in fire [f] ");
|
||||
print2("Douse it with water [w] ");
|
||||
morewait();
|
||||
print1("Smash it against the earth [e] ");
|
||||
print2("Toss is through the air [a] ");
|
||||
morewait();
|
||||
print1("Mix the above actions, doing them in sequence [m] ");
|
||||
do {
|
||||
print2("Which one [f,w,e,a,m] ");
|
||||
response = (char) mcigetc();
|
||||
} while ((response != 'f') &&
|
||||
(response != 'w') &&
|
||||
(response != 'e') &&
|
||||
(response != 'a') &&
|
||||
(response != 'm'));
|
||||
return(response == element);
|
||||
}
|
||||
|
||||
/* orb functions */
|
||||
void i_orbfire(pob o)
|
||||
{
|
||||
if (! orbcheck('f')) {
|
||||
print1("Bad choice!");
|
||||
print2("The Orb of Fire blasts you!");
|
||||
fball(Player.x,Player.y,Player.x,Player.y,250);
|
||||
o->known = 1;
|
||||
}
|
||||
else {
|
||||
print1("The Orb of Fire flares a brilliant red!");
|
||||
Spells[S_FIREBOLT].known = TRUE;
|
||||
gain_experience(10000);
|
||||
Player.immunity[FLAME]+=100;
|
||||
print2("You feel fiery!");
|
||||
o->plus = 100;
|
||||
o->blessing = 100;
|
||||
i_firebolt(o);
|
||||
}
|
||||
*o = Objects[OB_DEAD_ORB];
|
||||
}
|
||||
|
||||
|
||||
void i_orbwater(pob o)
|
||||
{
|
||||
if (! orbcheck('w')) {
|
||||
print1("A serious mistake!");
|
||||
print2("The Orb of Water blasts you!");
|
||||
heal(-250);
|
||||
o->known = 1;
|
||||
}
|
||||
else {
|
||||
print1("The Orb of Water pulses a deep green!");
|
||||
Spells[S_DISRUPT].known = TRUE;
|
||||
Player.immunity[POISON]+=100;
|
||||
gain_experience(10000);
|
||||
print2("You feel wet!");
|
||||
o->plus = 100;
|
||||
o->blessing = 100;
|
||||
i_disrupt(o);
|
||||
}
|
||||
*o = Objects[OB_DEAD_ORB];
|
||||
}
|
||||
|
||||
|
||||
|
||||
void i_orbearth(pob o)
|
||||
{
|
||||
int i;
|
||||
if (! orbcheck('e')) {
|
||||
print1("What a maroon!");
|
||||
print2("The Orb of Earth blasts you!");
|
||||
Player.con -= 10;
|
||||
if (Player.con < 3)
|
||||
p_death("congestive heart failure");
|
||||
else {
|
||||
print3("Your possessions disintegrate!");
|
||||
for (i=0;i<MAXITEMS;i++)
|
||||
if (Player.possessions[i] != NULL)
|
||||
dispose_lost_objects(Player.possessions[i]->number,
|
||||
Player.possessions[i]);
|
||||
for (i=0;i<MAXPACK;i++)
|
||||
if (Player.pack[i] != NULL) {
|
||||
free((char *) Player.pack[i]);
|
||||
Player.pack[i] = NULL;
|
||||
}
|
||||
Player.packptr = 0;
|
||||
o->known = 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
print1("The Orb of Earth emanates a brownish aura!");
|
||||
Spells[S_DISINTEGRATE].known = TRUE;
|
||||
gain_experience(10000);
|
||||
Player.immunity[NEGENERGY]+=100;
|
||||
print2("You feel earthy!");
|
||||
o->plus = 100;
|
||||
o->blessing = 100;
|
||||
i_disintegrate(o);
|
||||
}
|
||||
*o = Objects[OB_DEAD_ORB];
|
||||
}
|
||||
|
||||
|
||||
void i_orbair(pob o)
|
||||
{
|
||||
if (! orbcheck('a')) {
|
||||
print1("You lose!");
|
||||
print2("The Orb of Air blasts you!");
|
||||
lball(Player.x,Player.y,Player.x,Player.y,100);
|
||||
o->known = 1;
|
||||
}
|
||||
else {
|
||||
print1("The Orb of Air flashes blue!");
|
||||
Spells[S_LBALL].known = TRUE; /* lball */
|
||||
gain_experience(10000);
|
||||
print2("You feel airy!");
|
||||
Player.immunity[ELECTRICITY]+=100;
|
||||
o->plus = 100;
|
||||
o->blessing = 100;
|
||||
i_invisible(o);
|
||||
i_lbolt(o);
|
||||
}
|
||||
*o = Objects[OB_DEAD_ORB];
|
||||
}
|
||||
|
||||
|
||||
void i_orbmastery(pob o)
|
||||
{
|
||||
|
||||
if (! orbcheck('m')) {
|
||||
print1("A fatal error!");
|
||||
print2("The Orb of Mastery blasts you to cinders!");
|
||||
p_death("playing with the Orb of Mastery");
|
||||
o->known = 1;
|
||||
}
|
||||
else if ((find_and_remove_item(OB_ORB_FIRE,-1)) &&
|
||||
(find_and_remove_item(OB_ORB_WATER,-1)) &&
|
||||
(find_and_remove_item(OB_ORB_EARTH,-1)) &&
|
||||
(find_and_remove_item(OB_ORB_AIR,-1))) {
|
||||
print1("The Orb of Mastery radiates rainbow colors!");
|
||||
print2("You feel godlike.");
|
||||
Player.iq = max( Player.iq, Player.maxiq = 2 * Player.maxiq);
|
||||
Player.pow = max( Player.pow, Player.maxpow = 2 * Player.maxpow);
|
||||
Player.str = max( Player.str, Player.maxstr = 2 * Player.maxstr);
|
||||
Player.dex = max( Player.dex, Player.maxdex = 2 * Player.maxdex);
|
||||
Player.con = max( Player.con, Player.maxcon = 2 * Player.maxcon);
|
||||
Player.agi = max( Player.agi, Player.maxagi = 2 * Player.maxagi);
|
||||
dataprint();
|
||||
morewait();
|
||||
print1("You have been imbued with a cosmic power....");
|
||||
morewait();
|
||||
wish(1);
|
||||
morewait();
|
||||
clearmsg();
|
||||
print2("You feel much more experienced.");
|
||||
gain_experience(20000);
|
||||
*o = Objects[OB_DEAD_ORB];
|
||||
}
|
||||
else {
|
||||
print1("The Orb of Mastery's power is unbalanced!");
|
||||
print2("The Orb of Mastery blasts you to cinders!");
|
||||
p_death("playing with the Orb of Mastery");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void i_orbdead(pob o)
|
||||
{
|
||||
int i;
|
||||
print1("The burnt-out orb drains all your energy!");
|
||||
for(i=0;i<NUMSPELLS;i++)
|
||||
Spells[i].known = FALSE;
|
||||
print2("You feel not at all like a mage.");
|
||||
for(i=0;i<MAXITEMS;i++) {
|
||||
if (Player.possessions[i] != NULL) {
|
||||
Player.possessions[i]->plus = 0;
|
||||
if (Player.possessions[i]->usef > 100)
|
||||
Player.possessions[i]->usef = I_NOTHING;
|
||||
}
|
||||
}
|
||||
print3("A storm of mundanity surounds you!");
|
||||
level_drain(Player.level-1,"a Burnt-out Orb");
|
||||
Player.mana = 0;
|
||||
Player.pow -= 10;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void i_dispel(pob o)
|
||||
{
|
||||
dispel((o->blessing > -1) ? o->blessing+random_range(3): o->blessing);
|
||||
}
|
||||
|
||||
/* DAG implement bag of holding */
|
||||
void i_holding(pob o)
|
||||
{
|
||||
char c, c1, c2;
|
||||
pol ol;
|
||||
|
||||
/* use aux to represent # items in bag, 5 max */
|
||||
if (! o->known )
|
||||
{
|
||||
clearmsg();
|
||||
print1("You open the bag and look in. It looks bigger on the inside");
|
||||
print2("than on the outside. Wow, a Bag of Holding.");
|
||||
morewait();
|
||||
o->known = 1;
|
||||
Objects[o->id].known = 1;
|
||||
}
|
||||
menuclear();
|
||||
if ( ! o->aux )
|
||||
menuprint("You bag of holding is empty.\n");
|
||||
else
|
||||
{
|
||||
sprintf(Str1, "You bag of holding currently holds %d items.\n", o->aux );
|
||||
menuprint(Str1);
|
||||
}
|
||||
menuprint(" a: list contents\n");
|
||||
menuprint(" b: put an item into the bag\n");
|
||||
menuprint(" c: remove an item from the bag\n");
|
||||
menuprint(" ESCAPE:cancel\n" );
|
||||
showmenu();
|
||||
do
|
||||
c = (char) mgetc();
|
||||
while ( (c < 'a' || c > 'c') && c != ESCAPE);
|
||||
switch(c)
|
||||
{
|
||||
case 'a':
|
||||
if (!o->aux)
|
||||
print1("The bag is empty.");
|
||||
else
|
||||
{
|
||||
ol = Bagitems;
|
||||
menuclear();
|
||||
while (ol != NULL) {
|
||||
menuprint("\n");
|
||||
menuprint(itemid(ol->thing));
|
||||
ol = ol->next;
|
||||
}
|
||||
showmenu();
|
||||
morewait();
|
||||
xredraw();
|
||||
}
|
||||
break;
|
||||
case 'b':
|
||||
if (o->aux >= 5)
|
||||
print1("The bag appears to be full.");
|
||||
else
|
||||
{
|
||||
int i;
|
||||
pob ob;
|
||||
i = getitem( NULL_ITEM );
|
||||
if (i != ABORT )
|
||||
{
|
||||
ob = Player.possessions[i];
|
||||
if ( ob->used && (ob->blessing < 0) )
|
||||
{
|
||||
sprintf(Str1, "You can't seem to get rid of: %s", itemid(ob) );
|
||||
print1(Str1);
|
||||
} else if (ob == o) /* put bag into itself */
|
||||
{
|
||||
mprint("You put the bottom of the bag into the top.");
|
||||
mprint("The bag starts to slowly get sucked into the bag.");
|
||||
mprint("You hear a high-pitched screaming sound.");
|
||||
mprint("The world starts to twist around you.");
|
||||
mprint("Suddenly the space-time continuum rips...");
|
||||
mprint("And you are sucked into the rift.");
|
||||
free_objlist( Bagitems );
|
||||
Bagitems = NULL;
|
||||
/* Bag is not destroyed, could re-appear anywhere */
|
||||
Objects[o->id].uniqueness = UNIQUE_UNMADE;
|
||||
free_obj( o, TRUE );
|
||||
Player.possessions[i] = NULL;
|
||||
strategic_teleport(-1);
|
||||
} else
|
||||
{
|
||||
ol = (pol) checkmalloc( sizeof(oltype) );
|
||||
ol->thing = ob;
|
||||
ol->next = Bagitems;
|
||||
Bagitems = ol;
|
||||
conform_unused_object(ob); /* if used, unuses it */
|
||||
Player.possessions[i] = NULL;
|
||||
o->aux++;
|
||||
}
|
||||
} /* !ABORT */
|
||||
} /* not full (else) */
|
||||
break;
|
||||
case 'c':
|
||||
if (!o->aux)
|
||||
print1("The bag is empty.");
|
||||
else
|
||||
{
|
||||
if (o->blessing < 0)
|
||||
{
|
||||
o->known = 2;
|
||||
print1("Oops, when you go to remove the objects, you find that they aren't there.");
|
||||
print2("It appears that this was actually a Bag of Devouring.");
|
||||
morewait();
|
||||
print2("You sense an aura of satisfaction around the bag.");
|
||||
o->aux = 0;
|
||||
free_objlist( Bagitems );
|
||||
Bagitems = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
ol = Bagitems;
|
||||
menuclear();
|
||||
menuprint("Select object from bag:\n");
|
||||
c1 = 'a';
|
||||
while (ol != NULL) {
|
||||
sprintf(Str1, "%c: %s\n", c1, itemid(ol->thing) );
|
||||
menuprint(Str1);
|
||||
ol = ol->next;
|
||||
c1++;
|
||||
}
|
||||
menuprint("ESCAPE: to cancel\n");
|
||||
showmenu();
|
||||
do
|
||||
c = (char) mgetc();
|
||||
while ( (c < 'a' || c >= c1) && c != ESCAPE);
|
||||
if (c != ESCAPE)
|
||||
{
|
||||
pol prev = NULL;
|
||||
ol = Bagitems;
|
||||
for (c2='a'; c2 < c; c2++ )
|
||||
{
|
||||
prev = ol;
|
||||
ol = ol->next;
|
||||
}
|
||||
gain_item( ol->thing );
|
||||
o->aux--;
|
||||
/* free appropriately */
|
||||
/* WDT: oops, the old assignment bug struck again. Fixed, I hope. */
|
||||
if (ol == Bagitems)
|
||||
{
|
||||
ol=ol->next;
|
||||
free( Bagitems );
|
||||
Bagitems = ol;
|
||||
}
|
||||
else
|
||||
{
|
||||
ol = ol->next;
|
||||
free( prev->next );
|
||||
prev->next = ol;
|
||||
}
|
||||
|
||||
} /* not escape */
|
||||
|
||||
} /* else blessing >= 0 */
|
||||
} /* else bag is full */
|
||||
break;
|
||||
} /* switch (c) */
|
||||
|
||||
calc_melee();
|
||||
xredraw();
|
||||
} /* fn */
|
||||
|
||||
|
||||
/* stick functions */
|
||||
|
||||
|
||||
/* wand of apportation */
|
||||
void i_apport(pob o)
|
||||
{
|
||||
o->known = max(1,o->known);
|
||||
Objects[o->id].known = 1;
|
||||
apport(o->blessing);
|
||||
}
|
||||
|
||||
/* staff of firebolts */
|
||||
void i_firebolt(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
o->known = max(1,o->known);
|
||||
Objects[o->id].known = 1;
|
||||
setspot(&x,&y);
|
||||
if (o->blessing < 0) {
|
||||
x = Player.x;
|
||||
y = Player.y;
|
||||
}
|
||||
fbolt(Player.x,Player.y,x,y,Player.dex*2+Player.level,75);
|
||||
}
|
||||
|
||||
|
||||
void i_disintegrate(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
o->known = max(1,o->known);
|
||||
Objects[o->id].known = 1;
|
||||
setspot(&x,&y);
|
||||
if (o->blessing < 0) {
|
||||
x = Player.x;
|
||||
y = Player.y;
|
||||
}
|
||||
disintegrate(x,y);
|
||||
}
|
||||
|
||||
void i_disrupt(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
o->known = max(1,o->known);
|
||||
Objects[o->id].known = 1;
|
||||
setspot(&x,&y);
|
||||
if (o->blessing < 0) {
|
||||
x = Player.x;
|
||||
y = Player.y;
|
||||
}
|
||||
disrupt(x,y,100);
|
||||
}
|
||||
|
||||
|
||||
/* staff of lightning bolts */
|
||||
void i_lbolt(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
o->known = max(1,o->known);
|
||||
Objects[o->id].known = 1;
|
||||
setspot(&x,&y);
|
||||
if (o->blessing < 0) {
|
||||
x = Player.x;
|
||||
y = Player.y;
|
||||
}
|
||||
lbolt(Player.x,Player.y,x,y,Player.dex*2+Player.level,75);
|
||||
}
|
||||
|
||||
/* wand of magic missiles */
|
||||
void i_missile(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
o->known = max(1,o->known);
|
||||
Objects[o->id].known = 1;
|
||||
setspot(&x,&y);
|
||||
if (o->blessing < 0) {
|
||||
x = Player.x;
|
||||
y = Player.y;
|
||||
}
|
||||
nbolt(Player.x,Player.y,x,y,Player.dex*2+Player.level,20);
|
||||
}
|
||||
|
||||
/* wand of fire balls */
|
||||
void i_fireball(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
Objects[o->id].known = 1;
|
||||
o->known = max(1,o->known);
|
||||
setspot(&x,&y);
|
||||
if (o->blessing < 0) {
|
||||
x = Player.x;
|
||||
y = Player.y;
|
||||
}
|
||||
fball(Player.x,Player.y,x,y,35);
|
||||
}
|
||||
|
||||
|
||||
/* wand of snowballs */
|
||||
void i_snowball(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
Objects[o->id].known = 1;
|
||||
o->known = max(1,o->known);
|
||||
setspot(&x,&y);
|
||||
if (o->blessing < 0) {
|
||||
x = Player.x;
|
||||
y = Player.y;
|
||||
}
|
||||
snowball(Player.x,Player.y,x,y,20);
|
||||
}
|
||||
|
||||
/* wand of lightning balls */
|
||||
void i_lball(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
Objects[o->id].known = 1;
|
||||
o->known = max(1,o->known);
|
||||
setspot(&x,&y);
|
||||
if (o->blessing < 0) {
|
||||
x = Player.x;
|
||||
y = Player.y;
|
||||
}
|
||||
lball(Player.x,Player.y,x,y,50);
|
||||
}
|
||||
|
||||
/* staff of sleep */
|
||||
void i_sleep_other(pob o)
|
||||
{
|
||||
Objects[o->id].known = 1;
|
||||
o->known = max(1,o->known);
|
||||
sleep_monster(o->blessing);
|
||||
}
|
||||
|
||||
/* rod of summoning */
|
||||
/* rod of summoning now always summons as if cursed */
|
||||
void i_summon(pob o)
|
||||
{
|
||||
Objects[o->id].known = 1;
|
||||
o->known = max(1,o->known);
|
||||
summon(-1,-1);
|
||||
}
|
||||
|
||||
void i_hide(pob o)
|
||||
{
|
||||
int x=Player.x,y=Player.y;
|
||||
Objects[o->id].known = 1;
|
||||
o->known = max(1,o->known);
|
||||
setspot(&x,&y);
|
||||
hide(x,y);
|
||||
}
|
||||
|
||||
void i_polymorph(pob o)
|
||||
{
|
||||
Objects[o->id].known = 1;
|
||||
o->known = max(1,o->known);
|
||||
polymorph(o->blessing);
|
||||
}
|
514
lev.c
Normal file
514
lev.c
Normal file
@ -0,0 +1,514 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* lev.c */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
/* Functions dealing with dungeon and country levels aside from actual
|
||||
level structure generation */
|
||||
|
||||
|
||||
/* monsters for tactical encounters */
|
||||
void make_country_monsters(Symbol terrain)
|
||||
{
|
||||
pml tml,ml=NULL;
|
||||
static int plains[10] =
|
||||
{BUNNY,BUNNY,HORNET,QUAIL,HAWK,DEER,WOLF,LION,BRIGAND,RANDOM};
|
||||
/* {BUNNY,BUNNY,BLACKSNAKE,HAWK,IMPALA,WOLF,LION,BRIGAND,RANDOM};*/
|
||||
/* DG changed (WDT: I'd like to see a blacksnake). */
|
||||
static int forest[10] =
|
||||
{BUNNY,QUAIL,HAWK,BADGER,DEER,DEER,WOLF,BEAR,BRIGAND,RANDOM};
|
||||
static int jungle[10] =
|
||||
{ANTEATER,PARROT,MAMBA,ANT,ANT,HYENA,HYENA,ELEPHANT,LION,RANDOM};
|
||||
static int river[10] =
|
||||
{QUAIL,TROUT,TROUT,MANOWAR,BASS,BASS,CROC,CROC,BRIGAND,RANDOM};
|
||||
static int swamp[10] =
|
||||
{BASS,BASS,CROC,CROC,BOGTHING,ANT,ANT,RANDOM,RANDOM,RANDOM};
|
||||
static int desert[10] =
|
||||
{HAWK,HAWK,CAMEL,CAMEL,HYENA,HYENA,LION,LION,RANDOM,RANDOM};
|
||||
static int tundra[10] =
|
||||
{WOLF,WOLF,BEAR,BEAR,DEER,DEER,RANDOM,RANDOM,RANDOM,RANDOM};
|
||||
static int mountain[10] =
|
||||
{BUNNY,SHEEP,WOLF,WOLF,HAWK,HAWK,HAWK,RANDOM,RANDOM,RANDOM};
|
||||
static int village[10] =
|
||||
{GUARD,SHEEP,SHEEP,MERCHANT,ITIN_MERCH,ZERO_NPC,MEND_PRIEST,HAWK,HORSE,RANDOM};
|
||||
static int city[10] =
|
||||
{GUARD,GUARD,GUARD,SHEEP,HORSE,MERCHANT,ITIN_MERCH,ZERO_NPC,MEND_PRIEST,RANDOM};
|
||||
static int road_day[10] =
|
||||
{GUARD,MERCHANT,ITIN_MERCH,MEND_PRIEST,WEREHUMAN,HAWK,WOLF,GRUNT,SNEAK_THIEF,RANDOM};
|
||||
static int road_night[10] =
|
||||
{DEER,WOLF,GOBLIN,SNEAK_THIEF,APPR_NINJA,BRIGAND,WEREHUMAN,GENIN,RANDOM,RANDOM};
|
||||
int *monsters,i,nummonsters;
|
||||
|
||||
nummonsters = (random_range(5)+1) * (random_range(3)+1);
|
||||
|
||||
switch(terrain) {
|
||||
case PLAINS: monsters = plains; break;
|
||||
case FOREST: monsters = forest; break;
|
||||
case JUNGLE: monsters = jungle; break;
|
||||
case RIVER: monsters = river; break;
|
||||
case SWAMP: monsters = swamp; break;
|
||||
case MOUNTAINS:
|
||||
case PASS:
|
||||
case VOLCANO: monsters = mountain; break;
|
||||
case DESERT: monsters = desert; break;
|
||||
case TUNDRA: monsters = tundra; break;
|
||||
case VILLAGE: monsters = village; break;
|
||||
case CITY: monsters = city; break;
|
||||
case ROAD:
|
||||
if (nighttime())
|
||||
monsters = road_night;
|
||||
else
|
||||
monsters = road_day;
|
||||
break;
|
||||
default: monsters = NULL;
|
||||
}
|
||||
for(i=0;i<nummonsters;i++) {
|
||||
tml = ((pml) checkmalloc(sizeof(mltype)));
|
||||
tml->m = ((pmt) checkmalloc(sizeof(montype)));
|
||||
if (monsters == NULL) tml->m =
|
||||
m_create(random_range(Level->level_width),random_range(Level->level_length),TRUE,difficulty());
|
||||
else {
|
||||
tml->m = make_creature(*(monsters+random_range(10)));
|
||||
tml->m->x = random_range(Level->level_width);
|
||||
tml->m->y = random_range(Level->level_length);
|
||||
}
|
||||
Level->site[tml->m->x][tml->m->y].creature = tml->m;
|
||||
tml->m->sense = Level->level_width;
|
||||
if (m_statusp(tml->m,ONLYSWIM)) {
|
||||
Level->site[tml->m->x][tml->m->y].locchar = WATER;
|
||||
Level->site[tml->m->x][tml->m->y].p_locf = L_WATER;
|
||||
lset(tml->m->x, tml->m->y, CHANGED);
|
||||
}
|
||||
|
||||
tml->next = ml;
|
||||
ml = tml;
|
||||
}
|
||||
Level->mlist = ml;
|
||||
}
|
||||
|
||||
/* monstertype is more or less Current_Dungeon */
|
||||
/* The caves and sewers get harder as you penetrate them; the castle
|
||||
is completely random, but also gets harder as it is explored;
|
||||
the astral and the volcano just stay hard... */
|
||||
void populate_level(int monstertype)
|
||||
{
|
||||
pml head,tml;
|
||||
int i,j,k;
|
||||
int monsterid;
|
||||
int nummonsters;
|
||||
|
||||
monsterid = RANDOM;
|
||||
nummonsters=(random_range(difficulty()/3)+1)*3+8;
|
||||
|
||||
if (monstertype == E_CASTLE) nummonsters += 10;
|
||||
else if (monstertype == E_ASTRAL) nummonsters += 10;
|
||||
else if (monstertype == E_VOLCANO) nummonsters += 20;
|
||||
|
||||
head = tml = checkmalloc(sizeof(mltype));
|
||||
|
||||
for(k=0;k<nummonsters;k++) {
|
||||
|
||||
findspace(&i,&j,-1);
|
||||
|
||||
switch(monstertype) {
|
||||
case E_CAVES:
|
||||
if (Level->depth*10+random_range(100) > 150)
|
||||
monsterid = GOBLIN_SHAMAN;
|
||||
else if (Level->depth*10+random_range(100) > 100)
|
||||
monsterid = GOBLIN_CHIEF; /* Goblin Chieftain */
|
||||
else if (random_range(100) > 50) monsterid = GOBLIN;
|
||||
else monsterid = RANDOM; /* IE, random monster */
|
||||
break;
|
||||
case E_SEWERS:
|
||||
if (! random_range(3)) monsterid = -1;
|
||||
else switch(random_range(Level->depth+3)) {
|
||||
case 0: monsterid = SEWER_RAT; break;
|
||||
case 1: monsterid = AGGRAVATOR; break; /* aggravator fungus */
|
||||
case 2: monsterid = BLIPPER; break; /* blipper rat */
|
||||
case 3: monsterid = NIGHT_GAUNT; break;
|
||||
case 4: monsterid = NASTY; break; /* transparent nasty */
|
||||
case 5: monsterid = MURK; break; /* murk fungus */
|
||||
case 6: monsterid = CATOBLEPAS; break;
|
||||
case 7: monsterid = ACID_CLOUD; break;
|
||||
case 8: monsterid = DENEBIAN; break; /* denebian slime devil */
|
||||
case 9: monsterid = CROC; break; /* giant crocodile */
|
||||
case 10: monsterid = TESLA; break; /* tesla monster */
|
||||
case 11: monsterid = SHADOW; break; /* shadow spirit */
|
||||
case 12: monsterid = BOGTHING; break; /* bogthing */
|
||||
case 13: monsterid = WATER_ELEM; break; /* water elemental */
|
||||
case 14: monsterid = TRITON; break;
|
||||
case 15: monsterid = ROUS; break;
|
||||
default: monsterid = RANDOM; break; /* whatever seems good */
|
||||
}
|
||||
break;
|
||||
case E_ASTRAL:
|
||||
if (random_range(2)) /* random astral creatures */
|
||||
switch(random_range(12)) {
|
||||
case 0: monsterid = THOUGHTFORM; break;
|
||||
case 1: monsterid = FUZZY; break; /* astral fuzzy */
|
||||
case 2: monsterid = BAN_SIDHE; break;
|
||||
case 3: monsterid = GRUE; break; /* astral grue */
|
||||
case 4: monsterid = SHADOW; break; /* shadow spirit */
|
||||
case 5: monsterid = ASTRAL_VAMP; break; /* astral vampire */
|
||||
case 6: monsterid = MANABURST; break;
|
||||
case 7: monsterid = RAKSHASA; break;
|
||||
case 8: monsterid = ILL_FIEND; break; /* illusory fiend */
|
||||
case 9: monsterid = MIRRORMAST; break; /* mirror master */
|
||||
case 10: monsterid = ELDER_GRUE; break; /* elder etheric grue */
|
||||
case 11: monsterid = SHADOW_SLAY; break; /* shadow slayer */
|
||||
}
|
||||
else if (random_range(2) && (Level->depth == 1)) /* plane of earth */
|
||||
monsterid = EARTH_ELEM; /* earth elemental */
|
||||
else if (random_range(2) && (Level->depth == 2)) /* plane of air */
|
||||
monsterid = AIR_ELEM; /* air elemental */
|
||||
else if (random_range(2) && (Level->depth == 3)) /* plane of water */
|
||||
monsterid = WATER_ELEM; /* water elemental */
|
||||
else if (random_range(2) && (Level->depth == 4)) /* plane of fire */
|
||||
monsterid = FIRE_ELEM; /* fire elemental */
|
||||
else if (random_range(2) && (Level->depth == 5)) /* deep astral */
|
||||
switch (random_range(12)) {
|
||||
case 0:monsterid = NIGHT_GAUNT; break;
|
||||
case 1:monsterid = SERV_LAW; break; /* servant of law */
|
||||
case 2:monsterid = SERV_CHAOS; break; /* servant of chaos */
|
||||
case 3:monsterid = FROST_DEMON; break; /* lesser frost demon */
|
||||
case 4:monsterid = OUTER_DEMON; break; /* outer circle demon */
|
||||
case 5:monsterid = DEMON_SERP; break; /* demon serpent */
|
||||
case 6:monsterid = ANGEL; break;
|
||||
case 7:monsterid = INNER_DEMON; break; /* inner circle demon */
|
||||
case 8:monsterid = FDEMON_L; break; /* frost demon lord */
|
||||
case 9:monsterid = HIGH_ANGEL; break;
|
||||
case 10:monsterid = DEMON_PRINCE; break; /* prime circle demon */
|
||||
case 11:monsterid = ARCHANGEL; break;
|
||||
}
|
||||
else monsterid = RANDOM;
|
||||
break;
|
||||
case E_VOLCANO:
|
||||
if (random_range(2)) {
|
||||
do monsterid = random_range(ML10-ML4)+ML4;
|
||||
while (Monsters[monsterid].uniqueness != COMMON);
|
||||
}
|
||||
else switch(random_range(Level->depth/2+2)) { /* evil & fire creatures */
|
||||
case 0: monsterid = HAUNT; break;
|
||||
case 1: monsterid = INCUBUS; break;
|
||||
case 2: monsterid = DRAGONETTE; break;
|
||||
case 3: monsterid = FROST_DEMON; break;
|
||||
case 4: monsterid = SPECTRE; break;
|
||||
case 5: monsterid = LAVA_WORM; break;
|
||||
case 6: monsterid = FIRE_ELEM; break;
|
||||
case 7: monsterid = LICHE; break;
|
||||
case 8: monsterid = RAKSHASA; break;
|
||||
case 9: monsterid = DEMON_SERP; break;
|
||||
case 10: monsterid = NAZGUL; break;
|
||||
case 11: monsterid = FLAME_DEV; break;
|
||||
case 12: monsterid = LOATHLY; break;
|
||||
case 13: monsterid = ZOMBIE; break;
|
||||
case 14: monsterid = INNER_DEMON; break;
|
||||
case 15: monsterid = BAD_FAIRY; break;
|
||||
case 16: monsterid = DRAGON; break;
|
||||
case 17: monsterid = FDEMON_L; break;
|
||||
case 18: monsterid = SHADOW_SLAY; break;
|
||||
case 19: monsterid = DEATHSTAR; break;
|
||||
case 20: monsterid = VAMP_LORD; break;
|
||||
case 21: monsterid = DEMON_PRINCE; break;
|
||||
default: monsterid = RANDOM; break;
|
||||
}
|
||||
break;
|
||||
case E_CASTLE:
|
||||
if (random_range(4)==1) {
|
||||
if (difficulty() < 5)
|
||||
monsterid = ENCHANTOR;
|
||||
else if (difficulty() < 6)
|
||||
monsterid = NECROMANCER;
|
||||
else if (difficulty() < 8)
|
||||
monsterid = FIRE_ELEM;
|
||||
else monsterid = THAUMATURGIST;
|
||||
}
|
||||
else monsterid = RANDOM;
|
||||
break;
|
||||
|
||||
default: monsterid = RANDOM; break;
|
||||
}
|
||||
|
||||
if (monsterid != RANDOM)
|
||||
Level->site[i][j].creature = make_creature(monsterid);
|
||||
else
|
||||
Level->site[i][j].creature = m_create(i,j,TRUE,difficulty());
|
||||
|
||||
Level->site[i][j].creature->x = i;
|
||||
Level->site[i][j].creature->y = j;
|
||||
|
||||
if (m_statusp(Level->site[i][j].creature,ONLYSWIM)) {
|
||||
Level->site[i][j].locchar = WATER;
|
||||
Level->site[i][j].p_locf = L_WATER;
|
||||
lset(i, j, CHANGED);
|
||||
}
|
||||
|
||||
tml->next = ((pml) checkmalloc(sizeof(mltype)));
|
||||
tml->next->m = Level->site[i][j].creature;
|
||||
tml = tml->next;
|
||||
}
|
||||
|
||||
if (Level->mlist==NULL) {
|
||||
tml->next = NULL;
|
||||
Level->mlist = head->next;
|
||||
}
|
||||
else {
|
||||
tml->next = Level->mlist;
|
||||
Level->mlist = head->next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Add a wandering monster possibly */
|
||||
void wandercheck(void)
|
||||
{
|
||||
int x,y;
|
||||
pml tml;
|
||||
if (random_range(MaxDungeonLevels) < difficulty()) {
|
||||
findspace(&x,&y,-1);
|
||||
tml = ((pml) checkmalloc(sizeof(mltype)));
|
||||
tml->next = Level->mlist;
|
||||
tml->m = Level->site[x][y].creature = m_create(x,y,WANDERING,difficulty());
|
||||
Level->mlist = tml;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* call make_creature and place created monster on Level->mlist and Level */
|
||||
void make_site_monster(int i, int j, int mid)
|
||||
{
|
||||
pml ml = ((pml) checkmalloc(sizeof(mltype)));
|
||||
pmt m;
|
||||
if (mid > -1) Level->site[i][j].creature = (m = make_creature(mid));
|
||||
else Level->site[i][j].creature = (m = m_create(i,j,WANDERING,difficulty()));
|
||||
m->x = i;
|
||||
m->y = j;
|
||||
ml->m = m;
|
||||
ml->next = Level->mlist;
|
||||
Level->mlist = ml;
|
||||
}
|
||||
|
||||
|
||||
/* make and return an appropriate monster for the level and depth*/
|
||||
/* called by populate_level, doesn't actually add to mlist for some reason*/
|
||||
/* eventually to be more intelligent */
|
||||
pmt m_create(int x, int y, int kind, int level)
|
||||
{
|
||||
pmt newmonster;
|
||||
int monster_range;
|
||||
int mid;
|
||||
|
||||
switch(level) {
|
||||
case 0:monster_range = ML1; break;
|
||||
case 1:monster_range = ML2; break;
|
||||
case 2:monster_range = ML3; break;
|
||||
case 3:monster_range = ML4; break;
|
||||
case 4:monster_range = ML5; break;
|
||||
case 5:monster_range = ML6; break;
|
||||
case 6:monster_range = ML7; break;
|
||||
case 7:monster_range = ML8; break;
|
||||
case 8:monster_range = ML9; break;
|
||||
case 9:monster_range = ML10; break;
|
||||
default:monster_range = NUMMONSTERS; break;
|
||||
}
|
||||
|
||||
do
|
||||
mid = random_range(monster_range);
|
||||
while (Monsters[mid].uniqueness != COMMON);
|
||||
newmonster = make_creature(mid);
|
||||
|
||||
/* no duplicates of unique monsters */
|
||||
if (kind == WANDERING) m_status_set(newmonster,WANDERING);
|
||||
newmonster->x = x;
|
||||
newmonster->y = y;
|
||||
return(newmonster);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* make creature # mid, totally random if mid == -1 */
|
||||
/* make creature allocates space for the creature */
|
||||
pmt make_creature(int mid)
|
||||
{
|
||||
pmt newmonster = ((pmt) checkmalloc(sizeof(montype)));
|
||||
pob ob;
|
||||
int i,treasures;
|
||||
|
||||
if (mid == -1) mid = random_range(ML9);
|
||||
*newmonster = Monsters[mid];
|
||||
if ((mid == ANGEL) || (mid == HIGH_ANGEL) || (mid == ARCHANGEL)) {
|
||||
/* aux1 field of an angel is its deity */
|
||||
if (Current_Environment == E_TEMPLE)
|
||||
newmonster->aux1 = Country[LastCountryLocX][LastCountryLocY].aux;
|
||||
else
|
||||
newmonster->aux1 = random_range(6)+1;
|
||||
newmonster->monstring = angeltype( mid, newmonster->aux1 );
|
||||
}
|
||||
else if (mid == ZERO_NPC || mid == WEREHUMAN) {
|
||||
/* generic 0th level human, or a were-human */
|
||||
newmonster->corpsestr = mancorpse();
|
||||
/* DAG use same (static data) string, after "dead " part */
|
||||
newmonster->monstring = (newmonster->corpsestr)+5;
|
||||
}
|
||||
else if ((newmonster->monchar&0xff) == '!') {
|
||||
/* the nymph/satyr and incubus/succubus */
|
||||
if (Player.preference == 'f' ||
|
||||
(Player.preference != 'm' && random_range(2))) {
|
||||
newmonster->monchar = 'n'|CLR(RED);
|
||||
newmonster->monstring = "nymph";
|
||||
newmonster->corpsestr = "dead nymph";
|
||||
}
|
||||
else {
|
||||
newmonster->monchar = 's'|CLR(RED);
|
||||
newmonster->monstring = "satyr";
|
||||
newmonster->corpsestr = "dead satyr";
|
||||
}
|
||||
if (newmonster->id == INCUBUS) {
|
||||
if ((newmonster->monchar&0xff) == 'n')
|
||||
newmonster->corpsestr = "dead succubus";
|
||||
else newmonster->corpsestr = "dead incubus";
|
||||
}
|
||||
}
|
||||
if (mid == NPC)
|
||||
make_log_npc(newmonster);
|
||||
else if (mid == HISCORE_NPC)
|
||||
make_hiscore_npc(newmonster, random_range(16)); /* Number of Hiscorers! PGM */
|
||||
else {
|
||||
if (newmonster->sleep < random_range(100))
|
||||
m_status_set(newmonster,AWAKE);
|
||||
if (newmonster->startthing > -1 &&
|
||||
Objects[newmonster->startthing].uniqueness <= UNIQUE_MADE) {
|
||||
ob = ((pob) checkmalloc(sizeof(objtype)));
|
||||
*ob = Objects[newmonster->startthing];
|
||||
m_pickup(newmonster,ob);
|
||||
}
|
||||
/* DAG -- monster with treasure of 1 would be same as 0, shouldn't be. */
|
||||
treasures = random_range(newmonster->treasure +1);
|
||||
for(i=0;i<treasures;i++) {
|
||||
do {
|
||||
ob = (pob) (create_object(newmonster->level));
|
||||
if (ob->uniqueness != COMMON) {
|
||||
Objects[ob->id].uniqueness = UNIQUE_UNMADE;
|
||||
free_obj(ob, TRUE);
|
||||
ob = NULL;
|
||||
}
|
||||
} while (!ob);
|
||||
m_pickup(newmonster,ob);
|
||||
}
|
||||
}
|
||||
newmonster->click = (Tick + 1) % 50;
|
||||
return(newmonster);
|
||||
}
|
||||
|
||||
|
||||
/* drop treasures randomly onto level */
|
||||
void stock_level(void)
|
||||
{
|
||||
int i,j,k,numtreasures=2*random_range(difficulty()/4)+4;
|
||||
|
||||
/* put cash anywhere, including walls, put other treasures only on floor */
|
||||
for (k=0;k<numtreasures+10;k++) {
|
||||
do {
|
||||
i = random_range(Level->level_width);
|
||||
j = random_range(Level->level_length);
|
||||
} while (Level->site[i][j].locchar != FLOOR);
|
||||
make_site_treasure(i,j,difficulty());
|
||||
i = random_range(Level->level_width);
|
||||
j = random_range(Level->level_length);
|
||||
Level->site[i][j].things = ((pol) checkmalloc(sizeof(oltype)));
|
||||
Level->site[i][j].things->thing = ((pob) checkmalloc(sizeof(objtype)));
|
||||
make_cash(Level->site[i][j].things->thing,difficulty());
|
||||
Level->site[i][j].things->next = NULL;
|
||||
/* caves have more random cash strewn around */
|
||||
if (Current_Dungeon == E_CAVES) {
|
||||
i = random_range(Level->level_width);
|
||||
j = random_range(Level->level_length);
|
||||
Level->site[i][j].things = ((pol) checkmalloc(sizeof(oltype)));
|
||||
Level->site[i][j].things->thing = ((pob) checkmalloc(sizeof(objtype)));
|
||||
make_cash(Level->site[i][j].things->thing,difficulty());
|
||||
Level->site[i][j].things->next = NULL;
|
||||
i = random_range(Level->level_width);
|
||||
j = random_range(Level->level_length);
|
||||
Level->site[i][j].things = ((pol) checkmalloc(sizeof(oltype)));
|
||||
Level->site[i][j].things->thing = ((pob) checkmalloc(sizeof(objtype)));
|
||||
make_cash(Level->site[i][j].things->thing,difficulty());
|
||||
Level->site[i][j].things->next = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* make a new object (of at most level itemlevel) at site i,j on level*/
|
||||
void make_site_treasure(int i, int j, int itemlevel)
|
||||
{
|
||||
pol tmp = ((pol) checkmalloc(sizeof(oltype)));
|
||||
tmp->thing = ((pob) create_object(itemlevel));
|
||||
tmp->next = Level->site[i][j].things;
|
||||
Level->site[i][j].things = tmp;
|
||||
}
|
||||
|
||||
/* make a specific new object at site i,j on level*/
|
||||
void make_specific_treasure(int i, int j, int itemid)
|
||||
{
|
||||
pol tmp;
|
||||
if (Objects[itemid].uniqueness == UNIQUE_TAKEN)
|
||||
return;
|
||||
tmp = ((pol) checkmalloc(sizeof(oltype)));
|
||||
tmp->thing = ((pob) checkmalloc(sizeof(objtype)));
|
||||
*(tmp->thing) = Objects[itemid];
|
||||
tmp->next = Level->site[i][j].things;
|
||||
Level->site[i][j].things = tmp;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifndef MSDOS_SUPPORTED_ANTIQUE
|
||||
/* returns a "level of difficulty" based on current environment
|
||||
and depth in dungeon. Is somewhat arbitrary. value between 1 and 10.
|
||||
May not actually represent real difficulty, but instead level
|
||||
of items, monsters encountered. */
|
||||
int difficulty(void)
|
||||
{
|
||||
int depth = 1;
|
||||
if (Level != NULL) depth = Level->depth;
|
||||
switch(Current_Environment) {
|
||||
case E_COUNTRYSIDE: return(7);
|
||||
case E_CITY: return(3);
|
||||
case E_VILLAGE: return(1);
|
||||
case E_TACTICAL_MAP: return(7);
|
||||
case E_SEWERS: return(depth/6)+3;
|
||||
case E_CASTLE: return(depth/4)+4;
|
||||
case E_CAVES: return(depth/3)+1;
|
||||
case E_VOLCANO: return(depth/4)+5;
|
||||
case E_ASTRAL: return(8);
|
||||
case E_ARENA: return(5);
|
||||
case E_HOVEL: return(3);
|
||||
case E_MANSION: return(7);
|
||||
case E_HOUSE: return(5);
|
||||
case E_DLAIR: return(9);
|
||||
case E_ABYSS: return(10);
|
||||
case E_STARPEAK: return(9);
|
||||
case E_CIRCLE: return(8);
|
||||
case E_MAGIC_ISLE: return(8);
|
||||
case E_TEMPLE: return(8);
|
||||
|
||||
case E_PALACE: /* varies by phase of moon */
|
||||
{
|
||||
int diff = 0;
|
||||
switch(Phase/2) {
|
||||
case 0: diff = 0; break;
|
||||
case 1: case 11: diff = 1; break;
|
||||
case 2: case 10: diff = 2; break;
|
||||
case 3: case 9: diff = 3; break;
|
||||
case 4: case 8: diff = 5; break;
|
||||
case 5: case 7: diff = 6; break;
|
||||
case 6: diff = 7; break;
|
||||
}
|
||||
return( min( ((depth+diff)/3)+4,9));
|
||||
}
|
||||
default: return(3);
|
||||
}
|
||||
}
|
||||
#endif
|
31
lib/CVS/Entries
Normal file
31
lib/CVS/Entries
Normal file
@ -0,0 +1,31 @@
|
||||
/Makefile/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/abyss.txt/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/help1.txt/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/help10.txt/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/help11.txt/1.1.1.1/Fri Jun 1 11:59:22 2001//
|
||||
/help12.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/help13.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/help2.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/help3.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/help4.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/help5.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/help6.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/help7.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/help8.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/help9.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/intro.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/lgpl.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/license.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/motd.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/omega.hi/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/omega.hi.backup/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/omega.log/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/omega.log.backup/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/omegatiles.xpm/1.1/Tue Aug 14 15:36:06 2001/-kb/
|
||||
/scroll1.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/scroll2.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/scroll3.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/scroll4.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/thanks.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
/update.txt/1.1.1.1/Fri Jun 1 11:59:23 2001//
|
||||
D
|
1
lib/CVS/Repository
Normal file
1
lib/CVS/Repository
Normal file
@ -0,0 +1 @@
|
||||
omega-roguelike/omega/lib
|
1
lib/CVS/Root
Normal file
1
lib/CVS/Root
Normal file
@ -0,0 +1 @@
|
||||
:pserver:anonymous@cvs.omega-roguelike.sourceforge.net:/cvsroot/omega-roguelike
|
12
lib/Makefile
Normal file
12
lib/Makefile
Normal file
@ -0,0 +1,12 @@
|
||||
MAPS = abyss.dat arena.dat circle.dat city.dat country.dat \
|
||||
court.dat dlair.dat home1.dat home2.dat home3.dat \
|
||||
maze1.dat maze2.dat maze3.dat maze4.dat misle.dat \
|
||||
speak.dat temple.dat village1.dat village2.dat village3.dat \
|
||||
village4.dat village5.dat village6.dat
|
||||
|
||||
all:
|
||||
cvs rm $(MAPS)
|
||||
|
||||
.map.dat:
|
||||
cd ../tools; make -f makefile
|
||||
../tools/crypt $@ > $@ < $<
|
BIN
lib/abyss.txt
Normal file
BIN
lib/abyss.txt
Normal file
Binary file not shown.
55
lib/help1.txt
Normal file
55
lib/help1.txt
Normal file
@ -0,0 +1,55 @@
|
||||
OMEGA OVERVIEW
|
||||
==============
|
||||
omega is a complex rogue-style game of dungeon exploration. Unlike
|
||||
other such games, there are a number of ways to "win", depending on
|
||||
various actions taken during play. The ways you can get your name on
|
||||
the hiscore board include becoming the highest ranked head of a guild,
|
||||
sect, college, etc., as well as gaining the most points figured from
|
||||
possessions and experience. The game (via the oracle) may impose some
|
||||
structure on your exploration, but you need not follow all of the
|
||||
oracle's advice. There *is* a "total winner" status, by the way.
|
||||
|
||||
omega offers a richness of playing detail that goes beyond a simple
|
||||
game like rogue. However, the majority of gameplay is very similar to
|
||||
rogue, hack, ultrarogue, larn, and other such games. The player is
|
||||
represented by the highlighted "@" symbol, objects and terrain
|
||||
features are represented by non-alphabetic symbols, monsters are
|
||||
represented by the various upper and lower case letters, and other
|
||||
humans are represented by a non-highlighted "@". It is recommended
|
||||
that the novice read the man pages for rogue or some other such game
|
||||
and perhaps play a few games before playing omega.
|
||||
|
||||
omega currently consists of a countryside in which are sited a city,
|
||||
various villages, several dungeons, and some "special" sites, such as
|
||||
the temple HQ's of the various priesthoods. The game starts in the
|
||||
city of Rampart, where all the guilds have headquarters. As a dungeon
|
||||
is explored, all generated levels are saved in memory. However, only
|
||||
one dungeon is "remembered" at a time, so if you enter two dungeons,
|
||||
the first will be forgotten (it will be regenerated should you wish to
|
||||
enter it again). However, if a dungeon is "completed", this fact will
|
||||
be remembered, basically meaning that the unique monster at the bottom
|
||||
will not be regenerated if you've killed him already.
|
||||
|
||||
You will first want to explore the city of Rampart. Although the
|
||||
architecture and important sites remain the same from game to game,
|
||||
details such as the precise position of certain shops, etc. will
|
||||
change. Rampart is relatively safe if you don't wander into places
|
||||
that are obviously dangerous or do things like breaking and entering.
|
||||
If you are reckless, it is quite possible to get killed before ever
|
||||
finding the dungeons. The 'M' command now allows you to return
|
||||
immediately to any establishment you have already visited that game,
|
||||
and is preset to "know" the permanent locations of Rampart.
|
||||
|
||||
Many Rampart establishments are only open in the daytime, but some are
|
||||
only active at night. Due to the stringent anti-crime measures taken
|
||||
by the Duke, it is usually safe to sleep in the streets. You will find
|
||||
it far more rewarding, however, to rent or purchase your own lodgings,
|
||||
if you can afford them.
|
||||
|
||||
The point of omega, though, is dungeon exploration. There are a number
|
||||
of dungeons hidden about the countryside. These dungeons are at
|
||||
different levels of difficulty and have various idiosyncratic
|
||||
differences. The easiest are the Caves of the Goblin King, which is
|
||||
due south of Rampart, in the nearby mountains. The caves must be
|
||||
searched for with 's' command unless you are lucky enough to move
|
||||
directly onto them.
|
23
lib/help10.txt
Normal file
23
lib/help10.txt
Normal file
@ -0,0 +1,23 @@
|
||||
SAVING AND RESTORING
|
||||
====================
|
||||
Since omega's dungeon is quite large, only the current dungeon and
|
||||
the city level will be saved; other dungeons you may have entered
|
||||
previously will be regenerated as you re-enter them. If you know the
|
||||
spell of Return, however, (learnable at the Explorers' Club) you will
|
||||
be able to warp to your deepest excursion in any dungeon without
|
||||
having to retraverse the old levels in between. Some other shortcuts
|
||||
exist for "warping" from one locale or level to another.
|
||||
|
||||
Games can be restored by giving the save file as a command line argument
|
||||
as in:
|
||||
|
||||
% omega quasar.sav
|
||||
|
||||
To at least simulate the continuity of character in the game, saved
|
||||
files will be unlinked on restoration. Of course, you *can* copy them.
|
||||
|
||||
Save files are automatically compressed unless the flag
|
||||
COMPRESS_SAVE_FILES is undefined in odefs.h. This doubles the amount
|
||||
of time taken to save, but reduces the typical save file by a factor
|
||||
of more than 10. If you feel that the wait is too long, and have space
|
||||
to burn, you can turn off save-file compression in the Options menu.
|
18
lib/help11.txt
Normal file
18
lib/help11.txt
Normal file
@ -0,0 +1,18 @@
|
||||
OPTION SETTINGS
|
||||
===============
|
||||
Options may be set with the 'O' command. The options are:
|
||||
|
||||
(F) BELLICOSE: Attack friendly monsters without confirmation.
|
||||
(F) JUMPMOVE: Don't display things until the end of a run.
|
||||
(T) RUNSTOP: Stop a run when something like a door is passed.
|
||||
(F) PICKUP: Automatically pick things up when you move over them.
|
||||
(T) CONFIRM: Ask confirmation before you do some dangerous things.
|
||||
(F) TOPINV: Display inventory to message line, not to full screen.
|
||||
(F) PACKADD: Add new items to pack, instead of going into inventory mode.
|
||||
(T) COMPRESS: Determines if saved games are compressed (recommended).
|
||||
(T) COLOUR: On IBMs, this toggles whether the display in in colour.
|
||||
(V) VERBOSITY: TERSE, MEDIUM, or VERBOSE, the level of detail in combat.
|
||||
(1) SEARCHNUM: the number of turns spent searching when you hit the 's' key.
|
||||
|
||||
The default values are parenthesized. These options will be recovered from
|
||||
your .omegarc if you use one.
|
68
lib/help12.txt
Normal file
68
lib/help12.txt
Normal file
@ -0,0 +1,68 @@
|
||||
DUNGEON/CITY COMMAND LIST:
|
||||
______________________________________________________________________________
|
||||
key : description : # seconds
|
||||
______________________________________________________________________________
|
||||
^f : abort the spell of shadow form : 0
|
||||
^g : enter wizard mode (WIZARD only) : 0
|
||||
^i : list items in pack : 5
|
||||
^l : redraw screen (redraw each window) : 0
|
||||
^p : print previous message (more or less) : 0
|
||||
^o : print previous message (IBM version) : 0
|
||||
^r : redraw screen (redraw curscr) : 0
|
||||
^x : make a wish (wizard mode and Adepts only) : 0
|
||||
^w : magic-map screen (wizard mode only) : 0
|
||||
a : activate a wand, staff, or rod : 10*
|
||||
c : close door : 2*
|
||||
d : drop object at current location : 5*
|
||||
e : eat something : 30
|
||||
f : fire/throw something : 5*
|
||||
g : pick up object at current location : 10*
|
||||
i : primary inventory mode (as per TOPINV option) : variable
|
||||
m : cast a magic spell : 20
|
||||
o : open door : 5*
|
||||
p : pick the pocket of an adjacent monster : 20*
|
||||
q : quaff a potion : 10
|
||||
r : read a scroll : 30*
|
||||
s : search all around you, # of times = SEARCHNUM : 20
|
||||
t : talk to an adjacent monster : 10
|
||||
v : vault over a few intervening spaces : 10*
|
||||
x : examine a location : 1
|
||||
z : bash something (adjacent location) : 10
|
||||
A : activate an item or artifact : 10
|
||||
C : call an item something : 0
|
||||
D : disarm an adjacent trap : 30
|
||||
E : dismount (exit?) from your horse : 10*
|
||||
F : set combat action sequence : 0
|
||||
G : give something to an adjacent monster : 15
|
||||
I : secondary inventory mode (as per TOPINV option) : variable
|
||||
M : move quickly to some discovered site (city only) : variable
|
||||
O : set options : 0
|
||||
P : public license information : 0
|
||||
Q : quit : 0
|
||||
R : rename character : 0
|
||||
S : save game and quit : 0
|
||||
T : dig a tunnel through a wall : 30*
|
||||
V : version information : 0
|
||||
Z : bash something (item carried) : 10*
|
||||
. : rest a turn : 10
|
||||
, : sleep some number of minutes : 60..6000
|
||||
@ : stay in current location, activating any local effect here : 5
|
||||
> : go down a level : 0~
|
||||
< : go up a level : 0~
|
||||
/ : identify the onscreen usage of some character : 0
|
||||
|
||||
vi keys (hjklbnyu) & keypad number:
|
||||
walk one space or fight adjacent monster (Regular Combat
|
||||
Mode), pick up things if PICKUP option set : 5*+
|
||||
|
||||
capitalized vi keys (HJKLBNYU) or 5 followed by keypad number:
|
||||
run in that direction, fight adjacent monster if
|
||||
BELLIGERENT option set,don't display slowly if JUMPMOVE
|
||||
option set, stop for doorways, etc. if RUNSTOP option
|
||||
set. : 4*+
|
||||
|
||||
? : display or copy help files : 0
|
||||
|
||||
* Actual time taken varies according to SPEED factor.
|
||||
+ Takes longer in City or Village (different scale for movement)
|
||||
~ Reduced to 0 time by popular demand
|
25
lib/help13.txt
Normal file
25
lib/help13.txt
Normal file
@ -0,0 +1,25 @@
|
||||
COUNTRYSIDE COMMAND LIST:
|
||||
______________________________________________________________________________
|
||||
key : description : time taken
|
||||
______________________________________________________________________________
|
||||
^p : print previous message : ---
|
||||
^o : print previous message (IBM version) : ---
|
||||
^r : redraw screen : ---
|
||||
d : drop object (will be lost forever) : ---
|
||||
e : eat something : ---
|
||||
i : inventory of things in pack (selected inventory mode) : ---
|
||||
s : search all around you for hidden traces : 1 hour
|
||||
H : hunt for food : 3 hours
|
||||
I : inventory of things in pack (alternate inventory mode) : ---
|
||||
O : set options : ---
|
||||
P : public license information : ---
|
||||
Q : quit : ---
|
||||
R : rename character : ---
|
||||
S : save game and quit : ---
|
||||
V : version information : ---
|
||||
> : enter a village, city, dungeon, et al. : ---
|
||||
/ : identify the onscreen usage of some character : ---
|
||||
? : display or copy help files : ---
|
||||
|
||||
vi keys & keypad numbers: : variable w.
|
||||
walk one space (about 20 kilometers) terrain
|
69
lib/help2.txt
Normal file
69
lib/help2.txt
Normal file
@ -0,0 +1,69 @@
|
||||
CHARACTER CREATION AND DEVELOPMENT
|
||||
==================================
|
||||
You will have the opportunity to create a new character each time you
|
||||
start up omega. A random selection of statistics will be generated.
|
||||
To discourage sitting around trying to get an "optimal" character,
|
||||
you can only "reroll" 9 times before having to reload the game. Since
|
||||
your statistics tend to go up as you play, it isn't fatal to
|
||||
have low statistics when you start out. On the other hand, high stats
|
||||
don't hurt, either....
|
||||
|
||||
Each statistic is very important, but depending what sort of character
|
||||
you wish to play, different statistics will stand out. Combat is
|
||||
helped by Strength and Dexterity, Magic-use is aided by Intelligence
|
||||
and Power. Agility helps you avoid getting hit and avoid traps, while
|
||||
Constitution determines how many hits you can take before dying.
|
||||
|
||||
A new option for omega is to "play yourself". By answering a sequence
|
||||
of personal questions, omega arrives at what your personal statistics
|
||||
should be. It is in seriously bad taste to lie.... Only the character
|
||||
you create in this mode can be saved to the omegarc. The questions are
|
||||
set up so that a "renaissance man" type of person will probably have
|
||||
stats generally around 14-15. The rest of us will stay around 9-12 on
|
||||
average. If you are really impressively good at something you can
|
||||
start out with a stat of up to 18, but this is pretty unlikely for
|
||||
most of us.
|
||||
|
||||
As you continue to play, you will hopefully accumulate experience and
|
||||
treasure. You can gain skills and abilities through various means,
|
||||
the most important being training in one of the Rampart establishments
|
||||
devoted to self-improvement. Thus, you can choose to work out at the
|
||||
gym, study at the Collegium Magii, meditate at a Temple, and
|
||||
so on. Certain skills and abilities may only be gained through
|
||||
adventuring, and others are mutually exclusive. For example, you can
|
||||
only be a priest of one particular deity. One of the appeals of
|
||||
omega is the variety of different types of characters you can play,
|
||||
each with its own set of goals and benefits.
|
||||
|
||||
Another aspect of your character is alignment. Characters are aligned
|
||||
towards the primal forces of Chaos and Law, or they can be neutral.
|
||||
Various actions affect this factor; killing peaceful monsters, or
|
||||
committing burgalry, for example, are chaotic acts. Alignment
|
||||
determines which guilds will let you in, the behavior of some
|
||||
artifacts and monsters, as well as much else.
|
||||
|
||||
Your character will gain various statuses, abilities, immunities,
|
||||
etc., both harmful and beneficial. Most of the time these are kept
|
||||
hidden from you, but there are various ways of discovering the truth
|
||||
-- self-knowledge is very useful in omega. Remember, the oracle
|
||||
knows all, sees all....
|
||||
|
||||
Experience is accrued for skillful actions in the game. As in rogue,
|
||||
one of the main methods of acquiring experience is defeating monsters.
|
||||
You need not kill an opponent to defeat it (you can use the 'threaten'
|
||||
option of the 't' command, sometimes). There are many other ways of
|
||||
gaining experience, though, including learning spells, deactivating
|
||||
traps, using artifacts correctly, etc.
|
||||
|
||||
Experience goes towards two kinds of character development. First,
|
||||
in the bizarre tradition of role-playing games like * & *, hit
|
||||
points and combat capabilities go up as experience is gained.
|
||||
|
||||
Secondly, experience gained is shared out to each of the guilds,
|
||||
priesthoods, etc. that the character belongs to. The more guilds
|
||||
the character is a member of, the slower promotion will be
|
||||
(except in the City Nobility, and among the Gladiators, where
|
||||
promotion is not based on experience, but on quests and combats,
|
||||
respectively). Regardless of the number of guilds the character
|
||||
is a member of, the first type of experience (overall character
|
||||
level) will not be adversely affected.
|
108
lib/help3.txt
Normal file
108
lib/help3.txt
Normal file
@ -0,0 +1,108 @@
|
||||
INVENTORY
|
||||
=========
|
||||
omega inventories are now much different from other rogue-like games.
|
||||
|
||||
Unlike rogue, et al., you cannot directly employ every object you
|
||||
carry. Every object may either go into your "pack" or into some
|
||||
specific inventory slot such as "belt" or "ready hand" or "left
|
||||
shoulder" etc. Some slots are dedicated to certain types of items (eg,
|
||||
only armor can go in the armor slot), but other slots are general
|
||||
purpose, like your belt or your shoulder.
|
||||
|
||||
It takes game time to transfer an object from your pack, (which can
|
||||
hold a fixed number of items) to specific slots from which the item may be
|
||||
useable. The pack is implemented as a mock-stack, so the deeper you burrow
|
||||
into your pack looking for some item, the more game time you are
|
||||
wasting. Therefore, carrying a whole lot of (semi)useless items may be
|
||||
a strategically bad move. Of course, as always, you can't carry more
|
||||
weight (either in your pack or in your inventory slots) than is
|
||||
dictated by your current STRENGTH and AGILITY.
|
||||
|
||||
INVENTORY CONTROL MODES
|
||||
=======================
|
||||
There are two type of inventory control: Display mode and Quick mode.
|
||||
Which mode you use by default can be toggled by the TOPLINE option
|
||||
settable with the 'O' command and in your .omegarc file.
|
||||
|
||||
In Display mode, all the inventory slots are displayed in the menu
|
||||
window. In Quick mode, only the message lines above the main window
|
||||
are used, and therefore the slots are not all displayed, only
|
||||
one of them at a time. Additionally, the commands are slightly
|
||||
different. One nuance to the display -- note the character following
|
||||
the index of the slot in the following two lines.
|
||||
|
||||
-- b> weapon hand: mace
|
||||
-- c) left shoulder: short sword
|
||||
|
||||
The '>' in the first line indicates the mace is "in use", while
|
||||
the ') in the second lines means the short sword is not currently
|
||||
being used. If it is possible for an item to be "in use" in the
|
||||
current slot, it will be indicated by a '>'. Therefore, if you
|
||||
don't want to put some new unidentified weapon into use, don't
|
||||
try to carry it in the weapon hand; the same holds for shields
|
||||
in the shield slot, etc.
|
||||
|
||||
The amount of time each action takes is indicated below. Dropping two
|
||||
items takes twice as long as dropping one item.
|
||||
|
||||
DISPLAY MODE:
|
||||
^l,^r: Redisplay inventory (if screen is munged). Takes no time.
|
||||
d: Drop the item currently in the 'up-in-the-air' slot, or in the
|
||||
'selected' slot if there is nothing 'up-in-the-air'. Takes one second.
|
||||
p: Put the 'up-in-the-air' item into your pack, or the 'selected'
|
||||
item, if the 'up-in-the-air' item is vacant. Takes 5 seconds.
|
||||
l: Looks at the item in the selected slot. Takes no time.
|
||||
s: Show the contents of your pack. Takes 5 seconds.
|
||||
t: Take an item from your pack and put into the 'selected' slot, or
|
||||
if that is full, tries to put into the 'up-in-the-air' slot.
|
||||
Takes 5 seconds + 1 second/item examined in pack. I.e., rummaging
|
||||
at three items before taking one takes 8 seconds.
|
||||
e: Exchange the 'up-in-the-air' slot with the 'selected' slot. This
|
||||
will merge two quantities of an item together if possible.
|
||||
Either slot may be vacant, in which case it is a simple 'put'
|
||||
or 'take' to a slot.
|
||||
Takes 2 seconds.
|
||||
x: Same as 'e' but quit inventory mode immediately if the
|
||||
up-in-the-air slot is vacant after the action (ie, if it wasn't
|
||||
an exchange, but was just a put). Helpful when picking up new items.
|
||||
Takes 2 seconds.
|
||||
>: Cause the next slot lower down to be the 'selected' one. Takes no time.
|
||||
<: Cause the next slot higher up to be the 'selected' one. Takes no time.
|
||||
?: Print this help. Takes no time.
|
||||
ESCAPE: return to game, dropping any object in the 'up-in-the-air' slot.
|
||||
Takes no time.
|
||||
|
||||
In Display Mode, the 'selected' slot is the one with a highlighted
|
||||
'->' before it.
|
||||
|
||||
QUICK (TOPINV) MODE:
|
||||
d: Drop an item. Takes one second.
|
||||
p: Put some item into your pack. Takes 5 seconds.
|
||||
l: Looks at an item. Takes no time.
|
||||
s: Show the contents of your pack. Takes 5 seconds.
|
||||
t: Take an item from your pack and put into some inventory slot, or
|
||||
into the 'up-in-the-air' slot if the one selected is full.
|
||||
Takes 5 seconds + depth of item in pack.
|
||||
e: Exchange the 'up-in-the-air' slot with some slot. This
|
||||
will merge two quantities of an item together if possible.
|
||||
Either slot may be vacant, in which case it is a simple 'put'
|
||||
or 'take' to a slot.
|
||||
Takes 2 seconds.
|
||||
x: Same as 'e' but quit inventory mode immediately if the
|
||||
up-in-the-air slot is vacant after the action (ie, if it wasn't
|
||||
an exchange, but was just a put). Helpful when picking up new items.
|
||||
Takes 2 seconds.
|
||||
~: Enter Display Mode. Takes no time.
|
||||
?: Print this help. Takes no time.
|
||||
ESCAPE: return to game, dropping any object in the 'up-in-the-air' slot.
|
||||
Takes no time.
|
||||
|
||||
In quick mode, there is no 'selected' slot, instead the letter
|
||||
identifying the slot must be entered following the command.
|
||||
|
||||
The 'e' and 'x' commands in both modes are the ones you'll use most;
|
||||
it combines taking and putting from inventory slot to "up-in-air"
|
||||
where picked-up items will be, and where you will drop items from on
|
||||
leaving the inventory mode. Usually the pack is used for items which
|
||||
it is not important to be able to get at easily, while inventory
|
||||
slots are for useful items.
|
14
lib/help4.txt
Normal file
14
lib/help4.txt
Normal file
@ -0,0 +1,14 @@
|
||||
MOVEMENT
|
||||
========
|
||||
The mechanics of movement are much like rogue. You can use either the
|
||||
vi keys (hjklbnyu) or the numeric keypad to move; the capitalized vi
|
||||
keys or a keypad direction preceded by a 5 "run" in that direction
|
||||
until either an object is run into, or an "interesting" location is
|
||||
hit. More locations are "interesting" if the "RUNSTOP" option is set.
|
||||
In most environments, a single move takes but a few seconds of game
|
||||
time, depending on the player's "Spd" score, but some places movement
|
||||
takes longer. In the countryside environment, the scale is much larger
|
||||
than usual (say 5KM/move), so a single move can take hours. (Riding a
|
||||
horse can reduce the amount of time taken in the country, depending on
|
||||
the terrain being travelled). In the city or village environments, the
|
||||
scale is such that a move takes about 30 seconds or so of gametime.
|
90
lib/help5.txt
Normal file
90
lib/help5.txt
Normal file
@ -0,0 +1,90 @@
|
||||
COMBAT
|
||||
======
|
||||
As in most rogue-like games, you attack an adjacent monster by
|
||||
attempting to move onto it.
|
||||
|
||||
At this time, your current real statistics on to-hit, damage, defense,
|
||||
and armor protection are always displayed. It is felt that the
|
||||
character would know (or quickly discover) how well any weapon, armor,
|
||||
etc. actually work. By comparing different weapons, armor, and shield
|
||||
combinations, you can decide what martial configuration is best for
|
||||
your character. Keep in mind that cost of equipment does not
|
||||
necessarily indicate how good it is (though it is a good rule of
|
||||
thumb).
|
||||
|
||||
The 'F' command allows you to select precisely which actions you will
|
||||
take in a combat round -- parry high, thrust low, etc. You have
|
||||
several maneuver points for use in each combat round, depending on
|
||||
level, status as a gladiator, etc. At the beginning of the game, your
|
||||
combat options are already set for you, but as you progress, and
|
||||
possibly gain more maneuvers, the preset options will not be
|
||||
automatically updated, so remember to do it yourself periodically, as
|
||||
you may be losing the chance at more maneuvers if you do not.
|
||||
|
||||
The following are your combat options:
|
||||
|
||||
A) ATTACK: Punch, Cut, Strike, Shoot, or Thrust (depending on weapon) -- 1 pt.
|
||||
B) BLOCK: Prepare to block or parry enemy attack -- 1 pt.
|
||||
R) RIPOSTE: BLOCK/ATTACK (thrusting weapons only) -- 2 pts.
|
||||
L) LUNGE: More chance to hit than usual, does more damage -- 2 pts.
|
||||
|
||||
Keep on selecting maneuvers until you have no maneuver points left.
|
||||
It does absolutely no good to have points left over.
|
||||
|
||||
Following the choice of the maneuver, you must select a line for the
|
||||
action: L (low), C (center), or H (high). Some monster will tend to
|
||||
attack in a given line (short/small monsters, for example, will
|
||||
tend to attack low), so this choice is meaningful. If you block or
|
||||
riposte low, when the attack is high, you will have wasted the effect
|
||||
of the block. On the other hand, if you block low twice, and the
|
||||
attack is low, you will defend doubly. If you don't block or riposte
|
||||
at all, it will be particularly easy for monsters to hit you.
|
||||
|
||||
Keep on selecting maneuvers until you have no maneuver points left.
|
||||
Hitting the BACKSPACE or DELETE key will erase your current choices
|
||||
and let you start over. When you are satisfied, confirm your
|
||||
choice with the RETURN key. Once a choice is selected, it stays in
|
||||
effect until you change it; you need not reset it for each attack.
|
||||
Selecting combat maneuvers takes no time.
|
||||
|
||||
If you are in VERBOSE mode (settable with the 'O' command) you'll see
|
||||
just what the monster is doing, whether the blocks are effective,
|
||||
and so on. Otherwise you'll just be told whether you hit or miss.
|
||||
|
||||
If you select VERBOSE mode, you will be able to see just where your
|
||||
opponent attacks. Some monsters may show a particular sequence or
|
||||
location which they attack in; you can use this information to your
|
||||
advantage by setting your own attacks and blocks accordingly.
|
||||
|
||||
You can try multiple identical maneuvers if you like. If you don't try
|
||||
any BLOCKS at all, it will be easier than usual for your opponent to
|
||||
hit. Even if you don't get the location correct, a BLOCK still does
|
||||
some good. A RIPOSTE attacks in the same line as its block, if you got
|
||||
the line right. I.e., if you are attacked high, a high riposte will
|
||||
get a free attack back. If you are attacked high three times, a high
|
||||
riposte will get three free attacks back. Each block or riposte is
|
||||
good for your entire move; no matter how many monsters attack you you
|
||||
will be able to block or riposte each one. Naturally, each attack can
|
||||
only be used against one monster.
|
||||
|
||||
Heavy edged weapons and smashing weapons do CUTTING or STRIKING
|
||||
damage. Your strength affects this, so if it is high you will do
|
||||
much more damage, and if low, much less.
|
||||
|
||||
Light edged weapons, missile weapons, and pointed weapons do THRUSTING
|
||||
or SHOOTING attacks, whose chance to hit is greatly affected by your
|
||||
dexterity. Note that you can't use a missile weapon very well in
|
||||
ordinary combat (i.e. when you move adjacent to a monster) -- you
|
||||
would be using a crossbow as a club, for instance. Instead,
|
||||
use the 'f' command to fire missiles when at long range, and change
|
||||
to a melee weapon for close combat.
|
||||
|
||||
A note on weapons use: A weapon is not prepared for combat unless
|
||||
it is in the "weapon hand" slot in your inventory. Anywhere else
|
||||
means you are just carrying it around.... Two-handed weapons will
|
||||
automatically take both hand slots, so remember to have both
|
||||
hands free if you want to wield such a weapon.
|
||||
|
||||
Shields, of course, will only have effect in the "shield" slot,
|
||||
while armor is only considered to be worn if it is in the "armor"
|
||||
slot.
|
13
lib/help6.txt
Normal file
13
lib/help6.txt
Normal file
@ -0,0 +1,13 @@
|
||||
BUGS AND FEATURES
|
||||
=================
|
||||
"It's not a bug, it's an undocumented feature."
|
||||
|
||||
omega is not just a large program, it is a large, complicated, and not
|
||||
particularly well written program. There are so many features that not
|
||||
all can be well tested, particularly in combination with one another.
|
||||
Therefore, it is likely that your version, whatever it is, has some
|
||||
bugs. The author no longer strives to correct bugs and remedy
|
||||
misfeatures, so you probably shouldn't send mail to
|
||||
brothers@paul.rutgers.edu. However, if you send such mail to
|
||||
omega@alcyone.darkside.com (Erik Max Francis), there may be attempts
|
||||
to remedy the problem - don't hold your breath, though.
|
13
lib/help7.txt
Normal file
13
lib/help7.txt
Normal file
@ -0,0 +1,13 @@
|
||||
MAGIC
|
||||
=====
|
||||
Your character may be taught spells by his or her guild or priesthood,
|
||||
at the collegium magii, by the sorceror's guild, or pick them up from
|
||||
a scroll of spells. Every spell costs some amount of mana to cast.
|
||||
Mana is not normally regenerated except when the player goes up an
|
||||
experience level, but various magic items augment mana, and the
|
||||
sorceror's guild will recharge you for a fee. If you learn the same
|
||||
spell multiple times, the effective power drain to cast the spell is
|
||||
lowered. Some spells have a constant effect, while others vary
|
||||
according to your level. The spell of ritual magic has a variety of
|
||||
different effects depending on the circumstances under which it is
|
||||
cast. The spell of high magic is the most powerful, by the way.
|
44
lib/help8.txt
Normal file
44
lib/help8.txt
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
THE COUNTRYSIDE
|
||||
===============
|
||||
Rampart is set in a strange landscape of different terrain types. The
|
||||
land is surrounded in part by a mystic sea of chaos which it is
|
||||
probably a good idea to avoid. Screen characters have a different
|
||||
meaning in the countryside than they do elsewhere, by the way, and
|
||||
there is a different command set (accessible by '?' when out of the
|
||||
city). Time passes much more quickly in countryside movement; you will
|
||||
have to bring a lot of food with you, though you may wish to
|
||||
hunt ('H' command) to supplement your food reserves; many of the
|
||||
animals that you may encounter, for example, are edible.
|
||||
|
||||
Since each countryside site is quite a large area, you may have
|
||||
to search ('s' command) to learn of interesting sites nearby.
|
||||
|
||||
Countryside Map Example:
|
||||
|
||||
++----.--- The @ as usual is the player; the +'s are an arm of the Sea of
|
||||
+++++O--^^ Chaos; the O is the city of Rampart; the ^'s are mountains;
|
||||
----@----^ the .'s are a road; the -'s are plains and meadows;
|
||||
---.-^^^^^ and the * is a dungeon entrance.
|
||||
...-^*^^^^
|
||||
|
||||
The countryside can be rather dangerous for low level characters to
|
||||
explore at random. However, maps of the surrounding areas can be
|
||||
purchased at the villages which can be found mostly at the ends
|
||||
of the roads. Each village has a "special" magical site somewhere
|
||||
inside its borders. These sites may be beneficial or harmful
|
||||
depending how they are approached and the circumstances of their
|
||||
activation.
|
||||
|
||||
There are a number of "special" locations in the countryside; these
|
||||
are basically one-level screens of various sorts, or they may be
|
||||
multi-level dungeons. If you follow the advice of the oracle
|
||||
who may be found somewhere in Rampart, you will wind up visiting most
|
||||
of these sites.
|
||||
|
||||
A special site or dungeon may be entered from the Countryside
|
||||
environment by means of the '>' command. Depending whether or not it
|
||||
is a multilevel or single level site, it may be exited simply by
|
||||
moving off the edge of the screen, or by ascending or descending a
|
||||
stairway from the first level of the dungeon.
|
||||
|
77
lib/help9.txt
Normal file
77
lib/help9.txt
Normal file
@ -0,0 +1,77 @@
|
||||
WHAT YOU SEE ON THE SCREEN
|
||||
==========================
|
||||
|
||||
Map: The large central area represents a map of the current
|
||||
environment. On it, the highlighted @ always represents the player,
|
||||
letters represent monsters, non-highlighted @'s represent other
|
||||
humans, and other characters represent either objects or terrain
|
||||
features. The map will take up as much of the screen as is possible,
|
||||
so if you are running in a windowing system make the omega window as
|
||||
large as it can be.
|
||||
|
||||
Since the same character can represent different things or entities
|
||||
(even in the same environment), a good command to remember is 'x'
|
||||
(examine), which will tell you precisely what you are dealing with in
|
||||
any situation. This is especially helpful before you have terrain
|
||||
types like deep pools and lava pits (!) memorized.... You can use the
|
||||
CONFIRM option to avoid walking absent-mindedly into a trap, pool,
|
||||
etc. The '/' command will give you more general help, for example
|
||||
telling you that the ')' character represents a weapon. The '?'
|
||||
command can give you either a command list or this file. The command
|
||||
lists will differ depending whether you are in the countryside, or a
|
||||
dungeon or city.
|
||||
|
||||
Messages: Directly above the map window is a three line area that
|
||||
shows current messages from the game describing what is going on.
|
||||
The ^p command, or ^o for IBM users, shows old messages.
|
||||
|
||||
Location: Directly beneath the map window is a one line description
|
||||
of your current location or environment.
|
||||
|
||||
Statistics: Beneath the Location line are two lines that show
|
||||
the current state of the player's statistics such as strength,
|
||||
dexterity, constitution, agility, intelligence, power, mana,
|
||||
gold pieces, carrying capacity, etc. When the value given looks
|
||||
like number1 / number2, number1 represents the current value,
|
||||
and number2 represents a maximum value.
|
||||
|
||||
Flags: In the upper right corner of the omega display, below the date
|
||||
and time, and phase of the moon, you will see four flags: The top
|
||||
describes your food status, the second describes your status with
|
||||
respect to poison, the third your health (diseased or healthy), and
|
||||
the fourth, your mode of transportation. While you are diseased you
|
||||
will not regain hit points naturally. While you are poisoned you will
|
||||
take damage periodically until cured or killed (or the poison's effect
|
||||
can naturally fade). When your food runs out, and you start starving,
|
||||
you will take more and more damage as time passes until finally you
|
||||
die of starvation. It's always a good idea to stock up at the
|
||||
Commandant's.... If you manage to acquire a horse, your SPEED will
|
||||
probably improve (unless you were very fast already). Regardless of
|
||||
SPEED, having a horse will save some time in countryside movement, and
|
||||
may also help out your combat strength. However, horses tend not to
|
||||
enjoy going into dungeons....
|
||||
|
||||
Combat Abilities: In the lower right of the display, your current
|
||||
combat abilities are displayed. These are:
|
||||
|
||||
Hit: is your current chance to hit with the weapon currently wielded,
|
||||
the higher the better. This factor varies with your DEXTERITY,
|
||||
experience level, and the weapon wielded.
|
||||
Dmg: is the maximum amount of damage you can do with a hit. This factor
|
||||
varies with your STRENGTH and the weapon wielded.
|
||||
Def: is your defensive rating, how hard it is for monsters to hit you. This
|
||||
factor varies with your AGILITY and experience level, and with
|
||||
the shield being used.
|
||||
Arm: is your armor rating, how much damage is absorbed when a monster
|
||||
hits you before you take damage. Armor only absorbs normal damage;
|
||||
various effects and forms of magic may penetrate armor. This factor
|
||||
varies with the armor worn.
|
||||
Spd: is a speed factor, how quickly or how slowly you move. This factor is
|
||||
calculated about a base of 1.00; 2.00 means you move twice as fast;
|
||||
0.50 means you move twice as slowly as normal. This factor varies
|
||||
with your AGILITY and the amount of weight you are carrying.
|
||||
Every monster has its own speed factor. The maximum speed is 5.0;
|
||||
the minimum is infinitesimal.
|
||||
|
||||
Magic spells, special items, and monster effects can affect all these factors,
|
||||
positively and negatively.
|
BIN
lib/intro.txt
Normal file
BIN
lib/intro.txt
Normal file
Binary file not shown.
482
lib/lgpl.txt
Normal file
482
lib/lgpl.txt
Normal file
@ -0,0 +1,482 @@
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the library GPL. It is
|
||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Library General Public License, applies to some
|
||||
specially designated Free Software Foundation software, and to any
|
||||
other libraries whose authors decide to use it. You can use it for
|
||||
your libraries, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the library, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link a program with the library, you must provide
|
||||
complete object files to the recipients so that they can relink them
|
||||
with the library, after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
Our method of protecting your rights has two steps: (1) copyright
|
||||
the library, and (2) offer you this license which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
Also, for each distributor's protection, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
library. If the library is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original
|
||||
version, so that any problems introduced by others will not reflect on
|
||||
the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that companies distributing free
|
||||
software will individually obtain patent licenses, thus in effect
|
||||
transforming the program into proprietary software. To prevent this,
|
||||
we have made it clear that any patent must be licensed for everyone's
|
||||
free use or not licensed at all.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary
|
||||
GNU General Public License, which was designed for utility programs. This
|
||||
license, the GNU Library General Public License, applies to certain
|
||||
designated libraries. This license is quite different from the ordinary
|
||||
one; be sure to read it in full, and don't assume that anything in it is
|
||||
the same as in the ordinary license.
|
||||
|
||||
The reason we have a separate public license for some libraries is that
|
||||
they blur the distinction we usually make between modifying or adding to a
|
||||
program and simply using it. Linking a program with a library, without
|
||||
changing the library, is in some sense simply using the library, and is
|
||||
analogous to running a utility program or application program. However, in
|
||||
a textual and legal sense, the linked executable is a combined work, a
|
||||
derivative of the original library, and the ordinary General Public License
|
||||
treats it as such.
|
||||
|
||||
Because of this blurred distinction, using the ordinary General
|
||||
Public License for libraries did not effectively promote software
|
||||
sharing, because most developers did not use the libraries. We
|
||||
concluded that weaker conditions might promote sharing better.
|
||||
|
||||
However, unrestricted linking of non-free programs would deprive the
|
||||
users of those programs of all benefit from the free status of the
|
||||
libraries themselves. This Library General Public License is intended to
|
||||
permit developers of non-free programs to use free libraries, while
|
||||
preserving your freedom as a user of such programs to change the free
|
||||
libraries that are incorporated in them. (We have not seen how to achieve
|
||||
this as regards changes in header files, but we have achieved it as regards
|
||||
changes in the actual functions of the Library.) The hope is that this
|
||||
will lead to faster development of free libraries.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, while the latter only
|
||||
works together with the library.
|
||||
|
||||
Note that it is possible for a library to be covered by the ordinary
|
||||
General Public License rather than by this special one.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library which
|
||||
contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Library
|
||||
General Public License (also called "this License"). Each licensee is
|
||||
addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also compile or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
c) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
d) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the source code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Library General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
61
lib/license.txt
Normal file
61
lib/license.txt
Normal file
@ -0,0 +1,61 @@
|
||||
omega
|
||||
=====
|
||||
|
||||
General Public License:
|
||||
|
||||
omega is copyright (C) 1987,1988,1989,1998 by Laurence R. Brothers
|
||||
|
||||
Omega 0.90 is distributed under the terms of the GNU Library General Public
|
||||
Licence, version 2, included in the file lgpl.txt. The license on the
|
||||
pre-alpha versions of Omega 0.90 is revocable by notice from Laurence R.
|
||||
Brothers. If this license is revoked, Omega will revert to being licensed
|
||||
according to the terms of Laurence's original license.txt, included here as
|
||||
license.old. See omega.bug2 for a (non-binding) explanation of the motives
|
||||
for this change.
|
||||
|
||||
For the purposes of the LGPL, Omega is defined as a library, and a "program"
|
||||
is considered additional levels, monsters, and other modifications beyond
|
||||
those distributed in the pristine 0.90 source, only if said additions affect
|
||||
only the runtime (so that an Omega binary which can use said additions may
|
||||
be correctly compiled from the possibly modified source you provide
|
||||
according to the terms of the LGPL).
|
||||
|
||||
No warranty is made for omega's operation. Any damages incurred in the use
|
||||
of omega or in its implementation are solely the responsibility of the
|
||||
end-user.
|
||||
|
||||
Compensation: I waive all rights to compensation for the use of omega
|
||||
by licensees. However, those wishing to send money, international
|
||||
postal reply coupons, interesting postcards, marbles, grimoires, etc.
|
||||
will find their contributions freely accepted.
|
||||
|
||||
Suggestions, fan mail, and money may be sent to the
|
||||
author at:
|
||||
|
||||
Laurence R. Brothers
|
||||
Bell Communications Research
|
||||
RRC 1H-225
|
||||
444 Hoes Lane
|
||||
Piscataway, NJ 08854
|
||||
USA
|
||||
|
||||
All the above save money may also be sent to:
|
||||
|
||||
brothers@paul.rutgers.edu
|
||||
|
||||
Bug reports and suggestions can also be sent to the current maintainer
|
||||
of Omega. Currently, this is
|
||||
wtanksle@ucsd.edu (William Tanksley)
|
||||
Since Laurence has moved on and indicates that he is no longer interested
|
||||
in maintaining the game, you have a much greater chance of action if you
|
||||
email the maintainer.
|
||||
|
||||
The latest version of omega is available for anonymous ftp from
|
||||
monu1.cc.monash.edu.au [130.194.1.101] in /pub/omega.
|
||||
|
||||
This version of Omega, 0.90 prealpha 2, is distributed by wtanksle@ucsd.edu
|
||||
(William Tanksley). If you have any troubles with it, suggestions for a
|
||||
friendlier user interface, more puzzles, or any other topic you'd like to
|
||||
see addressed, please write to William. Every suggestion's fair game; it's
|
||||
been too long since Omega's gotten the respect that it deserves. Feel free
|
||||
to check for the latest version at http://lyric.ml.org/~wtanksle/omega/.
|
19
lib/motd.txt
Normal file
19
lib/motd.txt
Normal file
@ -0,0 +1,19 @@
|
||||
*******
|
||||
***** *****
|
||||
***** *****
|
||||
**** welcome ****
|
||||
*** t o ***
|
||||
*** omega ***
|
||||
**** ****
|
||||
**** ****
|
||||
* ** ** *
|
||||
***** *****
|
||||
|
||||
omega version 0.90-pa8 is copyright (C) 1987,1988,1989 by:
|
||||
Laurence R. Brothers
|
||||
and is licensed under the LGPL.
|
||||
Maintained by: William Tanksley (wtanksley@bigfoot.com).
|
||||
Send suggestions and complaints about this prealpha to
|
||||
William Tanksley, or visit
|
||||
http://dolphin.openprojects.net/Omega/.
|
||||
|
35
lib/omega.hi
Normal file
35
lib/omega.hi
Normal file
@ -0,0 +1,35 @@
|
||||
Zippy
|
||||
Killed by a pun
|
||||
0 0 2713
|
||||
Gallow
|
||||
10 2711
|
||||
Kharst
|
||||
10 2712
|
||||
Allana
|
||||
10 2931
|
||||
Dara
|
||||
10 2932
|
||||
Thistleman
|
||||
10 2933
|
||||
Humperdinck
|
||||
10 5718
|
||||
Shadowspawn
|
||||
10 2712
|
||||
Sonders
|
||||
10 2713
|
||||
Oz
|
||||
10 2933
|
||||
Blackskull
|
||||
10 2932
|
||||
Spartacus
|
||||
10 2713
|
||||
Cormorant
|
||||
10 2718
|
||||
Arioch
|
||||
10 -100 2712
|
||||
Ariel
|
||||
10 100 2711
|
||||
Morgon
|
||||
10 2718
|
||||
Man Zhong
|
||||
10 2913
|
35
lib/omega.hi.backup
Normal file
35
lib/omega.hi.backup
Normal file
@ -0,0 +1,35 @@
|
||||
Zippy
|
||||
Killed by a pun
|
||||
0 0 2713
|
||||
Gallow
|
||||
10 2711
|
||||
Kharst
|
||||
10 2712
|
||||
Allana
|
||||
10 2931
|
||||
Dara
|
||||
10 2932
|
||||
Thistleman
|
||||
10 2933
|
||||
Humperdinck
|
||||
10 5718
|
||||
Shadowspawn
|
||||
10 2712
|
||||
Sonders
|
||||
10 2713
|
||||
Oz
|
||||
10 2933
|
||||
Blackskull
|
||||
10 2932
|
||||
Spartacus
|
||||
10 2713
|
||||
Cormorant
|
||||
10 2718
|
||||
Arioch
|
||||
10 -100 2712
|
||||
Ariel
|
||||
10 100 2711
|
||||
Morgon
|
||||
10 2718
|
||||
Man Zhong
|
||||
10 2913
|
4
lib/omega.log
Normal file
4
lib/omega.log
Normal file
@ -0,0 +1,4 @@
|
||||
1 2 1118 Caspar (The Friendly Ghost)
|
||||
2 5 2718 Slongo the Unknown
|
||||
2 3 2618 Vlad Tepes
|
||||
2 2 3012 Bedwyr the Brave
|
4
lib/omega.log.backup
Normal file
4
lib/omega.log.backup
Normal file
@ -0,0 +1,4 @@
|
||||
1 2 1118 Caspar (The Friendly Ghost)
|
||||
2 5 2718 Slongo the Unknown
|
||||
2 3 2618 Vlad Tepes
|
||||
2 2 3012 Bedwyr the Brave
|
893
lib/omegatiles.xpm
Normal file
893
lib/omegatiles.xpm
Normal file
@ -0,0 +1,893 @@
|
||||
/* XPM */
|
||||
static char * omegatiles_xpm[] = {
|
||||
"289 703 187 2",
|
||||
" c None",
|
||||
". c #EE0000",
|
||||
"+ c #000000",
|
||||
"@ c #FFFFFF",
|
||||
"# c #777777",
|
||||
"$ c #444444",
|
||||
"% c #555555",
|
||||
"& c #111111",
|
||||
"* c #888888",
|
||||
"= c #AAAAAA",
|
||||
"- c #DDDDDD",
|
||||
"; c #EEEEEE",
|
||||
"> c #BBBBBB",
|
||||
", c #00CCCC",
|
||||
"' c #0066CC",
|
||||
") c #222222",
|
||||
"! c #0099CC",
|
||||
"~ c #0033CC",
|
||||
"{ c #007700",
|
||||
"] c #002200",
|
||||
"^ c #004400",
|
||||
"/ c #005500",
|
||||
"( c #00AA00",
|
||||
"_ c #008800",
|
||||
": c #99FF66",
|
||||
"< c #770000",
|
||||
"[ c #AA0000",
|
||||
"} c #0033FF",
|
||||
"| c #663300",
|
||||
"1 c #FF3300",
|
||||
"2 c #003399",
|
||||
"3 c #003366",
|
||||
"4 c #220000",
|
||||
"5 c #550000",
|
||||
"6 c #336600",
|
||||
"7 c #880000",
|
||||
"8 c #FFFF00",
|
||||
"9 c #BB0000",
|
||||
"0 c #006699",
|
||||
"a c #FF6600",
|
||||
"b c #0000EE",
|
||||
"c c #3399FF",
|
||||
"d c #996600",
|
||||
"e c #CC6600",
|
||||
"f c #330066",
|
||||
"g c #00EE00",
|
||||
"h c #3300FF",
|
||||
"i c #333300",
|
||||
"j c #3300CC",
|
||||
"k c #FFCC00",
|
||||
"l c #6666CC",
|
||||
"m c #330099",
|
||||
"n c #CC6666",
|
||||
"o c #993300",
|
||||
"p c #6699CC",
|
||||
"q c #CC9966",
|
||||
"r c #CC9900",
|
||||
"s c #FFCC99",
|
||||
"t c #CCCC00",
|
||||
"u c #CC0000",
|
||||
"v c #330000",
|
||||
"w c #996699",
|
||||
"x c #666699",
|
||||
"y c #663399",
|
||||
"z c #440000",
|
||||
"A c #666600",
|
||||
"B c #333366",
|
||||
"C c #330033",
|
||||
"D c #660099",
|
||||
"E c #660000",
|
||||
"F c #9933FF",
|
||||
"G c #990000",
|
||||
"H c #0066FF",
|
||||
"I c #FF6699",
|
||||
"J c #669999",
|
||||
"K c #00DD00",
|
||||
"L c #FF9999",
|
||||
"M c #669966",
|
||||
"N c #336666",
|
||||
"O c #663333",
|
||||
"P c #FFFF33",
|
||||
"Q c #99CC00",
|
||||
"R c #990099",
|
||||
"S c #999966",
|
||||
"T c #FF9966",
|
||||
"U c #669900",
|
||||
"V c #996666",
|
||||
"W c #993333",
|
||||
"X c #999900",
|
||||
"Y c #336633",
|
||||
"Z c #009933",
|
||||
"` c #00CCFF",
|
||||
" . c #00CC33",
|
||||
".. c #FF0000",
|
||||
"+. c #006600",
|
||||
"@. c #FFCCCC",
|
||||
"#. c #CC3300",
|
||||
"$. c #DD0000",
|
||||
"%. c #996633",
|
||||
"&. c #336699",
|
||||
"*. c #FF99CC",
|
||||
"=. c #000088",
|
||||
"-. c #CC6633",
|
||||
";. c #CCFFFF",
|
||||
">. c #000077",
|
||||
",. c #990066",
|
||||
"'. c #009900",
|
||||
"). c #339900",
|
||||
"!. c #99CCCC",
|
||||
"~. c #00FFFF",
|
||||
"{. c #003300",
|
||||
"]. c #FF9900",
|
||||
"^. c #660033",
|
||||
"/. c #9966CC",
|
||||
"(. c #FF00CC",
|
||||
"_. c #FFCCFF",
|
||||
":. c #FFFF99",
|
||||
"<. c #663366",
|
||||
"[. c #6600FF",
|
||||
"}. c #3333CC",
|
||||
"|. c #3333FF",
|
||||
"1. c #333399",
|
||||
"2. c #006633",
|
||||
"3. c #003333",
|
||||
"4. c #00BB00",
|
||||
"5. c #FFFF66",
|
||||
"6. c #CC0099",
|
||||
"7. c #CC3399",
|
||||
"8. c #0000DD",
|
||||
"9. c #0000AA",
|
||||
"0. c #33CCFF",
|
||||
"a. c #33FFCC",
|
||||
"b. c #33FFFF",
|
||||
"c. c #000044",
|
||||
"d. c #3399CC",
|
||||
"e. c #CC9999",
|
||||
"f. c #9999CC",
|
||||
"g. c #9966FF",
|
||||
"h. c #000022",
|
||||
"i. c #CC99FF",
|
||||
"j. c #0000BB",
|
||||
"k. c #FF6666",
|
||||
"l. c #00FFCC",
|
||||
"m. c #00CC00",
|
||||
"n. c #CC0033",
|
||||
"o. c #33CC66",
|
||||
"p. c #009966",
|
||||
"q. c #CC0066",
|
||||
"r. c #993366",
|
||||
"s. c #339933",
|
||||
"t. c #66FF99",
|
||||
"u. c #00FF99",
|
||||
"v. c #993399",
|
||||
"w. c #3366CC",
|
||||
"x. c #6666FF",
|
||||
"y. c #66CC33",
|
||||
"z. c #6699FF",
|
||||
"A. c #999933",
|
||||
"B. c #000066",
|
||||
"C. c #99CC66",
|
||||
"D. c #FF3399",
|
||||
"E. c #00CC66",
|
||||
"F. c #339966",
|
||||
"G. c #FF33FF",
|
||||
"H. c #66CC99",
|
||||
"I. c #0000CC",
|
||||
"J. c #FF66FF",
|
||||
"K. c #9933CC",
|
||||
"L. c #3366FF",
|
||||
"M. c #110000",
|
||||
"N. c #CCCCFF",
|
||||
"O. c #66FFCC",
|
||||
"P. c #006666",
|
||||
"Q. c #CCFF00",
|
||||
"R. c #33FF99",
|
||||
"S. c #6633CC",
|
||||
"T. c #666633",
|
||||
"U. c #66CCFF",
|
||||
"V. c #FFCC33",
|
||||
"W. c #FF99FF",
|
||||
"X. c #99CC99",
|
||||
"Y. c #99FF33",
|
||||
"Z. c #99CCFF",
|
||||
"`. c #FFCC66",
|
||||
" + c #FF9933",
|
||||
".+ c #9999FF",
|
||||
"++ c #339999",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". + + + + + + + + . + + + @ @ + + + . + @ @ + @ @ + + . + @ @ + @ @ + + . + + + @ + + + + . # @ # + + + + + . + @ @ @ + + + + . + + + @ @ + + + . + + + + @ + + + . + + @ + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + > @ + . & @ @ @ @ @ + + . + + + @ @ + + + . + @ @ @ @ @ + + . + @ @ @ @ @ + + . @ @ + + + @ @ + . @ @ @ @ @ @ @ + . + @ @ @ @ @ + + . @ @ @ @ @ @ @ + . + @ @ @ @ @ + + . + @ @ @ @ @ + + . + + + + + + + + . + + + + + + + + . & & & & @ @ + + . + + + + + + + + . + @ @ + + + + + . + + @ @ @ @ + + . ",
|
||||
". + + + + + + + + . + + + @ @ + + + . + @ @ + @ @ + + . + @ @ + @ @ + + . + @ @ @ @ @ + + . @ + @ + + $ @ + . @ @ + @ @ + + + . + + + @ @ + + + . + + + @ @ + + + . + + @ @ + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + % @ % + . @ @ + + + @ @ + . + + @ @ @ + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . + + + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + + + + + + . + + + + + + + + . & & & @ @ + + + . + + + + + + + + . + + @ @ + + + + . + @ @ + + @ @ + . ",
|
||||
". + + + + + + + + . + + + @ @ + + + . + @ @ + @ @ + + . @ @ @ @ @ @ @ + . @ @ + @ + @ @ + . @ + @ + $ @ $ + . @ @ + @ @ + + + . + + + @ @ + + + . + + # @ # + + + . + + # @ # + + + . + $ + + + $ + + . + + + @ + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + @ > + + . @ @ + + + @ @ + . + + @ @ @ + + + . + + + + + @ @ + . + + + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + + + + . + + + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + + + + + + . & & @ @ + + + + . + + + + + + + + . + + + @ @ + + + . + + + + + @ @ + . ",
|
||||
". + + + + + + + + . + + + @ @ + + + . + @ @ + @ @ + + . % @ @ % @ @ % + . @ @ + @ + + + + . # @ # $ @ $ + + . @ @ + @ @ + + + . + + + @ @ + + + . + + @ @ + + + + . + + + @ @ + + + . + @ # + # @ + + . + + + @ + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + > @ + + + . @ @ + + @ @ @ + . + + + @ @ + + + . + + + + + @ @ + . + + + + + @ @ + . @ @ + + + @ @ + . @ @ @ @ @ @ + + . @ @ + + + + + + . + + + + @ @ + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + @ @ + + + . & @ @ + + + + + . @ @ @ @ @ @ @ + . + + + + @ @ + + . + + + + @ @ + + . ",
|
||||
". + + + + + + + + . + + + @ @ + + + . + + + + + + + + . + @ @ + @ @ + + . + @ @ @ @ @ + + . + + $ @ $ + + + . + @ @ @ + + + + . + + + + + + + + . + + @ @ + + + + . + + + @ @ + + + . + $ @ # @ $ + + . + + + @ + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + % @ % + + + . @ @ + @ + @ @ + . + + + @ @ + + + . + + + + @ @ + + . + + @ @ @ @ + + . @ @ @ @ @ @ @ + . + + + + + @ @ + . @ @ @ @ @ @ + + . + + + @ @ + + + . + @ @ @ @ @ + + . + @ @ @ @ @ @ + . + + + + + + + + . + + + @ @ + + + . @ @ + + + + + + . + + + + + + + + . + + + + + @ @ + . + + + @ @ + + + . ",
|
||||
". + + + + + + + + . + + + @ @ + + + . + + + + + + + + . % @ @ % @ @ % + . + + + @ + @ @ + . + $ @ $ # @ # + . @ @ + @ @ + @ + . + + + + + + + + . + + @ @ + + + + . + + + @ @ + + + . @ @ @ @ @ @ @ + . @ @ @ @ @ @ @ + . + + + + + + + + . @ @ @ @ @ @ @ + . + + + + + + + + . + + @ > + + + + . @ @ @ + + @ @ + . + + + @ @ + + + . + + + @ @ + + + . + + + + + @ @ + . + + + + + @ @ + . + + + + + @ @ + . @ @ + + + @ @ + . + + @ @ + + + + . @ @ + + + @ @ + . + + + + + @ @ + . + + + + + + + + . + + + + + + + + . + @ @ + + + + + . + + + + + + + + . + + + + @ @ + + . + + + @ @ + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . @ @ @ @ @ @ @ + . @ @ + @ + @ @ + . $ @ $ + @ + @ + . @ @ + + @ @ + + . + + + + + + + + . + + # @ # + + + . + + # @ # + + + . + $ @ # @ $ + + . + + + @ + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + > @ + + + + + . @ @ + + + @ @ + . + + + @ @ + + + . + + @ @ + + + + . + + + + + @ @ + . + + + + + @ @ + . + + + + + @ @ + . @ @ + + + @ @ + . + @ @ + + + + + . @ @ + + + @ @ + . + + + + + @ @ + . + + + @ @ + + + . + + + + + + + + . + + @ @ + + + + . @ @ @ @ @ @ @ + . + + + @ @ + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + @ @ + + + . + + + + + + + + . + @ @ + @ @ + + . + @ @ @ @ @ + + . @ $ + + @ + @ + . @ @ + + + @ @ + . + + + + + + + + . + + + @ @ + + + . + + @ @ + + + + . + @ # + # @ + + . + + + @ + + + + . + + + @ @ + + + . + + + + + + + + . + + + @ @ + + + . % @ % + + + + + . @ @ + + + @ @ + . + + + @ @ + + + . + @ @ + + + + + . @ @ + + + @ @ + . + + + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + @ @ + + + . + + + @ @ + + + . + + + + + + + + . + + @ @ + + + + . + + + @ @ + + + . ",
|
||||
". + + + + + + + + . + + + @ @ + + + . + + + + + + + + . + @ @ + @ @ + + . + + + @ + + + + . + + + + # @ # + . + @ @ @ @ + @ + . + + + + + + + + . + + + + @ + + + . + + @ + + + + + . + $ + + + $ + + . + + + @ + + + + . + + + @ @ + + + . + + + + + + + + . + + + @ @ + + + . @ > + + + + + + . + @ @ @ @ @ + + . + + @ @ @ @ + + . @ @ @ @ @ @ @ + . + @ @ @ @ @ + + . + + + + + @ @ + . + @ @ @ @ @ + + . + @ @ @ @ @ + + . + @ @ + + + + + . + @ @ @ @ @ + + . + @ @ @ @ @ + + . + + + + + + + + . + + + @ @ + + + . + + + + @ @ + + . + + + + + + + + . + @ @ + + + + + . + + + @ @ + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + @ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + @ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + ; + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + ; + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". & * @ @ @ * + + . + + + @ + + + + . @ @ @ @ @ @ + + . + @ @ @ @ @ + + . @ @ @ @ @ @ + + . @ @ @ @ @ @ @ + . @ @ @ @ @ @ @ + . + @ @ @ @ @ + + . @ @ + + + @ @ + . + @ @ @ @ @ @ + . + + + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ @ @ @ + + . @ @ @ @ @ @ + + . + @ @ @ @ @ + + . @ @ @ @ @ @ + + . + @ @ @ @ @ + + . + @ @ @ @ @ @ + . ; ; + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ + + @ @ + . @ @ @ @ @ @ @ + . + + @ @ @ @ + + . @ > + + + + + + . + + @ @ @ @ + + . & & & @ + + + + . + + + + + + + + . ",
|
||||
". * @ + + + @ * + . + + @ @ @ + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + + + @ @ + . @ @ + + @ @ + + . @ @ + + + + + + . @ @ @ + @ @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ # + # @ @ + . + + + @ @ + + + . ; ; + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ + + @ @ + . + + + + + @ @ + . + + @ @ + + + + . % @ % + + + + + . + + + + @ @ + + . & & @ @ @ + + + . + + + + + + + + . ",
|
||||
". @ + # @ # + @ + . + @ @ + @ @ + + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + + + + . @ @ + + + + + + . @ @ + + + @ @ + . + + + @ @ + + + . + + + + + @ @ + . @ @ + @ @ + + + . @ @ + + + + + + . @ @ @ @ @ @ @ + . @ @ @ + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . + + + @ @ + + + . ; ; + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ + @ @ + + . + @ @ + + @ @ + . + + + + @ @ + + . + + @ @ + + + + . + > @ + + + + + . + + + + @ @ + + . & @ @ + @ @ + + . + + + + + + + + . ",
|
||||
". @ + @ # @ + @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + + + + . @ @ + + + + + + . @ @ + + + @ @ + . + + + @ @ + + + . + + + + + @ @ + . @ @ @ @ + + + + . @ @ + + + + + + . @ @ # @ # @ @ + . @ @ @ @ + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ # + + + + + . + + + @ @ + + + . ; ; + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + @ @ @ + + + . + @ @ + + @ @ + . + + + @ @ + + + . + + @ @ + + + + . + + @ > + + + + . + + + + @ @ + + . @ @ + + + @ @ + . + + + + + + + + . ",
|
||||
". @ + @ # @ + @ + . @ @ + + + @ @ + . @ @ @ @ @ @ + + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ @ @ @ @ + + . @ @ @ @ @ @ + + . @ @ + + + + + + . @ @ @ @ @ @ @ + . + + + @ @ + + + . + + + + + @ @ + . @ @ @ + + + + + . @ @ + + + + + + . @ @ + @ + @ @ + . @ @ + @ @ @ @ + . @ @ + + + @ @ + . @ @ @ @ @ @ + + . @ @ + + + @ @ + . @ @ @ @ @ @ + + . + @ @ @ @ @ + + . + + + @ @ + + + . ; ; + + + @ @ + . @ @ + + + @ @ + . @ @ + @ + @ @ + . + + # @ # + + + . + + @ @ @ @ + + . + + @ @ + + + + . + + @ @ + + + + . + + % @ % + + + . + + + + @ @ + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". @ + @ # @ % @ + . @ @ @ @ @ @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + + + + . @ @ + + @ @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + + + @ @ + . @ @ @ @ + + + + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + @ @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ @ @ + + + + . + + + + # @ @ + . + + + @ @ + + + . ; ; + + + @ @ + . @ @ + + + @ @ + . @ @ % @ % @ @ + . + + @ @ @ + + + . + + + @ @ + + + . + @ @ + + + + + . + + @ @ + + + + . + + + > @ + + + . + + + + @ @ + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". @ + # @ % @ + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . @ @ + + + @ @ + . @ @ + @ @ + + + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + @ @ + @ + . @ @ + @ @ + + + . + + + + + @ @ + . + + + @ @ + + + . ; ; + + + @ @ + . + @ @ + @ @ + + . @ @ @ @ @ @ @ + . + @ @ + @ @ + + . + + + @ @ + + + . @ @ + + + + + + . + + @ @ + + + + . + + + + @ > + + . + + + + @ @ + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". * @ + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . @ @ + + + @ @ + . @ @ + + @ @ + + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + @ @ + + . @ @ + + @ @ + + . @ @ # + # @ @ + . + + + @ @ + + + . = ; = % = @ = + . + + @ @ @ + + + . @ @ @ % @ @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . @ @ + + + + + + . + + @ @ + + + + . + + + + % @ % + . + + + + @ @ + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + * @ @ @ @ + + . @ @ + + + @ @ + . @ @ @ @ @ @ + + . + @ @ @ @ @ + + . @ @ @ @ @ @ + + . @ @ @ @ @ @ @ + . @ @ + + + + + + . + @ @ @ @ @ + + . @ @ + + + @ @ + . + @ @ @ @ @ @ + . + @ @ @ @ @ + + . @ @ + + + @ @ + . @ @ @ @ @ @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ @ @ @ + + . @ @ + + + + + + . + @ @ @ + @ @ + . @ @ + + + @ @ + . + @ @ @ @ @ + + . + + + @ @ + + + . + = ; ; ; = + + . + + + @ + + + + . % @ % + % @ % + . @ @ + + + @ @ + . + + + @ @ + + + . @ @ @ @ @ @ @ + . + + @ @ @ @ + + . + + + + + > @ + . + + @ @ @ @ + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . @ @ @ @ @ @ @ @ . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". + % @ = + + + + . + + + + + + + + . @ @ + + + + + + . + + + + + + + + . + + + + + @ @ + . + + + + + + + + . + + @ @ @ @ + + . + + + + + + + + . @ @ + + + + + + . + + + @ @ + + + . + + + @ @ + + + . @ @ + + + + + + . + + @ @ @ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + @ @ + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + @ @ @ + + . + + + @ @ + + + . + @ @ @ + + + + . + + + + + + + + . # @ # + # ; # + . ",
|
||||
". + + = @ % + + + . + + + + + + + + . @ @ + + + + + + . + + + + + + + + . + + + + + @ @ + . + + + + + + + + . + @ @ + + @ @ + . + + + + + + + + . @ @ + + + + + + . + + + + + + + + . + + + + + + + + . @ @ + + + + + + . + + + @ @ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + @ @ + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + @ @ + + + + . + + + @ @ + + + . + + + @ @ + + + . + $ @ = + @ + + . @ + @ + ; + ; + . ",
|
||||
". + + % @ = + + + . + @ @ @ @ @ + + . @ @ @ @ @ @ + + . + @ @ @ @ @ + + . + @ @ @ @ @ @ + . + @ @ @ @ @ + + . + @ @ + + + + + . + @ @ @ @ @ + + . @ @ @ @ @ @ + + . + + @ @ @ + + + . + + @ @ @ + + + . @ @ + + + @ @ + . + + + @ @ + + + . @ @ @ % @ @ + + . @ @ @ @ @ @ + + . + @ @ @ @ @ + + . @ @ @ @ @ @ + + . + @ @ @ @ @ @ + . @ @ + ; ; ; ; + . + @ @ @ @ @ + + . @ @ @ @ @ @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ @ @ @ @ @ + . + + @ @ + + + + . + + + @ @ + + + . + + + @ @ + + + . + @ + = @ $ + + . @ + @ + ; + ; + . ",
|
||||
". + + + = @ % + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + @ @ + + + . @ @ + + @ @ + + . + + + @ @ + + + . @ @ @ @ @ @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ @ + + + + + . @ @ + + + + + + . + + @ @ + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ + @ @ + + . @ @ + + + @ @ + . + + + + @ @ + + . + + @ @ + + + + . + + + @ @ + + + . + + + @ @ + + + . + + + + + + + + . @ + @ + ; + ; + . ",
|
||||
". + + + + + + + + . + + + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ @ @ @ @ + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + @ @ + + + . @ @ + @ @ + + + . + + + @ @ + + + . @ @ + @ + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + + + + . + + @ @ + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + @ + @ @ + . + + @ @ @ + + + . @ @ + + + @ @ + . + + + @ @ + + + . + @ @ + + + + + . + + + @ @ + + + . + + + + @ @ + + . + + + + + + + + . # @ # + # ; # + . ",
|
||||
". + + + + + + + + . + @ @ @ @ @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ @ @ @ @ @ + . + @ @ + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + @ @ + + + . @ @ @ @ + + + + . + + + @ @ + + + . @ @ + @ + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . + @ @ @ @ + + + . + + @ @ + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + @ + @ @ + . + + # @ # + + + . @ @ + + + @ @ + . + + @ @ + + + + . + + @ @ + + + + . + + + @ @ + + + . + + + @ @ + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . @ @ + + + @ @ + . @ @ + + + + + + . + @ @ + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + @ @ + + + . @ @ + @ @ + + + . + + + @ @ + + + . @ @ + @ + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . + + + + @ @ + + . + + @ @ + + + + . @ @ + + + @ @ + . + @ @ + @ @ + + . @ @ + @ + @ @ + . + + @ @ @ + + + . @ @ + + + @ @ + . + @ @ + + + + + . + + @ @ + + + + . + + + @ @ + + + . + + + @ @ + + + . + + + + + + + + . @ @ @ + @ @ @ + . ",
|
||||
". + + + + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ + + + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + + + @ @ + + + . + + + @ @ + + + . @ @ + + @ @ + + . + + + @ @ + + + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + @ @ + . @ @ + + + + + + . + + + + @ @ + + . + + @ @ + + + + . @ @ + + + @ @ + . + + @ @ @ + + + . @ @ @ @ @ @ @ + . + @ @ + @ @ + + . @ @ + + + @ @ + . @ @ + + + + + + . + + @ @ + + + + . + + + @ @ + + + . + + + @ @ + + + . + + + + + + + + . + + @ + @ + + + . ",
|
||||
". + + + + + + + + . + @ @ @ @ @ @ + . @ @ @ @ @ @ + + . + @ @ @ @ @ + + . + @ @ @ @ @ @ + . + @ @ @ @ @ + + . + @ @ + + + + + . + @ @ @ @ @ @ + . @ @ + + + @ @ + . + + @ @ @ @ + + . + + + @ @ + + + . @ @ + + + @ @ + . + + @ @ @ @ + + . @ @ + + + @ @ + . @ @ + + + @ @ + . + @ @ @ @ @ + + . @ @ @ @ @ @ + + . + @ @ @ @ @ @ + . @ @ + + + + + + . @ @ @ @ @ + + + . + + + @ @ + + + . + @ @ @ @ @ @ + . + + + @ + + + + . + @ @ % @ @ + + . @ @ + + + @ @ + . + @ @ @ @ @ @ + . @ @ @ @ @ @ @ + . + + + @ @ @ + + . + + + @ @ + + + . + @ @ @ + + + + . + + + + + + + + . + = % + @ @ + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + @ @ + . + + + + + + + + . + + + + + + + + . + + + @ @ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . @ @ + + + + + + . + + + + + @ @ + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + @ @ + . + + + + + + + + . + + + + + + + + . + + + @ @ + + + . + + + + + + + + . + + + + + + + + . + @ + + @ + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + @ @ + . + + + + + + + + . + + + + + + + + . + + + @ @ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . @ @ + + + + + + . + + + + + @ @ + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + @ @ + . + + + + + + + + . + + + + + + + + . + + + @ @ + + + . + + + + + + + + . + + + + + + + + . + @ + + @ + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + @ @ @ @ @ + + . + + + + + + + + . + + + + + + + + . + + @ @ + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . @ @ + + + + + + . + + + + + @ @ + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + @ @ @ @ @ + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". + + + + + + + + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . @ @ @ @ @ @ @ @ . + + + + + + + + . + + + + + + + + . @ + @ + @ + @ + . + + % @ @ % + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + @ + + + + . + + + @ + + + + . - - = + - - = + . + + + + + + + + . + + + + + + + + . # @ # + # ; # + . # @ # + # @ # + . # @ # + # ; # + . # @ # + # ; # + . # @ # + # ; # + . # @ # + # ; # + . # @ # + # ; # + . ",
|
||||
". + + + + + + + + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + @ + @ + @ + @ . + + @ + + @ + + . + + + @ + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + @ + + + + . + + @ @ @ + + + . - = # + - = # + . + + + + + + + + . + + + + + + + + . @ + @ + ; + ; + . @ + @ + @ + @ + . @ + @ + ; + ; + . @ + @ + ; + ; + . @ + @ + ; + ; + . @ + @ + ; + ; + . @ + @ + ; + ; + . ",
|
||||
". + + + + + + + + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + + + + + + + + . + + + @ + + + + . @ + @ + @ + @ + . + + @ + + @ + + . + + + @ + + + + . + + $ @ @ $ + + . + + + + + + + + . + + + + + + + + . + + + @ + + + + . + ; $ @ $ ; + + . = # # + = # # + . + @ + + + @ + + . - - - - - - = + . @ + @ + ; + ; + . @ + @ + @ + @ + . @ + @ + ; + ; + . @ + @ + ; + ; + . @ + @ + ; + ; + . @ + @ + ; + ; + . @ + @ + ; + ; + . ",
|
||||
". + - - - - - - - . + - * * * * * - . - - - - - - * + . - - * * * * $ + . - - * * * * $ + . + - * * * * * - . - - * * * * * - . - - - - - - - - . - - - - - - - - . + - * * * * $ + . - - * * * * * - . + + + + + + + + . + + + + + + + + . + + @ # @ + + + . + @ + @ + @ + @ . + + % @ @ % + + . + @ @ @ @ @ + + . + + @ @ @ @ + + . + + ; + + + + + . + + + + + ; + + . + + + @ + + + + . + + + @ + + + + . + + + + + + + + . + + @ @ @ + + + . - # # # # = # + . @ + @ + ; + ; + . @ + @ + @ + @ + . @ + @ + ; + ; + . @ + @ + ; + ; + . @ + @ + ; + ; + . @ + @ + ; + ; + . @ + @ + ; + ; + . ",
|
||||
". + - * * * * * * . + - * * * * * * . * * * * * * $ + . * * * * * * $ + . * * * * * * $ + . + - * * * * * * . * * * * * * * * . * * * * * * * * . * * * * * * * * . + - * * * * $ + . * * * * * * * * . + + + + + + + + . + + + + + + + + . + @ # + # @ + + . @ + @ + @ + @ + . + + + + + + + + . + + + @ + + + + . + + @ @ @ @ + + . + @ $ + + + + + . + + + + + $ @ + . + + + @ + + + + . + + + @ + + + + . - - = + - - = + . + + @ + @ + + + . - # = = = - # + . # @ # + # ; # + . # @ # + # @ # + . # @ # + # ; # + . # @ # + # ; # + . # @ # + # ; # + . # @ # + # ; # + . # @ # + # ; # + . ",
|
||||
". + - * * * * * * . + - * * * * * * . * * * * * * $ + . * * * * * * $ + . * * * * * * $ + . + - * * * * * * . * * * * * * * * . * * * * * * * * . * * * * * * * * . + - * * * * $ + . * * * * * * * * . + + + + + + + + . + + + + + + + + . @ # + + + # @ + . + @ + @ + @ + @ . + + + + + + + + . + + + @ + + + + . + + $ @ @ $ + + . @ @ @ @ @ @ @ + . + @ @ @ @ @ @ @ . + ; $ @ $ ; + + . + + + @ + + + + . - = # + - = # + . + + @ @ @ + + + . - # = = = - # + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + - * * * * * * . + - * * * * * * . * * * * * * $ + . * * * * * * $ + . * * * * * * $ + . + - * * * * * * . * * * * * * * * . * * * * * * * * . * * * * * * * * . + - * * * * $ + . * * * * * * * * . + + + + + + + + . + + + + + + + + . + @ # + # @ + + . @ + @ + @ + @ + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + @ $ + + + + + . + + + + + $ @ + . + + @ @ @ + + + . + + + @ + + + + . = # # + = # # + . + @ + + + @ + + . - # = = = - # + . # @ # + # @ # + . # @ # + + ; + + . # @ # + @ @ # + . # @ # + + @ @ + . # @ # + @ @ + + . # @ # + @ @ @ + . # @ # + @ @ @ + . ",
|
||||
". + - * * * * * * . + - * * * * * * . * * * * * * $ + . * * * * * * $ + . * * * * * * $ + . + - * * * * * * . * * * * * * * * . * * * * * * * * . * * * * * * * * . + - * * * * $ + . * * * * * * * * . + + + + + + + + . + + + + + + + + . + + @ # @ + + + . + @ + @ + @ + @ . + + + + + + + + . + @ @ @ @ @ + + . + + + + + + + + . + + ; + + + + + . + + + + + ; + + . + + + @ + + + + . + + + @ + + + + . + + + + + + + + . + + + + + + + + . - = - - - - # + . @ + @ + @ + @ + . @ + @ + @ + @ + . @ + @ + @ + @ + . @ + @ + @ # + + . @ + @ + @ + @ + . @ + @ + @ + + + . @ + @ + @ + + + . ",
|
||||
". + - * * * * $ $ . + * $ $ $ $ $ $ . $ * * * * * $ + . $ $ $ $ $ $ $ + . $ * * * * * $ + . + - * * * * $ $ . $ $ $ $ $ $ $ $ . $ * * * * * $ $ . $ $ $ $ $ $ $ $ . + - * * * * $ + . $ * * * * * $ $ . + + + + + + + + . + + + + + + + + . + + + @ + + + + . @ + @ + @ + @ + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . - - = + - - = + . + + + + + + + + . = # # # # # # + . # @ @ + # @ @ + . # @ @ + @ @ @ + . # @ @ + @ @ # + . # @ @ + @ + + + . # @ @ + @ + @ + . # @ @ + @ @ + + . # @ @ + @ @ + + . ",
|
||||
". + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + @ + @ + @ + @ . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . - = # + - = # + . + + + + + + + + . + + + + + + + + . + + @ + + + @ + . + + @ + @ + @ + . + + @ + @ + @ + . + + @ + @ # + + . + + @ + @ & @ + . + + @ + @ + + + . + + @ + @ + + + . ",
|
||||
". + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + + + + + + + + . + + + + + + + + . @ + @ + @ + @ + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . = # # + = # # + . + + + + + + + + . + + + + + + + + . @ @ # + @ @ # + . @ @ # + @ + @ + . @ @ # + @ @ # + . @ @ # + + @ @ + . @ @ # + @ @ + + . @ @ # + @ @ @ + . @ @ # + @ + + + . ",
|
||||
". + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + + + + + + + + . + - * * * * $ + . + - * * * * $ + . + + + + + + + + . @ @ @ @ @ @ @ @ . + + + + + + + + . + @ + @ + @ + @ . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". , , , , , , , , . ' , , , , , , , . , , , , , , , ' . , , , , , , , , . , , , , , , , , . ' , , , , , , ' . , , , , , , , , . ' , , , , , , , . , , , , , , , ' . , , , , , , , ' . ' , , , , , , , . ' , , , , , , ' . ' , , , , , , ' . ' , , , , , , , . , , , , , , , ' . ' , , , , , , ' . + + + + + + + + . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . + + + + + + + + . + + + + + + + + . ' , , , , , , , . , , , , , , , ' . + + + + + + + + . ' , , , , , , ' . + ! , , , , , ' . + ! , , , , , , . ' , , , , , ! + . , , , , , , ! + . + ! , , , , , ' . ' , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . ! ! ! ! ! ! ! ! . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . , , , , , , , , . , , , , , , , , . ! ! ! ! ! ! ! ! . , , , , , , , , . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . , , , , , , , , . ! ! ! ! ! ! ! ! . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . , , , , , , , , . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . , , , , , , , , . ! ! ! ! ! ! ! ! . + ! , , , , , , . + ! , , , , , , . , , , , , , ! + . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . ",
|
||||
". , , , , , , , , . , , , , , , , , . , , , , , , , , . ' , , , , , , , . , , , , , , , ' . , , , , , , , , . ' , , , , , , ' . ' , , , , , , , . , , , , , , , ' . ' , , , , , , , . , , , , , , , ' . ' , , , , , , , . , , , , , , , ' . ' , , , , , , ' . ' , , , , , , ' . ' , , , , , , ' . , , , , , , , , . + + + + + + + + . + ! , , , , , , . , , , , , , ! + . ' , , , , , , , . , , , , , , , ' . + + + + + + + + . + + + + + + + + . ' , , , , , , ' . + + + + + + + + . + ! , , , , , , . + ! , , , , , ' . , , , , , , ! + . ' , , , , , ! + . + ! , , , , , ' . ' , , , , , ! + . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". # # ) + + + + + . + + + + + # # # . + ! , , , , , , . , , , , , , ! + . + + + + + + + + . + ! , , , , ! + . # # ) + + + + + . + + + + + # # # . + ! , , , , , ' . ' , , , , , ! + . # # ) + + + + + . + + + + + # # # . # # ) + + # # # . + ! , , , , ! + . # # ) # # # # # . # + + # + # + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ + # . + $ $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . ",
|
||||
". # + + ~ ' ! ! ! . ! ! ! ' ~ + + # . + ! , , , , , , . , , , , , , ! + . ! ! ! ! ! ! ! ! . + ! , , , , ! + . # + + ~ ' ! ! ! . ! ! ! ' ~ + + # . + ! , , , , , , . , , , , , , ! + . # + + ~ ' ! ! ! . ! ! ! ' ~ + + # . # + + ~ ~ + + # . + ! , , , , ! + . # # + + + + # # . + $ $ + + # + + . $ $ $ $ $ $ $ $ . + $ $ $ $ $ $ $ . $ $ $ $ $ $ $ + . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . + $ $ $ $ $ $ + . $ $ $ $ $ $ $ $ . + $ $ $ $ $ $ $ . $ $ $ $ $ $ $ + . $ $ $ $ $ $ $ + . + $ $ $ $ $ $ $ . + $ $ $ $ $ $ + . + $ $ $ $ $ $ + . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ + . + $ $ $ $ $ $ + . ",
|
||||
". # + ' ! , , , , . , , , , ! ' + # . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . + ! , , , , ! + . # + ' ! , , , , . , , , , ! ' + # . + ! , , , , , , . , , , , , , ! + . # + ' ! , , , , . , , , , ! ' + # . # + ' ! ! ' + # . + ! , , , , ! + . # + ~ ' ' ~ + # . + $ $ $ $ + ) % . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . ",
|
||||
". + ~ ! , , , , , . , , , , , ! ~ + . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . + ! , , , , ! + . + ~ ! , , , , , . , , , , , ! ~ + . + ! , , , , , , . , , , , , , ! + . + ~ ! , , , , , . , , , , , ! ~ + . + ~ ! , , ! ~ + . + ! , , , , ! + . ) + ! , , ! + ) . # + $ $ + + % ) . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . ",
|
||||
". + ' , , , , , , . , , , , , , ' + . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . + ! , , , , ! + . + ' , , , , , , . , , , , , , ' + . + ! , , , , , , . , , , , , , ! + . + ' , , , , , , . , , , , , , ' + . + ' , , , , ' + . + ! , , , , ! + . + ~ , , , , ~ + . + $ $ + > + ) + . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . ",
|
||||
". + ! , , , , , , . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . + ! , , , , ! + . + ! , , , , , , . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . + ! , , , , ! + . + ! , , , , ! + . + ' , , , , ' + . # + $ + > + + + . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . ",
|
||||
". + ! , , , , , , . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . , , , , , , , , . + ! , , , , ! + . + ! , , , , , , . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . + ! , , , , , , . , , , , , , ! + . + ! , , , , ! + . + ! , , , , ! + . + ' , , , , ' + . + + + ) + $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . ",
|
||||
". + ! , , , , , , . , , , , , , ! + . + ' , , , , , , . , , , , , , ' + . , , , , , , , , . + ! , , , , ! + . + ! , , , , , , . , , , , , , ! + . + ' , , , , , , . , , , , , , ' + . + ' , , , , , , . , , , , , , ' + . + ! , , , , ! + . + ' , , , , ' + . + ~ , , , , ~ + . # + ) ) + $ + + . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . ",
|
||||
". + ! , , , , , , . , , , , , , ! + . + ~ ! , , , , , . , , , , , ! ~ + . , , , , , , , , . + ! , , , , ! + . + ! , , , , , , . , , , , , , ! + . + ~ ! , , , , , . , , , , , ! ~ + . + ~ ! , , , , , . , , , , , ! ~ + . + ! , , , , ! + . + ~ ! , , ! ~ + . # + ! , , ! + # . + + + ) ) + > + . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . ",
|
||||
". + ! , , , , , , . , , , , , , ! + . ) + ' ! , , , , . , , , , ! ' + ) . , , , , , , , , . + ! , , , , ! + . + ! , , , , , , . , , , , , , ! + . ) + ' ! , , , , . , , , , ! ' + ) . ) + ' ! , , , , . , , , , ! ' + ) . + ! , , , , ! + . ) + ' ! ! ' + ) . ) + ~ ' ' ~ + ) . + > # + ) ) > + . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . ",
|
||||
". + ! , , , , , , . , , , , , , ! + . # + + ~ ' ! ! ! . ! ! ! ' ~ + + # . ! ! ! ! ! ! ! ! . + ! , , , , ! + . + ! , , , , , , . , , , , , , ! + . # + + ~ ' ! ! ! . ! ! ! ' ~ + + # . # + + ~ ' ! ! ! . ! ! ! ' ~ + + # . + ! , , , , ! + . # + + ~ ~ + + # . # # + + + + # # . + ) $ + + + + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . + $ $ $ $ $ $ $ . $ $ $ $ $ $ $ + . $ $ $ $ $ $ $ $ . + $ $ $ $ $ $ + . + $ $ $ $ $ $ $ . $ $ $ $ $ $ $ + . + $ $ $ $ $ $ $ . $ $ $ $ $ $ $ + . + $ $ $ $ $ $ $ . $ $ $ $ $ $ $ + . + $ $ $ $ $ $ + . + $ $ $ $ $ $ + . + $ $ $ $ $ $ + . ",
|
||||
". + ! , , , , , , . , , , , , , ! + . # # ) + + + + + . + + + + + # # # . + + + + + + + + . + ! , , , , ! + . + ! , , , , , ' . ' , , , , , ! + . # # ) + + + + + . + + + + + # # # . # # ) + + + + + . + + + + + # # # . + ! , , , , ! + . # # ) + + # # # . # # ) # # # # # . # + + + # + # + . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". # # # # # # # # . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # # # # # # # # . # # # # # # # # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # # # # # # # # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ $ $ . # + $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # # # # # # # # . # # # # # # # # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # # # # # # # # . # + $ $ $ $ + # . # # # # # # # # . # # # # # # # # . # + $ $ $ $ + # . # + $ $ $ $ + # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # + $ $ $ $ + # . # # # # # # # # . # # ) # # # # # . ",
|
||||
". + + + + + + + + . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . + + + + + + + + . + + + + + + + + . + $ $ $ $ $ $ $ . $ $ $ $ $ $ $ + . + + + + + + + + . + $ $ $ $ $ $ + . # + $ $ $ $ $ + . # + $ $ $ $ $ $ . + $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ + . + $ $ $ $ $ + # . # # + + + + + + . + + + + + + # # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . + + + + + + + + . # + $ $ $ $ + # . # # + + + + + + . + + + + + + # # . # + $ $ $ $ $ + . + $ $ $ $ $ + # . # # + + + + + + . + + + + + + # # . # # + + + + # # . # + $ $ $ $ + # . # # + + + + # # . # # * * * * # # . ",
|
||||
". $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # > = = = = > # . ",
|
||||
". $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . = = $ ) ) $ = = . ",
|
||||
". $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . * $ & + + & $ * . ",
|
||||
". $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . * ) + + + + ) * . ",
|
||||
". $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . * ) + + + + ) * . ",
|
||||
". $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . * $ & + + & $ * . ",
|
||||
". $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . = = $ ) ) $ = = . ",
|
||||
". $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ . # + $ $ $ $ $ $ . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . $ $ $ $ $ $ $ $ . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . ) > = = = = > ) . ",
|
||||
". $ $ $ $ $ $ $ $ . + + + + + + + + . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . + $ $ $ $ $ $ $ . $ $ $ $ $ $ $ + . + + + + + + + + . + + + + + + + + . + $ $ $ $ $ $ + . + + + + + + + + . # + $ $ $ $ $ $ . # + $ $ $ $ $ + . $ $ $ $ $ $ + # . + $ $ $ $ $ + # . # + $ $ $ $ $ + . + $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # # + + + + + + . + + + + + + # # . + + + + + + + + . # + $ $ $ $ + # . # + $ $ $ $ $ + . + $ $ $ $ $ + # . # # + + + + + + . + + + + + + # # . # # + + + + + + . + + + + + + # # . # + $ $ $ $ + # . # # + + + + # # . # # + + + + # # . # # * * * * # # . ",
|
||||
". $ $ $ $ $ $ $ $ . # # # # # # # # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # # # # # # # # . # # # # # # # # . # + $ $ $ $ + # . # # # # # # # # . # + $ $ $ $ $ $ . # + $ $ $ $ + # . $ $ $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ $ $ . $ $ $ $ $ $ + # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # + $ $ $ $ + # . # + $ $ $ $ + # . # + $ $ $ $ + # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # + $ $ $ $ + # . # # # # # # # # . # # # # # # # # . # # ) # # # # # . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". { { { { { { { { . ] ^ { { { { { { . { { { { { { ^ ] . { { { { { { { { . { { { { { { { { . ] ^ { { { { ^ ] . { { { { { { { { . ] ^ { { { { { { . { { { { { { ^ ] . { { { { { { ^ ] . ] ^ { { { { { { . ] ^ { { { { ^ ] . ] ^ { { { { ^ ] . ] ^ { { { { { { . { { { { { { ^ ] . ] ^ { { { { ^ ] . ] ] ] ] ] ] ] ] . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . ] ] ] ] ] ] ] ] . ] ] ] ] ] ] ] ] . ] ^ { { { { { { . { { { { { { ^ ] . ] ] ] ] ] ] ] ] . ] ^ { { { { ^ ] . ] / { { { { ^ ] . ] / { { { { { { . ] ^ { { { { / ] . { { { { { { / ] . ] / { { { { ^ ] . ] ^ { { { { / ] . ",
|
||||
". { { { { { { { { . ^ / { { { { { { . { { { { { { / ^ . { { { { { { { { . { { { { { { { { . ^ / { { { { / ^ . { { { { { { { { . ^ / { { { { { { . { { { { { { / ^ . { { { { { { / ^ . ^ / { { { { { { . ^ / { { { { / ^ . ^ / { { { { / ^ . ^ / { { { { { { . { { { { { { / ^ . ^ / { { { { / ^ . / / / / / / / / . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . / / / / / / / / . / / / / / / / / . ^ / { { { { { { . { { { { { { / ^ . / / / / / / / / . ^ / { { { { / ^ . ] / { { { { / ^ . ] / { { { { { { . ^ / { { { { / ] . { { { { { { / ] . ] / { { { { / ^ . ^ / { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . { { { { { { { { . ] / { { { { { { . ] / { { { { { { . { { { { { { / ] . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . ^ / { { { { { { . { { { { { { / ^ . { { { { { { { { . ^ / { { { { / ^ . ^ / { { { { { { . { { { { { { / ^ . ^ / { { { { { { . { { { { { { / ^ . ^ / { { { { { { . { { { { { { / ^ . ^ / { { { { / ^ . ^ / { { { { / ^ . ^ / { { { { / ^ . { { { { { { { { . / / / / / / / / . ] / { { { { { { . { { { { { { / ] . ^ / { { { { { { . { { { { { { / ^ . / / / / / / / / . / / / / / / / / . ^ / { { { { / ^ . / / / / / / / / . ] / { { { { { { . ] / { { { { / ^ . { { { { { { / ] . ^ / { { { { / ] . ] / { { { { / ^ . ^ / { { { { / ] . ",
|
||||
". { { { { { { { { . { { { { { { { { . { { { { { { { { . ] ^ { { { { { { . { { { { { { ^ ] . { { { { { { { { . ] ^ { { { { ^ ] . ] ^ { { { { { { . { { { { { { / ] . ] ^ { { { { { { . { { { { { { ^ ] . ] ^ { { { { { { . { { { { { { ^ ] . ] ^ { { { { ^ ] . ] ^ { { { { ^ ] . ] ^ { { { { ^ ] . { { { { { { { { . ] ] ] ] ] ] ] ] . ] / { { { { { { . { { { { { { / ] . ] ^ { { { { { { . { { { { { { ^ ] . ] ] ] ] ] ] ] ] . ] ] ] ] ] ] ] ] . ] ^ { { { { ^ ] . ] ] ] ] ] ] ] ] . ] / { { { { { { . ] / { { { { ^ ] . { { { { { { / ] . ] ^ { { { { / ] . ] / { { { { ^ ] . ] ^ { { { { / ] . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". # # ^ ] ] ] ] ] . ] ] ] ] ] ^ # # . ] / { { { { { { . { { { { { { / ] . ] ] ] ] ] ] ] ] . ] / { { { { / ] . # # ^ ] ] ] ] ] . ] ] ] ] ] ^ # # . ] / { { { { ^ ] . ] ^ { { { { / ] . # # ^ ] ] ] ] ] . ] ] ] ] ] ^ # # . # # ^ ] ] ^ # # . ] / { { { { / ] . # # ^ ] ] ^ # # . + + + + + + + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . # # ) # # # # # . + + + + + + + + . + + + + + + + + . + + + + + + + + . # # + + + + # # . # # ) # # # # # . 4 4 5 4 5 5 4 4 . + + + + + + + + . # # # 6 6 # # # . ",
|
||||
". # ] ^ / / / / / . / / / / / ^ ] # . ] / { { { { { { . { { { { { { / ] . / / / / / / / / . ] / { { { { / ] . # ] ^ / / / / / . / / / / / ^ ] # . ] / { { { { / ^ . ^ / { { { { / ] . # ] ^ / / / / / . / / / / / ^ ] # . # ] ^ / / ^ ] # . ] / { { { { / ] . # ] ^ / / ^ ] # . + + + + + + + + . @ @ + % * @ @ @ . @ & & & & & & @ . @ @ > > > > @ @ . @ @ = ) = @ @ @ . @ ) % @ @ % ) @ . @ ( : @ @ : { @ . @ @ @ @ @ @ @ @ . # $ ) ) ) ) $ # . + + + + + + + + . + # # # # # # + . + # # # # # # + . # + ) # = $ + # . # # ) # # # # # . 5 4 5 4 7 5 4 4 . + } 2 + 2 + 8 + . # 6 $ + + $ 6 # . ",
|
||||
". ^ ^ / { { { { { . { { { { { / ^ ^ . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . ] / { { { { / ] . ^ ^ / { { { { { . { { { { { / ^ ^ . ] / { { { { { { . { { { { { { / ] . ^ ^ / { { { { { . { { { { { / ^ ^ . ^ ^ / { { / ^ ^ . ] / { { { { / ] . ^ ^ / { { / ^ ^ . + + + + + + + + . @ @ * + + % @ @ . @ & @ @ $ @ & @ . @ > + + + + > @ . @ @ + ) + # @ @ . @ & & & & & & @ . @ { ( : @ { { @ . @ & @ @ @ @ & @ . $ ) + + + + ) $ . + + + & & + + + . + $ $ $ $ $ $ + . + $ # # % $ % + . # + $ = = ; + # . # $ & + + & $ # . 5 4 9 7 7 4 7 4 . + + 0 2 + 8 + + . # $ + = = + $ 6 . ",
|
||||
". ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . ] / { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . + + + + + + + + . @ @ @ + + + = @ . @ & @ $ ) @ & @ . @ + # > > # + @ . @ ) + ) + # @ @ . @ & & & & & & @ . @ _ { ( : { { @ . @ & & & & & & @ . ) + < [ [ < + ) . + + + + + + + + . + $ % % % % $ + . + $ # # $ & $ + . # + $ = = ; + # . ) + } ~ ~ } + ) . 5 7 4 7 a 4 9 1 . + 8 + } } + 2 + . 6 + = * * = + $ . ",
|
||||
". ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . ] / { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . + + + + + + + + . @ @ @ $ + + % @ . @ & @ ) ) @ & @ . @ + > @ @ > + @ . @ ) + ) + # % @ . @ & > & & > & @ . @ : _ | ^ { : @ . @ & $ $ $ $ & @ . ) < 1 . 1 . < ) . + & & ) ) & & + . + ) ) ) ) ) ) + . + # # # % $ % + . # + ) = ; # + # . & } 2 3 3 2 } & . a 7 9 . a 7 a 1 . + + 2 0 0 2 + + . $ $ = * # * ) + . ",
|
||||
". ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . ] / { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . + + + + + + + + . @ @ @ % + + ) @ . @ & @ # $ @ & @ . @ + > @ @ > + @ . @ ) + ) + % + @ . @ & & % ) & & @ . @ @ : ^ : : ( @ . @ & & & & & & @ . ) [ . 1 . 1 [ ) . + & & & & & & + . + ) $ $ $ $ ) + . + # # # # # # + . + ) # = = = $ + . + ~ 3 b b 3 ~ + . a . a . 1 7 a 1 . + 2 0 } } 0 + + . + = * # % $ ) + . ",
|
||||
". ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . ] / { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . + + + + + + + + . @ @ @ % + + ) @ . @ & @ $ ) @ & @ . @ + * @ @ * + @ . @ + + + + % + @ . @ & & # & & & @ . @ @ : | ^ | : @ . @ @ + ) ) + @ @ . ) [ 1 . 1 . [ ) . + ) $ $ $ $ ) + . + & & & & & & + . + # # # # & # + . + # $ = = # ; + . + ~ 3 b b 3 ~ + . . . a . 1 1 . 1 . + 2 0 } } 0 + + . + = * # % $ ) + . ",
|
||||
". ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . ] / { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . + + + + + + + + . @ @ @ $ + + % @ . @ & @ $ ) @ & @ . @ * + @ @ + * @ . @ + + + + ) + @ . @ & & & & & & @ . @ : | ^ : : ( @ . @ @ & $ $ & @ @ . ) < . 1 . 1 < ) . + ) ) ) ) ) ) + . + & & ) ) & & + . + # # # # & # + . + # $ = = # ; + . & } 2 3 3 2 } & . . a . 1 . 1 . a . + 0 + } 2 0 + + . + = * # % $ ) + . ",
|
||||
". ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . { { { { { { { { . ] / { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { { { . { { { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . ] / { { { { / ] . + + + + + + + + . @ @ @ + + + = @ . = & = # $ = & = . @ @ + > > + @ @ . @ + + + + + ) @ . = ) & & & & ) = . @ ( : | _ : @ @ . = = & $ $ & = = . ) + < [ [ < + ) . + $ % % % % $ + . + + + + + + + + . + $ # # # & # + . # + # = = ; + # . $ + } ~ ~ } + $ . 1 a . 1 . a . a . + + c + } } + + . + = * $ $ ) + ) . ",
|
||||
". ] / { { { { { { . { { { { { { / ] . ^ ^ / { { { { { . { { { { { / ^ ^ . { { { { { { { { . ] / { { { { / ] . ] / { { { { { { . { { { { { { / ] . ^ ^ / { { { { { . { { { { { / ^ ^ . ^ ^ / { { { { { . { { { { { / ^ ^ . ] / { { { { / ] . ^ ^ / { { / ^ ^ . ^ ^ / { { / ^ ^ . + + + + + + + + . @ @ * + + % @ @ . = & = # $ = & = . @ + + = = + + @ . @ % + + + + % @ . % & & ) ) & & % . @ : @ _ / _ : @ . = * & & & & * = . $ ) + + + + ) $ . + $ $ $ $ $ $ + . + + + & & + + + . + $ # # # # # + . # + # = # ; + # . ) ) & + + & ) ) . 1 1 1 a 1 a 1 a . + + 8 + } + 8 + . 6 + ) ) ) ) + ) . ",
|
||||
". ] / { { { { { { . { { { { { { / ] . # ] ^ / / / / / . / / / / / ^ ] # . / / / / / / / / . ] / { { { { / ] . ] / { { { { / ^ . ^ / { { { { / ] . # ] ^ / / / / / . / / / / / ^ ] # . # ] ^ / / / / / . / / / / / ^ ] # . ] / { { { { / ] . # ] ^ / / ^ ] # . # ] ^ / / ^ ] # . + + + + + + + + . @ @ + % * @ @ @ . # $ # = = # $ # . @ @ @ @ @ @ @ @ . @ = + + + ) = @ . & & & ) ) & & & . @ @ @ : _ _ : @ . = # # # # # # = . # $ ) ) ) ) $ # . + # # # # # # + . + + + + + + + + . + # # # # # # + . + # = = # ; = + . # # ) # # # # # . 1 1 1 a 1 1 1 . . + 8 + + 2 } + + . # ) + + + + ) $ . ",
|
||||
". ] / { { { { { { . { { { { { { / ] . # # ^ ] ] ] ] ] . ] ] ] ] ] ^ # # . ] ] ] ] ] ] ] ] . ] / { { { { / ] . ] / { { { { / ] . ] ^ { { { { / ] . # # ^ ] ] ] ] ] . ] ] ] ] ] ^ # # . # # ^ ] ] ] ] ] . ] ] ] ] ] ^ # # . ] / { { { { / ] . # # ^ ] ] ^ # # . # # ^ ] ] ^ # # . + + + + + + + + . @ @ @ @ @ @ @ @ . = = = = = = = = . @ @ @ @ @ @ @ @ . @ @ + + + % @ @ . & & ) ) ) ) & & . @ @ @ @ @ @ @ @ . = = = = = = = = . # # ) # # # # # . + + + + + + + + . + + + + + + + + . + + + + + + + + . # + + + + + + # . # # ) # # # # # . 1 1 1 1 1 1 1 1 . + + + + + + + + . # 6 ) ) ) ) $ 6 . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". # # > $ > > # # . # # ) # # # # # . # # ) # # # # # . # + ) * ) * + # . + + + + + + + + . + + + + + + + + . # # ) # # # # # . # # # # # # # # . # + + + + + + # . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + # # # # # # + . # # i + + i # # . # # + + + + # # . # # + + + + # # . # # + + + + # # . # # # # # # # # . # # + + + + # # . + # # # # # # + . + + $ # # $ + + . + # # # # # # + . # # + + + + # # . # $ + + + + $ # . # # $ + + $ # # . # # + + + + # # . # + + + + + + # . # # + + + + # # . ",
|
||||
". # # > > $ > # # . # # ) # # # # # . # # ) # # # # # . # + * ) * ) + # . + d e d e d e + . + d & & & & & + . # # ) # # # # # . # # # # # # # # . + r k k k k r + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . # + # # # # + # . # i + + + + i # . $ + | | | | + $ . # + + + + + + # . # + | | | | + # . # # # + + + + # . # + i A A i + # . # + # # # # + # . + $ + # # + $ + . + + # # # # + + . # + '.'.k '.+ # . $ + N x x N + $ . + # + 6 6 + # + . # + = = = = + # . # + - - - - + # . # + %.%.%.%.+ # . ",
|
||||
". # # > $ > > # # . # # ) # # # # # . + + + + + + + + . # + ) * ) * + # . + e d e d e d + . + e d & & & & + . # # ) # # # # # . # # # # # # # # . + k k k k k k + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . # # + + + + # # . i + + %.%.+ + i . + | | | | | | + . + + + + + + + + . + | | | | | | + . # # + @ @ @ @ + . # i A A A A i # . # + + + + + + # . # # + $ $ + # # . + + + + + + + + . + k '.'.'.+ # # . + N x p p x N + . + + 6 6 6 6 + + . $ + + $ $ + + $ . # + (._._.(.+ # . # + s s s s + # . ",
|
||||
". ) ) > > $ > ) ) . ) ) ) ) ) ) ) ) . * ) * ) * ) * ) . ) + * ) * ) + ) . + d e d e d e + . + d e & & & & + . ) ) ) ) ) ) ) ) . # # # # # # # # . + k k k k k k + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . # + + 8 8 + + # . i + %.s s %.+ i . + | s s s s | + . + + + + + + + + . + q q s s q q + . # + @ @ + @ + @ . + i + A A + i + . + + + ).).+ + + . # $ + + + + $ # . + + | | | | + + . + '.'.k + + # # . + x p !.!.p x + . + 6 t 6 6 t 6 + . + :.:.+ + :.:.+ . + + (._._.(.+ + . # + c q s c + # . ",
|
||||
". # # > $ > > ) # . > > > > > > > > . ) * ) * ) * ) * . # + ) * ) * + # . + e d e d e d + . + e d & & & & + . # # # # # # ) # . # # # # # # # # . + + k k k k + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . # + + 8 8 + + # . i + &.q s &.+ i . + s ~ q s ~ s + . + + > + + > + + . + s + q s + s + . + @ @ @ @ @ + @ . + i A A A A i + . + + + ).).+ + + . $ + ^ { { ^ + $ . # + + | | + + # . + '.'.+ '.'.+ # . + x p !.!.p x + . + 6 6 6 6 6 6 + . + :.:.+ + :.:.+ . + + - - - - + + . + s s q q s s + . ",
|
||||
". # # > > $ > ) # . > $ > $ > $ > $ . * ) * ) * ) * ) . # + * ) * ) + # . + d e d e ) e + . + d e & & & & + . # # # # # # ) # . # # # # # # # # . + + k k k k + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . # + + 8 8 + + # . i + s q q s + i . + s s q q s s + . + + + + + + + + . + s s q q s s + . + @ @ @ @ @ * + . + i A A A A i + . # + + ).).+ + # . + ^ ~.{ { ~.^ + . # + | | | | + # . + k + + '.'.k + . + N x p p x N + . + i 6 i i 6 i + . $ + + $ $ + + $ . # + - = = - + # . # + s s s s + # . ",
|
||||
". # # > $ > > ) # . $ > $ > $ > $ > . ) * ) * ) * ) * . # + ) * ) * + # . + e d e d ) d + . + e d & & & & + . # # # # # # ) # . # # # # # # # # . + + r r r r + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . # + r 8 8 r + # . i + q s s q + i . + s q s s q s + . + + s + + s + + . + q s s s s q + . # + + + + + @ @ . # i A + + A i # . # + 6 ).).6 + # . + { { { { { { + . # + i | | i + # . # + # # + '.'.+ . $ + x p p x + $ . # + 6 6 6 6 + # . # + = = = = + # . # + = ) ) = + # . # + s ) ) s + # . ",
|
||||
". # # > > $ > ) # . > > > > > > > > . * ) * ) * ) * ) . # + * ) * ) + # . + d e d e d e + . + d e & & & & + . # # # # # # ) # . # # # # # # # # . + + + + + + + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ) + 8 8 8 8 + ) . i + %.d d %.+ i . + s %.d d %.s + . + + s s s s + + . ) $ q d d q $ ) . # # # # # # + @ . # + i A A i + # . ) + ).).).).+ ) . + + + + + + + + . # $ + | | + $ # . # # # # + '.'.+ . # + N x x N + # . # + 6 + + 6 + # . # + = + + = + # . # + = ) ) = + # . # + s ) ) s + # . ",
|
||||
". # # > $ > > ) # . # # # # # # ) # . ) * ) * ) * ) * . # + ) * ) * + # . + e d e d e d + . + e d & & & & + . # # # # # # ) # . # # # # # # # # . + d d d d d d + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ) + r 8 8 r + ) . i + ) q q ) + i . $ %.s q q s %.$ . # + T V V T + # . % + q s s q + % . # # # # # # + @ . # # + + + + # # . ) + + ).).+ + ) . + + 8 + + 8 + + . ) ) $ i i $ ) ) . # # # + k '.+ # . # $ + x x + $ # . # $ + 6 6 + $ # . # + % + + % + # . # + + + + + + # . # # + s s + # # . ",
|
||||
". ) ) > > $ > ) ) . ) ) ) ) ) ) ) ) . + + + + + + + + . ) + * ) * ) + ) . + d e d e d e + . + d e & & & & + . ) ) ) ) ) ) ) ) . # # # # # # # # . + d + + + + d + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ) $ + r r + $ ) . i + ) ) ) ) + i . # + %.s s %.+ # . # + % s s % + # . # + $ q q $ + # . # # # # # + @ + . # # + A A + # # . ) # + 6 6 + # ) . # + 8 + + 8 + # . # | ) + + ) | # . # # # + '.'.+ # . # $ + x x + $ # . # # + + + + # # . # # + + + + # # . # # + - - + # # . # # + + + + # # . ",
|
||||
". # # > $ > > # # . # # ) # # # # # . # # ) # # # # # . # + ) * ) * + # . + e d e d e d + . + e & & & & & + . # # ) # # # # # . # # # # # # # # . + d + # # + d + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ) $ $ + + $ $ ) . i i + ) ) + i i . + +.+ + + + +.+ . # + + + + + + # . # + q $ $ q + # . # # # # + @ + @ . # + A A A A + # . ) # + + + + # ) . # ) + ) ) + ) # . | ) | + + | ) | . # # # + '.'.+ # . # + N x x N + # . # # + 6 6 + # # . # + + % % + + # . + + + - - + + + . # # + s s + # # . ",
|
||||
". # # > > $ > # # . # # ) # # # # # . # # ) # # # # # . # + * ) * ) + # . + + + + + + + + . + + + + + + + + . # # ) # # # # # . # # # # # # # # . + + + # # + + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ) + r 8 8 r + ) . i i i + + i i i . +.+.+.+.+.+.+.+.. + + + + + + + + . + [ [ q q [ [ + . # # # # + @ + @ . + A A A A A A + . ) + 6 ).).6 + ) . + { { { { { { + . + | | | | | | + . # + + k '.'.k + . # + + + + + + # . # + + 6 6 + + # . + = = + + = = + . + - - - - - - + . # + + s s + + # . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". # # # # # # # # . # # + + # # # # . # # # # # # # # . # # # # # # # # . + # # # # # # + . # # # # # # # # . # # # # # # # # . # # # + # + # # . # # # # # # # # . # # # # + # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # + ^ + ^ + + # . # # # # # # # # . # # % % % % # # . # # % ) + + + # . # # + + + + # # . # # # # # # # # . # # # # # # # # . $ + $ # # $ + $ . # # # # # # # # . # # + # # + # # . % % $ + + + + + . + # # # # # # + . + # # # # # # + . # # # # # # # # . % % = = = = % % . # # # # # # # # . # # # # # $ + # . ",
|
||||
". # + f + + f + # . # + | | ) # # # . # # # # # # # # . # # # # # # # # . + $ + # # + $ + . # # # # # # # # . # # + + + + # # . # # + @ + @ + # . # # # # # # # # . # # # + # # # # . # # # # # # # # . # + + $ # $ + + . # # $ + + $ # # . + # ) + + ) # + . # % + + + + % # . + 8 + 8 + ^ ^ + . # # % % % % # # . # % S S S S % # . # # + } = + % # . # + ) ) = ) + # . + # + + + + # + . # # + # # # # + . + $ # # # # $ + . # % ) + + + + % . # # $ + + + + # . k % + + k + k + . + $ + + + + $ + . ) + % ) ) % + ) . # # # $ ) ) $ # . = # % = = % # = . + # r r r r # + . # # # # $ + $ # . ",
|
||||
". + g g h h g g + . + + ; | ) # # # . # % ) + + ) % # . # # # ) + ) # # . # + # # # # + # . + # + + + + # + . # + | d d | + # . # # + @ + I + # . # # # # # # # # . # # ) + + ) # # . # # + + + + # # . # + d + + + d + . # $ + + + + $ # . + ) ) ) ) ) ) + . % + ) $ $ ) + % . + 8 + 8 + { { + . # % % % % % % # . % S S S S S S % . # % ) } } ) % # . + = ) ) ) + # # . + + 6 6 6 6 + + . # # + + # # + + . + $ # # # # $ + . # + ) % % % $ + . # # + | A + + + . k a + + + + + + . + + + 6 6 + + + . ) + + $ $ + + ) . $ ) + ) r r ) # . # * * = = * * # . + + 6 6 6 6 + + . # # # $ + + # # . ",
|
||||
". # + h h h h + # . # $ ) | i + # # . $ + $ - - $ + $ . # # + i | i + # . # + # # # # + # . + + i d d i + + . # + + d d + + # . # # # + + I + # . # # # # # # + + . # ) $ J J $ ) # . # + K K K K + # . # $ + | d + | + . # + + + + + + # . + + . ) ) . + + . + ) + + + + ) + . # + ^ + ^ { { + . # % # % % # % # . % = = > > = = % . # ) } = } = ) # . + ) ) = + + # # . + 6 t 6 6 t 6 + . # # + + + + + + . $ + $ # # $ + $ . # + % % + % % $ . # # + A A A | | . k a + o + + + + . + *.*.+ + *.*.+ . $ + $ = = $ + $ . ) r r A t t ) $ . = % = # # = % = . + 6 t 6 6 t 6 + . # # # + $ + # # . ",
|
||||
". + # + h h + # + . # + > | i i ) # . + $ * - - * $ + . # + + | + | | + . # + $ # # $ + # . # + d d d d + # . # + d d d d + # . # # # + + I + # . # # # $ + + + + . # + + J J + + # . # + 5 K K 5 + # . # # + d d d | + . # + p s s p + # . # ) ) ) ) ) ) # . $ + *.9 9 *.+ $ . # $ + ^ { + { + . # % % % % % % # . % > + = > + > % . # + + + + + + # . + ) ) + ) ) + # . + 6 6 6 6 6 6 + . # % + = = = + + . # $ + + + + $ # . $ + + % + % % % . # + | A + A A | . a < + o | + + $ . + *.*.+ + *.*.+ . % + . = = . + % . ) r r A r t r ) . # # # % # # # # . + 6 6 6 6 6 6 + . # # $ + Y + $ # . ",
|
||||
". j + + h h + + j . # + > | | i + $ . # * + - - + * # . + k k i | | | + . # $ + + + + $ # . # + d d | + d + . $ + + d d + + $ . # # # $ + @ + # . # $ + + $ L J L . # + J J J J + # . # + K ^ ^ K + # . # + | d + d d d . # + + + + + + # . # + ) ) ) ) + # . + @ 9 + + 9 @ + . # # # + + { ^ + . # % % % % % % # . % > > = = > > % . # + %.s s %.+ # . + = + + ) ) = + . + 6 6 i i 6 6 + . % + % = + = = + . # + + < < + + # . + $ % % + $ $ + . + | A A A A A | . a < $ + o o + $ . + + + 6 6 + + + . # + = = = = + # . $ A A r A A r + . = = = % % = = = . + 6 6 i i 6 6 + . # # + $ + $ + $ . ",
|
||||
". l j + + + + j l . # + > | | i + ) . ) $ * - - * $ ) . + + + i | | | | . # # i | | i # # . ) | d d d d d d . + | + d d + | + . # # + + @ @ @ + . $ + $ M M J L J . # + N $ $ N + # . # + ^ k k ^ + # . + | d d d d | d . # + + + + + + # . # ) + ) ) + ) # . + @ 9 + + 9 @ + . # # $ + { ^ + $ . # % % # # % % # . % = > > > > = % . # + 5 q s 5 + # . # + # # + ) ) + . + i 6 6 6 6 i + . + % = = = = = = . # + + < < + + # . + % % % ) + + ) . + A A A A A A | . < < < $ + 1 o + . + 6 6 + + 6 6 + . # + = & & = + # . $ A r t A r t + . = = # # # # = = . + 6 6 6 6 6 6 + . # ) + Y Y Y Y + . ",
|
||||
". j l + m m + l j . # ) $ > | i i + . ) ) % > > % ) ) . # # + | | | | | . # # + | | + # # . + d d d d d d d . + d d + + d d + . # + * @ + @ @ @ . + $ M + M L J L . # + J J J J + # . # + + r r + + # . + + + | d d | d . # ) + + + + ) # . # $ + ) ) + $ # . $ + *.9 9 *.+ $ . # # + ^ { + $ + . # % % % % % % # . # * > * * > * # . # + s q q s + # . # # # # + ) ) + . # + 6 + + 6 + # . + % % = = = = = . # + < < < < + # . + % $ + $ ) ) ) . + | A | + | A | . < z z z + 1 1 + . + 6 + {.{.+ 6 + . # ) $ & & $ ) # . ) r t t A t t + . = # % $ $ % # = . + i 6 + + 6 i + . $ + $ ) Y Y Y Y . ",
|
||||
". l + + h h + + l . # # + $ = | i + . # ) + = = + ) # . # # # + | | i i . # # ) i i ) # # . + d + + d + i d . + d d + + d d + . + * @ @ @ @ @ @ . + + + M M J + J . # ) $ J J $ ) # . # + K e e K + # . $ + + $ + | d | . # $ + + + + $ # . ) # + ) ) + # ) . + ) + + + + ) + . # # + { ^ + + { . % % % % % % % % . # % = > > = % # . # + s s s s + # . # # # + = ) + # . # + i 6 6 i + # . % + + $ + % = = . # # + + + + # # . + $ + $ + % % % . $ + + + # + A | . z z + + o 1 o + . $ + {.{.{.{.+ $ . # + $ = = $ + # . ) r t r r A r ) . = % $ ) ) ) % = . $ + i 6 6 i + $ . + $ + + + Y Y Y . ",
|
||||
". j + h h h h + j . # # # + + + + + . = # # + + # # = . # # # ) + | i i . # # $ + + $ # # . + d ) d i + i d . | d d | | d d | . + @ @ @ @ @ @ @ . # ) + + + + + + . # $ + J J + $ # . + ^ K A A K ^ + . # # # # # + d | . $ + + + + + + $ . ) # ) + + ) # ) . % + ) $ $ ) + % . # # + ^ + ^ { ^ . % % % % % % % % . # % * = = * % # . # + %.d d %.+ # . # # # + ) ) + # . # + + + + + + # . # # # # # + = = . # # + < < + # # . + + $ # + % % % . # # # # # + A A . + + o 1 1 o + $ . # + ] ] ] ] + # . ) + = $ $ = + ) . $ ) $ $ ) $ ) $ . # # ) ) ) ) # # . + + i i i i + + . + ) $ # $ + Y Y . ",
|
||||
". + + h h h h + + . # # # # $ + # + . = = = # # = = = . # # # # + | | i . # # ) + + ) # # . # + + + + i d d . d d d d d d d d . $ + + @ @ @ @ @ . # # # # # # # # . + + + + + + + + . + K K K K K K + . # # # # $ + | d . + + + + + + + + . ) ) + + + + ) ) . # % + + + + % # . # # + ^ + ^ ^ + . % % % % % % % % . # % = * * = % # . # $ + q q + $ # . # # # + ) ) + # . + + 6 6 6 6 + + . # # # # $ + = = . # + % + + % + # . + + # # + % % + . # # # # # + | A . 1 1 1 1 o + + # . # + + + + + + $ . + % = = = = % + . # # # # # # # # . # = % ) ) % = # . <.[.+ + + + [.<.. ) # # # # # + Y . ",
|
||||
". # + h h h h + # . # # # ) + $ # # . = = = = = = = = . # # # # # + | | . # + i - - i + # . # # # # + d d d . d d d d d d d d . # # $ + @ @ @ @ . # # # # # # # # . # # # # # # # # . K K O 9 9 O K K . # # # $ + | d | . + + + + + + + + . ) + + + + + + ) . # # # # # # # # . # # # + + + + $ . % % % % % % % % . % V V = = V V % . # + =.+ + =.+ # . # + + = ) ) = + . d d + 6 6 + d d . # # # $ + % = = . # # + < < + # # . + + # # + % % + . # # # # # $ + A . 1 1 o + + $ # # . # # $ + 6 6 6 + . = = = = = = = = . # # # # # # # # . % # = = = = # % . [.[.[.[.[.[.[.[.. # # # # # # + Y . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". # # # # + + + d . # # # i i # # # . # + + # # + + # . # $ + + + + $ # . # # # + + + # # . % % # # # # % % . + # # # # # # + . + # # # # # # + . # + + + + + + # . # # # # + + + + . # # # # ) + + + . # # % % % % # # . + # + + + + # + . # $ + + + + $ # . # # + + + + # # . # $ + + + + $ # . # # # # ) + + + . + # # # # # # + . # # # # # # # # . # # # # # # # # . # # + + + + # # . # # + + + + # # . # $ i i i i $ # . # # % $ $ % # # . # ) + + + + ) # . # ) # # # # ) # . 8 + # # # # + 8 . + # + + + + # + . + # # # + # # # . + # # # # # # + . # * = = = = * # . # # 4 z z 4 # # . ",
|
||||
". # # # + d d d d . # # + i i + # # . + n + + + + n + . $ + o o o o + $ . # $ + 3 p 3 + # . % # * * * * # % . + $ # # # # $ + . + + # # # # + + . + # + P P + # + . # # # + Q Q Q i . # # # + ) R R R . # % S S S S % # . + + | | | | + + . $ + T G G T + $ . # + | | | | + # . $ + -.-.-.-.+ $ . # # # ) ^ { { { . + $ ) + + ) $ + . # # + # # # + # . # # # # # # # # . # + } } } } + # . # + [ [ [ [ + # . # # # $ i r i $ . # $ $ % % $ $ # . ) ) 3 3 3 3 ) ) . ) + ) # # ) + ) . + 8 + # # + 8 + . + + i i i i + + . + + + + + # # # . + + # # # # + + . % # * = = * # % . # 4 z z z z 4 # . ",
|
||||
". # # + d + + d + . # + q i i q + # . + + | | | | + + . + o + + + o o + . + + 3 p p p 3 + . * * * % % * * * . + + ) # # ) + + . + + + + + + + + . + + + + + + + + . # # + U U + U Q . # # # + B B R R . % S S S S S S % . + | | | | | | + . + T G G G G T + . + | | | | | | + . + -.i i i i -.+ . # # # + ^ + { { . + ) d | | d ) + . # # + + # # + + . # $ + $ + $ + # . + } } } } } } + . + [ [ [ [ [ [ + . # # # # $ | r i . # $ % % % % $ # . + 3 3 + 3 + 3 + . + #.+ # # + #.+ . # + 8 + + 8 + # . + i 8 #.#.8 i + . + + d + + # # # . + ) + $ $ + ) + . % ) % * * % ) % . # z + + + + z # . ",
|
||||
". # # # + r r + r . + q s s s s q + . + | + | | + | + . + + + $ $ + o + . + 3 p p p p 3 + . # % # * * # % # . + + + + + + + + . + + d d d d + + . ) + = = = = + ) . # + @ + + @ + Q . # + + B @ @ B R . % * % * * % * % . + | 7 7 7 7 | + . + G G G G G G + . + | s s s s | + . + i s s s s i + . # # % + { { { { . + d d | | d d + . # # + + + + + + . $ + 6 + 6 + $ + . + } s s s s } + . + [ s s s s [ + . # # $ i i r k i . $ $ % # # % $ $ . + 3 + ` + ` + + . $ # + + + 1 + $ . # # + g g + # # . + + #.#.#.#.+ + . + d d d + + $ # . ) + $ + + $ + ) . % ) ) # # ) ) % . # 4 s s s s 4 # . ",
|
||||
". # # $ + + r r r . + s + q s + s + . + | | | | | | + . + + $ # $ + o + . $ + + + + + + $ . * % $ * * $ % * . ) + ) t t ) + ) . + d d d d d d + . ) + + = = + + ) . # + } + + } + Q . + r r B } @ B R . % # & > > & # % . + 7 k 7 7 k 7 + . + G 8 G G 8 G + . + s + s s + s + . + i + s s + i + . # # + ^ { { { { . + + $ ) ) $ + + . # % + | | | | + . + 6 k 6 6 k + $ . + s + q s + s + . + s + q s + s + . # $ i d r r k i . $ % & # # & % $ . + 3 3 + 3 + 3 + . # + | 1 1 1 1 + . # + =.H H =.+ # . + i + #.#.+ i + . + d + d + $ + + . % + = = = = + % . = % % * * % % = . # + . q s . + # . ",
|
||||
". $ + + r r r r + . + q s q q s q + . + | | + + | | + . # # # $ + o o + . # ) # ) # & ) # . * # $ # # $ # * . $ + t t t t + $ . + @ } d d } @ + . ) + = = = = + ) . # # + U U + U Q . + + + R B B R R . % * V * * V * % . + 7 7 z z 7 7 + . + G G 4 G G G + . + s s q q s s + . + i s q q s i + . # % + { { ^ + { . + ) + ) ) + ) + . + i + | + | | | . $ + 6 6 6 6 6 + . + s s q q s s + . + s s q q s s + . $ i r r k k k i . $ % # % % # % $ . + 3 3 3 3 3 3 + . # + 1 1 8 1 1 1 . # + 8 H 8 H =.+ . + i + #.#.+ i + . # + + + d d d $ . # + . = = . + # . * = = = = = = * . % + s q q s + % . ",
|
||||
". + i r d r r + d . + q s s s s q + . + | & + + & | + . # # $ + o o + $ . ) $ # ) # & ) # . # * * # # * * # . ) ) u t t u ) ) . + d d i d d d + . ) + = = = = + ) . $ + Q Q Q Q Q Q . + + r R R R R R . % = V > > V = % . + 7 + 7 7 + 7 + . + + G G G G + + . + q G s s G q + . + i s s s s i + . # + ^ { ^ + + { . + | | d d | | + . + i | | | | | | . + 6 6 6 6 6 + $ . + q s s s s q + . + q s s s s q + . i r r k k k r i . $ $ # # # # $ $ . + 3 + + + + + + . $ + 1 1 1 1 1 1 . + H H H H H H + . + i + #.#.+ i + . # + d d d i i i . # + = = = = + # . * * = ) ) = * * . $ + s s s s + $ . ",
|
||||
". + r d r r + d d . ) $ q d d q $ ) . + | ) & & ) | + . # # + o o + $ # . ) $ $ ) # & ) ) . # * # % % # * # . + t t + + t t + . ) | d i i d | ) . # + = ) ) = + # . + i Q Q Q Q + Q . # # + ) R R R R . # * = % % = * # . ) z 7 + + 7 z ) . + + G 4 4 G + + . ) $ s G G s $ ) . + i s n n s i + . % + { ^ + + ^ { . + | d d d d | + . + + + + | | | | . $ + 6 k k 6 6 + . ) $ s d d s $ ) . ) $ s d d s $ ) . i r k k k k r i . # $ # $ $ # $ # . + 3 3 - 3 - 3 + . + | | 1 | 1 1 1 . + =.H H =.+ H + . + i + i i + i + . # + $ d d i i i . # + # & & # + # . * * = = = = * * . ) + q d d q + ) . ",
|
||||
". + d r d r + d d . % + r s s r + % . + | i i i i | + . # $ v o v $ # # . ) # $ ) ) & # ) . * * # # # # * * . + t t t t t t + . $ | | | | | | $ . # + $ ) ) $ + # . + Q Q Q $ + $ Q . # # # $ + R R R . # % = % % = % # . % + z 7 7 z + % . + T + G G + T + . % + q s s q + % . + i # s s # i + . + ^ { + > + { ^ . # + | d d | + # . # + + i + i | | . + $ + 6 + 6 + $ . % + q s s q + % . % + q s s q + % . i r k k k k r i . # $ % # # % $ # . + 3 3 3 3 3 ) ) . + 1 1 | + | | 1 . + + + + + + H =.. + i + [ [ + i + . # $ + i d d d i . # + ) & & ) + # . * = % ) ) % = * . ) + | s s | + ) . ",
|
||||
". # + + + + d d d . # + $ q q $ + # . i i i | | i i i . # $ v o v $ # # . ) # $ # ) & # # . % * % $ $ % * % . + t + + + + t + . # + k W W k + # . $ $ + + + + $ $ . $ + + + + Q Q Q . # # # # # + R R . # % * V = * % # . # + + z z + + # . T T G + + G T + . # + $ q q $ + # . i i s # # s i + . + ^ ^ + + ^ + ^ . # # + + + + # # . # # # # # + | | . # + $ + $ + $ # . # + $ q q $ + # . # + $ q q $ + # . i r r k k r r i . # % $ % % $ % # . ) 3 3 3 + + ) # . # + + + | ].].| . + | 1 1 | + H =.. + i i + + i i + . # # + i + d i + . # ) $ = = $ ) # . * % ) ) ) ) % * . + z ) i i ) z + . ",
|
||||
". # # # # + + d d . # + s $ $ s + # . i | | | | | | i . # # + o o + $ # . # # $ ) ) & # # . % * * % % * * % . $ ) t t t t ) $ . # + ) W W ) + # . + + = = = = + + . # # + Q Q Q Q Q . # # # # # + R R . # % = * * = % # . # + z + + z + # . T T G G G G T T . # + q $ $ q + # . i i s s s s i i . % + + > + + % + . # + | + + | + # . # # # # $ + | | . # # # # # # # # . # + q $ $ q + # . # + q $ $ q + # . $ i r r r r i $ . $ $ % # # % $ $ . 3 3 3 3 3 + # # . # # # # + ].].].. # + + + + H H H . #.+ i i i i + #.. # # + d + d + # . & + # + + # + & . % = % % % % = % . z z z + + z z z . ",
|
||||
". # # # # # + d d . + + + s s + + + . | | | d d | | | . # # $ + o o + $ . # $ # ) # & & # . % % # * * # % % . + $ + + + + $ + . # # + + + + # # . = = # ) ) # = = . # # # + + + Q Q . # # # # + R R R . % V V = = V V % . + z 7 7 7 7 z + . T T T G G T T T . + [ [ q q [ [ + . i i i s s i i i . # % + + + % # + . + | | | | | | + . # # # $ + i | | . # # # # # # # # . + } } q q } } + . + [ [ q q [ [ + . # $ i i i i $ # . % # # # # # # % . 3 3 3 3 3 ) + + . # # # + ].].].].. # # + =.H H H H . #.#.+ i i + #.#.. # # + d + d + # . # = = = = = = # . % % = = = = % % . z z z z z z z z . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". # # % % % % # # . # # ) + + ) # # . # # % % % % # # . # # # % + + + % . # w w w w w w # . + # $ + + $ # + . # % + + + + % # . # $ + + + + $ # . # $ + + + + $ # . # $ + + + + $ # . # $ + + + + $ # . # # + + + + # # . $ + + + + + + $ . # # $ + + $ # # . # # # # # # # + . + # + + + + # + . # + # + + + + $ . # = + + + + = # . # $ + + + + $ # . # $ ) + + ) $ # . k + # # # + # # . + # # # # # # + . # # # # # # # # . + + # # # # + + . 4 5 5 5 5 5 5 4 . # % + + + + % # . # # + + + + # # . # % + + + + % # . # + + + + + + # . # $ + + + + $ # . # # + + + + # # . # # # # # # # + . ",
|
||||
". # % $ $ $ $ % # . # ) + i i + ) # . # % # # # # % # . # # % + u 7 u + . w x y y y y x w . + % + z z + % + . % + q s s q + % . $ + o 1 1 o + $ . $ + * - - * + $ . $ + ! , , ! + $ . $ + d X X d + $ . # + + Y Y + + # . + ) = ; ; ; $ + . + $ + Z Z + $ + . # # # + # # + U . + + | i i | + + . + + + u u G 5 + . = + d d d d + = . # + ) | | ) + # . $ ) + + + + ) $ . + k + + + + + # . + $ + + + + $ + . # # # # # # # # . # + + + + + + # . 4 5 1 . 1 . 5 4 . % + & & & & + % . # + d r r d + # . % + q q q q + % . + 3 3 3 3 3 3 + . $ + 6 6 6 6 + $ . # + - X X X + # . # # # # # # + + . ",
|
||||
". % $ $ $ $ $ $ % . # + i 6 A i + # . % # # # # # # % . # % + u 7 u 7 u . x y B C C B y x . + 4 z 7 7 z 4 + . + q s s s s q + . + o 1 1 1 1 o + . + * - - - - * + . + ! , , , , ! + . + d X X X X d + . + + ` + + ` + + . + = @ @ @ @ = + . + + . . . .+ + . # # # $ + # + U . + | d i i d | + . + u u u + 5 5 5 . + d d d d d d + . $ + | | | | + $ . $ + + $ $ + + $ . # + k + - + + + . + + d d d d + + . # # # # # # # # . # + o o o o + + . 4 . 1 . 1 . . 4 . + & & & & & & + . + d r r r r d + . + q . . . . q + . + 3 + + 3 + + + . + 6 + + + 6 6 + . + - X X - - X + . # + + + # + $ + . ",
|
||||
". % $ ) $ $ ) $ % . # + 6 A 6 A + # . % # > > > > # % . % + u 7 u 7 u 7 . y C D y y D C y . + z k 7 7 k z + . + s s s s s s + . + o 4 1 1 4 o + . + * % - - % * + . + ! ~ , , ~ ! + . + d i X X i d + . + + ` + + ` + + . + ; = ; = ; @ + . + . . . . . .+ . # # # # + + $ U . + d + d d + d + . + u 8 + 5 5 5 5 . + d s s s s d + . + ) + | | + ) + . $ + $ $ $ ) + $ . # # + % - - % % . + + d d d d + + . # * # # # # * # . $ + 8 o 8 + o d . 4 . 4 . . 4 . 4 . + & & & & & & + . + r r r r r r + . + . s s s s . + . + + ~.~.+ ~.~.+ . + + + $ $ + 6 + . + X X X X X X + . + $ &.$ + $ &.+ . ",
|
||||
". $ $ & $ $ & $ $ . # + E 6 A E + # . % > 5 * > 5 > % . ) 4 7 u z u 7 u . B D F F F F D B . + z 7 7 7 7 z + . + s + s s + s + . + o 1 1 1 1 o + . + * - - - - * + . + ! , , , , ! + . + d X X X X d + . + Y + Y Y + Y + . + = ..; ..# @ + . + .+ Z .+ .+ . + # # # + + + + . + d d d d d d + . + u u + + + 5 5 . + s + s s + s + . + | | | | | | + . $ + $.$ $ $.+ $ . # + % - + - - % . # + + d d + + # . # # = # # = # # . + ) o o o + o d . 4 . 9 . . 1 a 4 . + & $ ) & $ & + . + r + e r + r + . + s + s s + s + . + 3 + + 3 + + + . + + $ # $ + 6 + . + X + U X + X + . + &.$ + $ &.J + . ",
|
||||
". $ $ $ $ $ $ $ $ . # + 6 A 6 A + # . % > > * > > > % . + z z z 7 + + 7 . C y F F F F y C . + + 7 z z 7 + + . + s s q q s s + . + o 1 4 4 1 o + . + * - % % - * + . + ! , ' ' , ! + . + d X i i X d + . + Y Y Y Y Y Y + . + ; @ + = ; @ + . + . .Z Z . .+ . + # # + $ $ + r . + i d + + d i + . + u + $ # $ + 5 . + s s q q s s + . + | + | | + | + . $ + $ ) ) ) + $ . + % - - - - - % . # + d d d d + # . # # # # # # # # . + o o o o o d d . 4 . a . 1 1 a 4 . + & & ) ) & & + . + r r e e r r + . + s s q q s s + . + 3 3 3 3 3 3 + . # # # $ + 6 6 + . + X A i i A X + . + &.$ + &.J J + . ",
|
||||
". % $ $ $ $ $ $ % . # + A i i 6 + # . % = > > > > = % . + [ [ 7 + % % + . C y F F F F y C . + $ z 7 7 z $ + . + q s s s s q + . + o 1 1 1 1 o + . + * - - - - * + . + ! , , , , ! + . + d X X X X d + . + Y Y Y Y Y Y + . + # = @ @ = = + . + +. . . . .+.+ . + + + U + + $ + . + d d + + d d + . $ + $ # # # + 5 . + s s s s s s + . + | + | | + | + . $ + ) $ $ + + $ . + - - - - - - % . # + i d d i + # . # # # * * # # # . $ + + + + + ].d . 4 . a . 1 1 . 4 . + & & & & & & + . + e r r r r e + . + q s s s s q + . + 3 + + + + + + . # # $ + 6 6 + $ . + U X X X X U + . + &.&.$ &.J + # . ",
|
||||
". # $ $ $ $ $ $ # . # + 6 ) ) A + # . % * > # # > * % . + z z < + # # + . B D F F F F D B . + % + 7 7 + % + . ) $ s s s s $ ) . + o 1 4 4 1 o + . + * - % % - * + . + ! , ' ' , ! + . + d X i i X d + . $ i Y Y Y Y i $ . + $ # $ # = ) $ . ) +.Z +.+.Z +.) . + r r U U U U U . + d $ ) ) $ d + . # + # # # # + 5 . % % s d d s % % . + - + i i + - + . $ + ) ) ) ) + $ . + % - % + % - % . # $ + d d + $ # . # # * = = * # # . # # # # # # + ].. 4 9 . 1 . 1 9 4 . $ + & $ $ & + $ . ) $ r d d r $ ) . ) $ s s s s $ ) . + 3 - - 3 - - + . # # + 6 6 + $ # . ) $ X i i X $ ) . + &.+ + $ &.$ + . ",
|
||||
". # $ $ & & $ $ # . ) + A i i 6 + ) . # % = # # = % # . + & & + % # # + . y C D y y D C y . # # + & & + # # . % + q s s q + % . $ + 1 4 4 1 + $ . $ + - % % - + $ . $ + , ' ' , + $ . $ + X i i X + $ . # + Y Y Y Y + # . $ + = @ @ # + # . % + Z . .Z + % . + + + U U U U U . + ) d d d d ) + . # # + $ # $ + 5 . = + s s s s + = . i - ) + + ) - i . $ + + $ $ ) + $ . $ + + + # + - % . ) ) $ i i $ ) ) . # # # * * # # # . # ) $ # # # + ].. 4 5 . 1 . a 5 4 . # + & & & & + # . % + e r r e + % . % + q s s q + % . + 3 3 3 3 3 3 + . # $ v 6 v $ # # . % + U i i U + % . + &.&.&.+ $ &.$ . ",
|
||||
". # % $ ) ) $ % # . + i 6 A 6 A i + . # % = # # = % # . + < < 4 # # % + . x y B C C B y x . # # + 7 7 + # # . # + $ q q $ + # . # + 4 1 1 4 + # . # + % - - % + # . # + ' , , ' + # . # + i X X i + # . # + + Y Y + + # . # + $ $ $ $ + # . # + ^ Z Z ^ + # . $ + r r U U U U . ) + ) ) ) ) + ) . # # $ # $ + 5 5 . # + $ s s $ + # . ) - i + + i - ) . ) + + + ) + + ) . # # # # # + - - . # $ ) + + ) $ # . # # # # # # # # . # $ + + + + ].].. 4 5 1 a 1 a 5 4 . # + + & & + + # . # + $ e e $ + # . # + $ q q $ + # . ) 3 3 3 + + + # . # $ v 6 v $ # # . # + $ A A $ + # . $ . &.&.. + + + . ",
|
||||
". # % $ $ $ $ % # . i 6 A 6 A 6 A i . % % # = = # % % . % + + % # % + u . w x y y y y x w . # + z + + z + # . # + q $ $ q + # . $ + o 4 4 o + $ . $ + * % % * + $ . $ + ! ' ' ! + $ . $ + d i i d + $ . # + i + + i + # . # $ + = = + $ # . # + Z ^ ^ Z + # . # # + + + ) $ U . # + b d b b + # . # # # + + 5 5 5 . = + q $ $ q + = . - ) i + + i ) - . + + + + + + + + . # # # # # + % - . + + d + + d ) + . # # # # # # # # . # # # # + ].].d . 9 1 1 a 1 1 1 9 . # + & + + & + # . # + e $ $ e + # . # + q $ $ q + # . 3 3 3 3 3 3 + ) . # # + 6 6 + $ # . # + U $ $ U + # . # + $ $ + # # # . ",
|
||||
". % $ % $ $ % $ % . 6 A 6 A 6 A 6 A . % % % * * % % % . # # # # % + u 7 . # w w w w w w # . + 7 7 z z 7 7 + . + s s q q s s + . + o 1 1 1 1 o + . + * - - - - * + . + ! , , , , ! + . + d X X X X d + . + Y Y i i Y Y + . + + = ; ; = + + . + Z . . . .Z + . # # # # # $ + $ . + b b d b b b + . $ + + 5 5 5 5 + . + - - q q - - + . i i i + + i i i . + + + + + + + + . # # # # # $ + - . d d d d d d d d . # # # # # # # # . # # + + ].].d d . 1 1 1 1 1 1 1 1 . + & & & & & & + . + r r e e r r + . + b b q q b b + . 3 3 3 3 3 3 3 + . # # $ + 6 6 + $ . + + + U U + + + . # $ + + # # # # . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". + # + + + + # + . $ 8 $ $ 8 $ # # . # # # # # # # # . + $ # # # $ + $ . $ + + + + + + $ . + # # # # # # + . # # $ + + $ # # . # # $ $ $ $ # # . + ) # # # # ) + . # 8 8 8 8 8 8 # . # # + + + + # # . # # * * * * # # . + # + + + + # + . # # % % % % # # . # # + + + + # # . # # + + + + # # . # 8 8 8 8 8 8 # . + # + + + + # + . # + + + + + + # . # # + + + + # # . + + # + + # + + . + $ # # # $ + $ . + + # + + # + + . # $ + + + + $ # . # $ + + + + $ # . # $ + + + + $ # . # $ + + + + $ # . + + p + + p + + . # + # # # # + # . # # # # # # # # . # # ) ) ) ) # # . # # # # # # # # . ",
|
||||
". + + z z z z + + . # $ i $ $ i $ # . # # $ + + $ # # . + + $ # $ + + + . + G G G G G G + . + $ + + + + $ + . # $ + i i + $ # . # $ ) ) ) ) $ # . + $ ) + + ) $ + . 8 + d d d d + 8 . # + T @.@.T + # . # * # # # # * # . + + k k k k + + . % $ ) ) ) ) $ % . # + q q q q + # . # + $ $ $ $ + # . 8 + ) ) ) ) + 8 . + + z 7 7 z + + . + + + + + + + + . # + 5 [ [ 5 + # . + k + k k + k + . + + $ # $ + + + . + k + k k + k + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + ;.+ ;.;.+ ;.+ . $ + $ # # $ + $ . # # # # # # # # . # # ) i i ) # # . # # # # # # # # . ",
|
||||
". + z 7 7 7 7 z + . # $ i + + i $ # . $ + + > > + # # . $ + + $ + + + $ . 5 + + 5 5 + + 5 . + + # = = # + + . % + d i i d + % . % ) ) ) ) ) ) % . + ) $ & & $ ) + . + d d d d d d + . + T @.@.@.@.T + . * # # # # # # * . + k #.#.#.#.k + . $ ) = - = = ) $ . $ ;.;.;.;.;.;.$ . + $ $ $ $ $ $ + . + ) ) ) ) ) ) + . + z 7 7 7 7 z + . + + + + + + + + . + 5 [ [ [ [ 5 + . + k k k k k k + . $ + + $ + + + $ . + k k k k k k + . + k k k k k k + . + k k k k k k + . + k k k k k k + . + k k k k k k + . + ;.;.;.;.;.;.+ . + + + $ $ + + + . # # # # # # # # . # # + + + + # # . + + + + + + + + . ",
|
||||
". + z 8 7 7 8 z + . $ + i ; ; i + $ . # # + > > + # # . # + + + + G + $ . + k k + + k k + . + + H H H H + + . ) + + d d + + ) . $ ) ) ) ) ) ) $ . + & $ & & $ & + . + d s s s s d + . + @.@.@.@.@.@.+ . * * = * * = * * . + #.8 #.#.8 #.+ . ) @ @ - = = = ) . + q q q q q q + . + $ - - - - $ + . + ) s s s s ) + . + z 8 7 7 8 z + . + + = ; = + + + . + [ [ [ [ [ [ + . + + + + + + + + . # + + + + ,.+ $ . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ) ; > ) ) - ; ) . # # # # # # # # . # # + }.}.+ # # . + - > > > > * + . ",
|
||||
". + z 7 7 7 7 z + . + ; i ; ; i ; + . # # + + + + # # . # + | G G G G + . 5 + + 5 5 + + 5 . + 5 # = = # 5 + . + d d d d d d + . ) ) $.) ) $.) ) . + + $ ) ) $ + + . + s + s s + s + . + @.b @.@.b @.+ . * # # # # # # * . + #.#.#.#.#.#.+ . = @ % # - = # % . + s + s s + s + . + - z - - z - + . + s >.s s >.s + . + z 7 7 7 7 z + . + = + ; + # + + . + [ @ [ [ @ [ + . + s } s s } s + . # + ^.,.,.,.,.+ . + 7 7 7 7 7 7 + . + d X X X X d + . + * - - - - * + . + ! , , , , ! + . + o 1 1 1 1 o + . + r k k k k r + . ) = > ) ) = - ) . # # # + + + + + . # $ + }.}.+ $ # . + - > > > > * + . ",
|
||||
". + 7 7 z z 7 7 + . + ; s s s s ; + . # $ + % ) + # # . % + G G 8 G G G . G G G 5 5 G G G . + # . = = . # + . + i d + + d i + . ) ) ) ) ) ) ) ) . + ) = ) ) = ) + . + s s q q s s + . + @.@.q q @.@.+ . * # # * * # # * . + E #.#.#.#.E + . - - # = = = # % . + s s q q s s + . + - - = = - - + . + s s q q s s + . + 7 7 z z 7 7 + . + ; @ + = ; + + . + [ [ 5 5 [ [ + . + s s q q s s + . % + ,.,.8 ,.,.,.. + 7 8 7 7 8 7 + . + d i X X i d + . + * % - - % * + . + ! ~ , , ~ ! + . + o 4 1 1 4 o + . + r | k k | r + . ) - > ) ) - = ) . # # + 5 5 5 + * . $ + + }.}.+ + $ . + = > > > > * + . ",
|
||||
". + z 7 7 7 7 z + . + ; + s s + ; + . + + + ) % + $ # . $ + G G G G G G . G G G 4 4 G G G . + # = $ $ = # + . + d d + + d d + . ) ) ) ) ) ) ) ) . + & ) & & ) & + . + q s s s s q + . + T @.@.@.@.T + . * # # # # # # * . + + E #.#.E + + . = = - = = # # % . + q s s s s s + . + = - - - - = + . + q s s s s q + . + z 7 7 7 7 z + . + # = @ @ = + + . + 5 s s s s 5 + . + q s s s s q + . $ + ,.,.,.,.,.,.. + 7 7 z 7 7 7 + . + d X X X X d + . + * - - - - * + . + ! , , , , ! + . + o 1 1 1 1 o + . + r k k k k r + . ) ; = ) ) > > ) . # + 5 5 5 + * + . + ) |.}.}.1.) + . ) # - > > * # ) . ",
|
||||
". + + 7 + + 7 + + . + ; s q q s ; + . # + ) % ) % + # . ) ) G G G G G G . 4 5 + 4 4 + 5 4 . + # = = = = # + . + d $ ) ) $ d + . $ ) ) ) ) ) ) $ . + & $ $ $ $ & + . ) $ s d d s $ ) . ) $ @.G G @.$ ) . # * # = = # * # . + i + #.#.+ i + . = = = = # # % % . ) $ s d d s $ ) . ) $ - # # - $ ) . ) $ s d d s $ ) . + z 7 + + 7 z + . + $ # $ # = + + . ) $ s + + s $ ) . ) $ s | | s $ ) . ) ) ,.,.,.,.,.,.. + z 7 z z 7 z + . + d X i i X d + . + * - % % - * + . + ! , ~ ~ , ! + . + o 1 4 4 1 o + . + r k | | k r + . ) > - ) ) = = ) . + + + + + * + # . + |.}.}.}.}.1.+ . $ + - > > * + $ . ",
|
||||
". + # z 7 7 z # + . + ; s s s s ; + . $ + % ) % ) + $ . + G G G i + | G . + + E + + E + + . + $ # & & # $ + . + ) d d d d ) + . % ) ) & & ) ) % . & + ) $ $ ) + & . % + q s s q + % . % + T @.@.T + % . # * # # # # * # . + i + i i + i + . ) = # # # % % ) . % + q s s q + % . % + = - - = + % . % + q s s q + % . $ + z 7 7 z + $ . + + = @ @ + + + . % + s $ $ s + % . % + q s s q + % . + ,.,.,.^.+ /.,.. $ + 7 7 7 7 + $ . + d X X X X d + . + * - - - - * + . + ! , , , , ! + . + o 1 1 1 1 o + . + r k k k k r + . ) = ; ) ) ; - ) . + > > > > + # # . + |.}.}.}.}.1.+ . % ) = > > # ) % . ",
|
||||
". # # + z z + # # . $ + s n n s + $ . + % ) % ) % ) + . + ) G i + ].].| . $ + *.W W *.+ $ . # + $ $ $ $ + # . + d ) ) ) ) d + . # $ ) ) ) ) $ # . $ + & ) ) & + $ . # + $ q q $ + # . # + $ T T $ + # . # * * # # * * # . + i + [ [ + i + . $ ) % % % % ) $ . # + $ q q $ + # . + + $ = = $ + + . # + $ q q $ + # . # + + z z + + # . + + $ $ $ + + + . # + # s s # + # . # + $ q q $ + # . + ) ,.^.+ d.d./.. # + 7 + + 7 + # . # + X i i X + # . # + - % % - + # . # + , ~ ~ , + # . # + 1 4 4 1 + # . # + k | | k + # . + + + $ $ + + + . + + + + + # # # . + |.}.}.}.}.1.+ . # % + - * + % # . ",
|
||||
". + + z + + z + + . # + # s s # + # . + + + + + + + + . + + + + ) d d ].. + $ + *.*.+ $ + . & + # + + # + & . + | d d d d | + . % $ ) ) ) ) $ % . + + + & & + + + . # + q $ $ q + # . # + T $ $ T + # . # * # * * # * # . + i i + + i i + . % $ ) ) ) ) $ % . # + } $ $ } + # . & + = $ $ = + & . # + q $ $ q + # . + z 7 + + 7 z + . # + + = + + + + . # + q $ $ q + # . # + q $ $ q + # . + + + + ) 1.1.d.. $ + z 7 7 z + $ . # + d X X d + # . # + * - - * + # . # + ! , , ! + # . # + o 1 1 o + # . # + r k k r + # . $ + $ # # $ + $ . # # # # # # # # . + |.}.}.}.}.1.+ . # # % + + % # # . ",
|
||||
". z 7 7 z z 7 7 z . # + s # # s + # . ) + + + + + + ) . # # $ + d ].].d . G G 5 + + 5 G G . H H H = = H H H . + | | | | | | + . ) ) ) ) ) ) ) ) . ) ) & + + & ) ) . + - - q q - - + . + @.@.T T @.@.+ . * # # # # # # * . #.+ i i i i + #.. # # % % % % # # . + } } } } } } + . & & & = = & & & . + - - q q - - + . z 7 7 7 7 7 7 z . + + + + + + + + . + [ [ q q [ [ + . + } } q q } } + . # # $ + 1.d.d.1.. + z + + + + z + . + d i i i i d + . + * % % % % * + . + ! ~ ~ ~ ~ ! + . + o 4 4 4 4 o + . + r | | | | r + . # + # # # # + # . # # # # # # # # . + + + + + + + + . # # # # # # # # . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". $ + + $ $ + + $ . + + # # # # # # . + # # # # # # # . # # # # # # # # . # # # + # # # # . # # # # # % + % . # # $ + + $ # # . # # # # + # # # . # # $ + + $ # # . # # $ & + + # # . # # # # # # # # . + + < 1 ].8 # # . ].k k ].1 < + < . k ].1 + + 1 ].k . ].1 < @ < 1 ].k . # # + + # # # # . # # # # # # # # . # # # $ + + + $ . # # # $ # # # # . # # # # # # # # . # # - - - # # # . 7 7 z 7 7 7 7 7 . - * # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . x f.f.x # x x # . p f.f.p # p p # . # # # # # # # # . # # # # # # # # . # # + + + + # # . # # # # # # # # . ",
|
||||
". + 2.+ + + + 2.+ . + > + # # # # # . $ $ # # # # # # . # # # # # # # # . # # ) + ) # # # . # & & % $ + # + . # # + + + + # # . # # + # + # + # . # # + $ $ + $ # . # % + ) % # # # . # # # # # # # # . + > + < 1 k 8 # . 1 & & 1 < + # + . ].1 + + + + 1 ].. 1 < @ @ @ < 1 ].. # # % # + # # # . # # # + + # # # . # # # + $ # $ + . # # $ + $ # # # . # # # # % ) + + . # # - $ $ & # # . 7 7 z 7 7 7 7 7 . * - $ # # # # # . % + + % # # # # . % + + % # # # # . % + + % # # # # . g.h.h.g.x f.f.x . N h.h.N p f.f.p . # # # # # # # # . # # # # # # # # . % + + ) ) + + % . # # # # # # # # . ",
|
||||
". + 2.+ ) ) + 2.+ . + > $ $ # # # # . # + % # # # # # . # + + # # # # # . # # # i # # # # . + + + + + # > + . # # + + + + # # . # # + # + # + # . # # + $ # $ + # . # & ) % # # # # . # # # # $ + + $ . + > $ $ < ].k # . + + + + + # > + . ].1 + + + + 1 ].. ].1 < - < 1 ].k . # # % # # + # # . # + + + + + + # . # # # + # # $ + . # # + + + # # # . # # # $ + + ) + . - - - $ $ # - # . 7 7 z 7 7 7 7 7 . % = $ % # # # # . + d d + % + + % . + > > + % + + % . + k k + % + + % . h.i.i.h.g.h.h.g.. h.;.;.h.N h.h.N . # # # % + + + % . # # # # # # # # . + # # + + # # + . # # # + + + + + . ",
|
||||
". + 2.3.+ + 3.2.+ . # + > + # # # # . # % + # # # # # . # + > + # # # # . # # # i # # # # . + + + + > > > + . # # $ + + $ # # . # # + $ + $ + # . + % % & # # + # . # + ) % # # # # . # # # $ + > & + . < + > + < 1 ].8 . + + + + > > > + . k ].1 + + 1 ].k . ].1 < - < 1 ].k . # # % # # # + # . + # # + + # # + . # # # + # # + $ . # # # + # # # # . # # $ + ) o + k . - $ $ $ $ $ $ & . z z z z z z z z . # $ & ) # # # # . % + + + + d d + . % + + + + > > + . % + + + + k k + . g.h.h.h.h.i.i.h.. N h.h.h.h.;.;.h.. # # # + g g g + . + + + + + + + + . # # = # = # = # . # # + [ [ [ + + . ",
|
||||
". + 2.2.2.2.2.2.+ . # $ $ > + # # # . # # $ $ # # # # . # + > $ $ # # # . # # # i # # # # . # & & ) + # > + . # # # + + # # # . # # $ + + + $ # . % + + % # ) + # . # + ) % # # # # . # # $ + > & & + . < $ $ > + < 1 k . 1 & & ) + # > + . 8 k ].+ + ].k 8 . ].1 < - < 1 ].k . # # % # # $ + # . + % % + + % % + . # # $ + # # + # . # # # + # # # # . # $ + $ o $ ) d . - $ $ $ $ $ $ & . 7 7 7 7 7 7 z 7 . # # ) + $ # # # . # # + d d + + % . # # + > > + + % . # # + k k + + % . x f.h.i.i.h.h.g.. p f.h.;.;.h.h.N . % + + + + 4.+ % . + d d + + d d + . # + # = # = + # . # + [ [ [ + ( + . ",
|
||||
". + 2.2.2.2.2.2.+ . # # + > $ $ # # . # # # + % # # # . # # + > + $ + # . # # # i # # # # . # & & # $ + # + . # # # + + # # # . # # # $ + $ # # . # # # # # + ) # . # & ) % # # # # . # $ + > & & + $ . 1 < + > $ $ < ].. ].& & 1 < + # + . # 8 k + + k 8 # . ].1 < - < 1 ].k . # # % # # $ + # . # # # + + # # # . # # + $ # $ + # . # # # + # # # # . % + ) o $ + k + . # & # $ $ & & & . 7 7 7 7 7 7 z 7 . # # % + + % # # . # # % + + + + % . # # % + + + + % . # # % + + + + % . x f.g.h.h.h.h.g.. p f.N h.h.h.h.N . + g g g + + % # . + d | + + d | + . + + = # = # + + . + + + + + ( ( + . ",
|
||||
". + 2.2.2.2.2.2.+ . # # # + > + $ + . # # # % + # # # . # # $ $ > + $ # . # # # i # # # # . # & & # # % + % . # # # + + # # # . # # # # + # # # . # # # # ) + # # . # % + ) $ # # # . $ + + & & + $ # . ].1 < + > + $ + . k & & ].1 < + < . # # # + + # # # . ].1 < - < 1 ].k . # # % # # $ + # . # # # + + # # # . ) + ) # # + $ # . # # # + # # # # . ) + o $ + k + $ . # # - $ $ & # # . 7 7 7 7 7 7 z 7 . # # # $ + ) # # . % + + d + d d + . % + + > + > > + . % + + k + k k + . g.h.h.i.h.i.i.h.. N h.h.;.h.;.;.h.. % + 4.+ + + % # . + d | + + d | + . $ + # = # = + $ . + j.j.j.+ ( ( + . ",
|
||||
". + 2.2.2.2.2.2.+ . # # # $ $ > + $ . # # # # $ $ + # . # # $ + $ + # # . # # # i # # # # . # & & # # # # # . # # # + + # # # . # # # # + # # # . # # # # + ) # # . # # $ & + $ # # . + $ $ + + $ # # . k ].< $ $ > + $ . # & & k ].1 1 1 . # # # + + # # # . ].1 < - < 1 ].k . # # % # # $ + # . # # # + + # # # . + + + # # + # # . # # # + # # # # . + ) + ) k + $ # . # # - $ $ & # # . 7 7 7 7 7 7 z 7 . # # # # ) + $ # . + d d + + + + % . + > > + + + + % . + k k + + + + % . h.i.i.h.h.h.h.g.. h.;.;.h.h.h.h.N . # % + . . . + # . + d | + + d | + . # + = # = # + # . + j.j.j.+ ( + # . ",
|
||||
". + 2.2.2.2.2.2.+ . # # # $ + $ + # . # # # # # + % # . # # + $ + $ + # . # # # i # # # # . # & & # # # # # . # # # + + # # # . # # # # + # # # . # # # ) + $ # # . # # # # ) + # # . + $ $ + $ # # # . 8 k 1 $ + $ + < . # & & 8 k ].].].. # # # + + # # # . ].1 < - < 1 ].k . # # % # # # + # . # # # + + # # # . ) + ) # # + # # . # # $ + $ # # # . + + k d + $ # # . # # - $ $ & # # . 7 7 7 7 7 7 z 7 . # # # # % + + % . % + + + d d + # . % + + + > > + # . % + + + k k + # . g.h.h.h.i.i.h.f.. N h.h.h.;.;.h.f.. # # % + 9 + % # . + d | + + d | + . # + # = # = + # . + j.j.j.+ + # # . ",
|
||||
". + 2.2.2.2.2.2.+ . # # # + $ + $ + . # # # # + % + # . # # # # # + + # . # # # i # # # # . # & & # # # # # . # # # + + # # # . # # # # + # # # . # # # ) + $ # # . # # # # $ + # # . $ + + $ # # # # . # 8 ].+ $ + $ + . # & & # # 8 k k . # # # + + # # # . ].1 < - < 1 ].k . # # % # # + # # . # # $ + + $ # # . # # # # # ) + ) . # # $ + $ # # # . $ + + ) % # # # . # # - $ $ & # # . z z z z z z z z . # # # # # $ + ) . # + d d + + % # . # + > > + + % # . # + k k + + % # . f.h.i.i.h.h.g.x . f.h.;.;.h.h.N p . # # # % + % # # . ) + + ) ) + + ) . # + % # = % + # . + + + + + # # # . ",
|
||||
". + 3.+ 3.3.+ 3.+ . # # # # # # + + . # # # # # # $ $ . # # # # # # # # . # # # i # # # # . # & & # # # # # . # # # + + # # # . # # # # + # # # . # # # ) + $ # # . # # # # $ + # # . # # # # # # # # . # # k ].1 < + + . # & & # # # # # . # # # + + # # # . ].1 < - < 1 ].k . # # % # + # # # . # # $ + + $ # # . # # # # # + + + . # # $ + $ # # # . # # # # # # # # . # # - $ $ & # # . 7 7 z 7 7 7 7 7 . # # # # # # ) + . # % + + % # # # . # % + + % # # # . # % + + % # # # . x g.h.h.g.f.x # . p N h.h.N f.p # . # # # # % # # # . + d | + + d | + . # # + % % + # # . # # # # # # # # . ",
|
||||
". + + $ + + $ + + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # i # # # # . # & & # # # # # . # # # + + # # # . # # # # + # # # . # # # ) + $ # # . # # # # $ + # # . # # # # # # # # . # # # # # # # # . # & & # # # # # . # # # + + # # # . k ].1 - 1 ].k 8 . # # + + # # # # . # # # # # # # # . # # # # # ) + ) . # # # # # # # # . # # # # # # # # . # # # & & & # # . 7 7 z 7 7 7 7 7 . # # # # # # # % . # # # # # # # # . # # # # # # # # . # # # # # # # # . # x f.f.x x # # . # p f.f.p p # # . # # # # # # # # . + + + + + + + + . # # # + + # # # . # # # # # # # # . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". # # # # # # # # . # # # # # # # # . # # # # # + # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . + + # # + + + + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # + + + + $ # . $ + + + + + + $ . # # + + + # # # . # # ) ) ) ) # # . - * # # # # # # . # $ + + + + $ # . # # ) ) ) ) # # . ) + + + + + + ) . # # # # # # # # . + + ) # # ) + + . # # # # # # # # . # + # # # # + # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # $ + $ # # # . ",
|
||||
". # # # # # # # # . # # # # # # # # . # # # # ) k ) # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . + > + + g g / + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # $ + + + $ + $ . + $ $ $ $ $ $ + . # # + + + # # # . # # ) i i ) # # . * - $ # # # # # . $ + ) k k ) + $ . # # ) i i ) # # . + = = = = = = + . # # # + + # # # . + k d + + d k + . # # + $ $ # # # . + ( + # # + { + . # # p p p p # # . # % + + + + % # . # # # # # # # # . # $ + d + $ # # . ",
|
||||
". # % ) + + ) % # . # # # # # # # # . # # # # + 8 + # . # % $ $ $ % # # . # % $ $ $ $ % # . # % ) & & ) % # . # # # # # # # # . # % ) & & ) % # . + > $ $ + / + + . # # k 8 k k # # . # # u ..u u # # . # # 8.8.9.8.# # . # # ( K ( ( # # . # # 0.a.0.0.# # . # # % $ ) $ # # . # # = - = = # # . # + & & & + $ + . + $ # # # # $ + . # # $ $ + # # # . # # + + + + # # . % = | % # # # # . + - ) k k ) - + . # # + + + + # # . + = + + + + = + . + # ) + + ) # + . + k k k k k k + . # # % + + % # # . + { ( + + { { + . # p } } } } p # . # + ) ) ) ) + # . # 5.5.5.5.5.5.# . # + d k d + # # . ",
|
||||
". % + _ 4.4._ + % . # # # # # # # # . # # # # + 8 + # . % $ G G 1 $ % # . % $ G G G 1 $ % . % & # = = # & % . ) :.) ) 5.) ) # . % & D y y D & % . $ + > + $ + $ + . # 5.5.8 k k k # . # 1 1 ..u u u # . # b b 8.9.9.9.# . # g g K ( ( ( # . # b.b.a.0.0.0.# . # % % $ ) ) ) # . # @ @ - = = = # . $ & ) & ) & $ + . $ + $ # # $ + $ . # # + + + # # # . # # + ) ) + # # . # | k d # # # # . + + + + + + + + . # # + - - + # # . + = + # # + = + . + % ) + + ) % + . + k k k k k k + . # # # + + + % # . + _ { ( + { { + . p } N p p N } p . ) + $ ) ) $ + ) . 5.+ + + + + + 5.. # $ ) k ) $ # # . ",
|
||||
". ) _ g g g g _ ) . # # % + + % # # . # # # + 8 8 + # . $ G 1 #.].1 $ # . $ G 1 #.#.].1 $ . ) # - - - - # ) . ) & & P P & :.# . ) D F F F F D ) . * $ $ $ + # + $ . k 5.5.8 8 k r d . u 1 1 ....u G E . 8.b b 8.8.9.>.c.. ( g g K K ( { ^ . 0.b.b.a.a.0.d.&.. % % % $ $ ) & ) . = @ @ - - = # % . $ & & & & & $ + . # $ + $ $ + $ # . # # # # + # # # . # $ + ) ) + $ # . # # d k $ # # # . + % % % % % % + . # $ + - - + $ # . + = + # # + = + . % + + + + + + % . + k i k k i k + . # # # $ + + $ # . # + _ | ^ { + # . p } p p p p } p . + $ $ ) ) $ $ + . + - - - - - - + . # # + k + # # # . ",
|
||||
". + 4.g g g g 4.+ . # # + | | + # # . # # # + 8 + # # . $ G 1 1 ].].$ # . $ G 1 ].1 ].].$ . & = - - - - = & . 5.P + 8 + & ) # . & y F F F F y & . > * + > $ $ + # . 8 8 8 8 k k r d . ........u u G E . 8.8.8.8.9.9.>.c.. K K K K ( ( { ^ . a.a.a.a.0.0.d.&.. $ $ $ $ ) ) & + . - - - - = = # % . $ & ) & ) & $ # . # # $ + + $ # # . # # # # + # # # . $ + + ) ) + + $ . # # % k k % # # . + + + % % + + + . $ + + - - + + $ . + = + # # + = + . # + + + + + + # . + k k d r k k + . # # # % + + ) # . # # + ^ + + ( + . p } p p p p } p . + ) ) ) ) ) ) + . + = = = = = = + . # # + k + # # # . ",
|
||||
". + 4.g g g g 4.+ . # # + | | + # # . # # # + 8 + # # . $ 1 ].k a ].$ # . $ G 1 k k a ].$ . & = - - - - = & . ) P 8 8 8 P ) # . & y F F F F y & . * $ # + $ + $ + . k k 8 k k r r d . u u ..u u G G E . 9.9.8.9.9.>.>.c.. ( ( K ( ( { { ^ . 0.0.a.0.0.d.d.&.. ) ) $ ) ) & & + . = = - = = # # % . $ & & & & & $ # . # # + + + + # # . # # # # + # # # . + ) $ ) ) & ) + . # # # $ k d # # . + - + % % + - + . + ) @ - - > ) + . + = + # # + = + . + + + + + + + + . + k k i k k k + . # # # % + + ) # . # # + | ^ | + # . p } N p p N } p . ) & & ) ) & & ) . 5.+ - - - = + 5.. # # + k + # # # . ",
|
||||
". ) _ g g g g _ ) . # # % + + % # # . # # + 8 8 + # # . % $ 1 ].].$ % # . $ 1 ].].k a ].$ . ) # - - - - # ) . ) & + 8 + P 5.# . ) D F F F F D ) . $ # $ + + $ + $ . k k k k r r d d . u u u u G G E E . 8.9.9.9.>.>.c.c.. ( ( ( ( { { ^ ^ . 0.0.0.0.d.d.&.&.. $ ) ) ) & & + ) . = = = = # # % % . $ & ) & ) & $ # . # + i k k i + # . # # # $ + $ # # . + $ ) ) ) ) & + . # # # # d k $ # . + - + % % + - + . + @ - - - - > + . + = + # # + = + . # + + + + + + # . + k k k k k k + . # # # $ + + $ # . # + | ^ + + ( # . p N } p p } N p . + ) ) & & ) ) + . # 5.+ - = + 5.# . # # + k + # # # . ",
|
||||
". % + _ 4.4._ + % . # # # # # # # # . # # + 8 + # # # . # % $ $ $ % # # . % $ 1 1 ].].$ % . % & # = = # & % . :.& P P & & ) # . % & D y y D & % . + + + $ + $ + # . # k r r r d d # . # u G G G E E # . # 9.>.>.>.c.c.# . # ( { { { ^ ^ # . # 0.d.d.d.&.&.# . # ) & & & + + # . # = # # # % % # . $ & & & & & $ # . # + k k k k + # . # $ + + + + $ # . + $ ) ) ) ) & + . # # # # % k k % . + - + % % + - + . + @ - - - - > + . + = + # # + = + . % + + + + + + % . i r k k k k r i . # # # + + + % # . + ( + | _ + # # . # p } p p } p # . + $ $ & & $ $ + . # # 5.+ + 5.# # . # # + k + # # # . ",
|
||||
". # % ) + + ) % # . # # # # # # # # . # # + 8 + # # # . # # # # # # # # . # % $ $ $ $ % # . # % ) & & ) % # . ) ) 5.) ) :.) # . # % ) & & ) % # . % + + + $ + $ + . # # d d d d ) ) . # # E E E E ) ) . # # c.c.c.c.) ) . # # ^ ^ ^ ^ ) ) . # # &.&.&.&.) ) . # # ) + + ) ) ) . # # % % % % ) ) . $ & ) & ) & $ # . # + k k k k + # . # + $ $ # $ + # . + $ ) ) ) ) & + . # # # # # $ k d . + - + % % + - + . + @ - - - - > + . + = + ) ) + = + . + % + + + + % + . d k k r r k k d . # # % + + % # # . # + + _ / _ + # . p } } p p } } p . % + + % % + + % . # # # 5.5.# # # . # # + k + # # # . ",
|
||||
". # # # # # # # # . # # # # # # # # . # # ) k ) # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . + k k + + + + + . # # # ) ) ) ) ) . # # # ) ) ) ) ) . # # # ) ) ) ) ) . # # # ) ) ) ) ) . # # # ) ) ) ) ) . # # # ) ) ) ) ) . # # # ) ) ) ) ) . # + & & & + # # . # + i k k i + # . # + $ # # $ + # . + $ ) ) ) ) & + . # # # # # # d k . + - + % % + - + . + @ - - - - > + . = = = + + = = = . + # % + + % # + . k k k r r k k k . # # + $ $ # # # . # # # + _ _ + # . # p p # # p p # . # # # # # # # # . # # # # # # # # . # # + k + # # # . ",
|
||||
". # # # # # # # # . # # # # # # # # . # # # + # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . % + + % # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # $ + + + $ # # . # # + + + + # # . # $ + + + + $ # . + + + + + + + + . # # # # # # # % . $ + + + + + + $ . + + + + + + + + . + + + ) ) + + + . # # # # # # # # . k k r r r r k k . # # # # # # # # . # # # # + + # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # $ + $ # # # . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". # $ + + + + $ # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # $ + $ # . # # # # # # # # . # # # # # # # # . % + + + + % # # . # % + + + + % # . + + + + + + + # . # + + + + # # # . + + + + + + + + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # $ + + + + $ # . # # # # # # # # . # # # # # # # # . # # # # # # # # . ",
|
||||
". # + $ # # $ + # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # % ) + + ) % # . # # # # + E + # . # # # # # # # # . # # + + + + # # . + d q q d + # # . % + e ].].e + # . + | | | | | + # . + n e.+.+ # # # . + # > > > > # + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # + $ # # $ + # . # # # # # # # # . # $ + + + $ # # . # # # # # # # # . ",
|
||||
". # $ + $ $ + $ # . ) + + + + + + ) . % + + + + + + % . # # # # # # # # . # ) ,.6.6.,.) # . # # # $ + E + $ . # $ + + + + $ # . # + | d d | + # . + q q @ q + # # . + e ].].].e + # . + v | | | v + # . + e.e.e.+ + + + . $ + i i i i + $ . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # $ + $ $ + $ # . + + # + + # + + . $ + 5 5 5 + $ # . # # # # # # # # . ",
|
||||
". # # $ + + $ # # . + @ @ @ @ @ @ + . + | %.%.%.%.| + . # $ ) + + ) $ # . # + 6.7.7.6.+ # . # # # + E o E + . $ + e @.G e + $ . ) + d d d d + ) . + q @ @ q + # # . + ].].e + + % # . $ + | | | + $ # . + e.+.e.+ +.e.+ . + > > > > > > + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # $ + + $ # # . + d + d d + d + . + 5 [ [ k.5 + # . + % + % % + % + . ",
|
||||
". # # + + + + # # . + . . . . . . + . + %.%.%.%.%.%.+ . ) ) = = = = ) ) . # + 6.7.7.6.+ # . # # # + o o o + . + @.@.G e @.@.+ . + | + + + + | + . + q q q q + # # . + ].].+ # # # # . # + + + + + # # . + e.e.e.+ e.e.+ . + > > > > > > + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # + + + + # # . + r r r r r r + . + k.5 [ 5 k.+ $ . + ) r ) ) r ) + . ",
|
||||
". # + | d d | + # . + > @ @ @ @ > + . + %.%.%.%.%.%.+ . + = = = = = = + . # + 6.7.7.6.+ # . # # # + o o E $ . + G @.e @.e G + . + d d d d d d + . + + + + + + # # . + e e + % + + % . # # # # # # # # . + e.e.e.+ e.+.+ . + > > > > > > + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # + | d d | + # . + r r r r r d + . + 5 k.[ [ 5 5 + . + r k k k k r + . ",
|
||||
". + | d r r d | + . ) # @ @ @ @ # ) . + %.%.%.%.%.%.+ . + $ = = = = $ + . # + 6.7.7.6.+ # . # # $ + o o + # . + G G @.G G @.+ . + d v v v v d + . # # % + + + + % . % + + % + e e + . # + + + + + + + . + +.e.+.+ e.e.+ . + > > > > > > + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . + | d r r d | + . + d r r r r d + . $ + 5 5 [ [ 5 + . + d r k k r d + . ",
|
||||
". + d r d d r d + . $ ) . . . . ) $ . + | %.%.%.%.| + . + + ) + + ) + + . # + 6.7.7.6.+ # . # # + E o E $ # . + @.@.G e e @.+ . + d d d v d d + . # # + d q q d + . # # # % + ].].+ . # + | | | | | + . + e.e.e.+ +.e.+ . + > > > > > > + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . + d r d d r d + . $ $ r r r r $ $ . # $ + 5 k.5 + $ . $ + + + + + + $ . ",
|
||||
". + d r d d r d + . % + @ @ @ @ + % . % + + + + + + % . # ) + + + + ) # . # + 6.7.7.6.+ # . # $ + o E + # # . $ + e @.@.G + $ . + d v v d v d + . # # + q q @ q + . # % + + e ].].+ . # + v | | | v + . + e.+.n + e.+.+ . + > > > > > > + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . + d r d d r d + . # + r r r d + # . # # $ + + + $ # . # # # # # # # # . ",
|
||||
". + | d r r d | + . # ) + + + + ) # . # # # # # # # # . # # # # # # # # . # ) ,.6.6.,.) # . $ + o E + $ # # . # $ + + + + $ # . + d d d d d d + . # # + q @ @ q + . # + e ].].].e + . # $ + | | | + $ . + + + + e.e.e.+ . + > > > > > > + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . + | d r r d | + . # $ + r d + $ # . # # # # # # # # . # # # # # # # # . ",
|
||||
". # + | d d | + # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # % ) + + ) % # . + o E + $ # # # . # # # # # # # # . # + + + + + + # . # # + q q q q + . # + e ].].e + % . # # + + + + + # . # # # + +.e.n + . + $ > > > > $ + . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # + | d d | + # . # # # + + # # # . # # # # # # # # . # # # # # # # # . ",
|
||||
". # # + + + + # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . $ + + $ # # # # . # # # # # # # # . # # # # # # # # . # # + + + + + + . # % + + + + % # . # # # # # # # # . # # # + + + + # . # + + + + + + # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . # # + + + + # # . # # # # # # # # . # # # # # # # # . # # # # # # # # . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". = + # + # + = = . 6 # # + # + = = . = + # + # # 6 / . 6 / 6 + 6 / 6 / . = + # + # + = = . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 # # + # + = = . = + # + # # 6 / . 6 # # + # # 6 / . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 # # + # # 6 / . 6 / 6 + 6 / 6 / . 6 # # + # # 6 / . 6 # # + # + = = . 6 # # + # # 6 / . 6 # # + # # 6 / . = + # + # # 6 / . 6 # # + # # 6 / . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 # # + # + = = . = + # + # # 6 / . 6 # # + # # 6 / . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 # # + # # 6 / . 6 # # + # # 6 / . ",
|
||||
". = = + % + = = = . / 6 + % + = = = . = = + % + 6 / 6 . / 6 + % + 6 / 6 . = = + % + = = = . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + = = = . = = + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + = = = . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . = = + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + = = = . = = + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . ",
|
||||
". = + % % % + = + . 6 + % % % + = + . = + % % % + 6 / . 6 + % % % + 6 + . = + % % % + = + . 6 + % % % + 6 + . 6 + % % % + 6 / . 6 + % % % + = + . = + % % % + 6 / . 6 + % % % + 6 / . 6 + % % % + 6 + . 6 + % % % + 6 + . 6 + % % % + 6 / . 6 + % % % + 6 / . 6 + % % % + 6 / . 6 + % % % + 6 / . 6 + % % % + 6 + . 6 + % % % + = + . 6 + % % % + 6 + . 6 + % % % + 6 / . = + % % % + 6 / . 6 + % % % + 6 / . 6 + % % % + 6 + . 6 + % % % + 6 + . 6 + % % % + 6 + . 6 + % % % + = + . = + % % % + 6 + . 6 + % % % + 6 + . 6 + % % % + 6 + . 6 + % % % + 6 / . 6 + % % % + 6 + . 6 + % % % + 6 / . ",
|
||||
". + % % % % % + > . / % % % % % + > . + % % % % % / 6 . + % % % % % + > . + % % % % % + > . / % % % % % + > . + % % % % % / 6 . / % % % % % + > . + % % % % % / 6 . / % % % % % / 6 . + % % % % % + > . / % % % % % + > . + % % % % % / 6 . / % % % % % / 6 . / % % % % % / 6 . / % % % % % / 6 . / % % % % % + > . / % % % % % + > . / % % % % % + > . + % % % % % / 6 . + % % % % % / 6 . + % % % % % / 6 . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . / % % % % % + > . + % % % % % / 6 . / % % % % % + > . + % % % % % / 6 . ",
|
||||
". > + % + % + > > . 6 % % + % + > > . > + % + % % 6 / . > + % + % + > > . > + % + % + > > . 6 % % + % + > > . > + % + % % 6 / . 6 % % + % + > > . > + % + % % 6 / . 6 % % + % % 6 / . > + % + % + > > . 6 % % + % + > > . > + % + % % 6 / . 6 % % + % % 6 / . 6 % % + % % 6 / . 6 % % + % % 6 / . 6 % % + % + > > . 6 % % + % + > > . 6 % % + % + > > . > + % + % % 6 / . > + % + % % 6 / . > + % + % % 6 / . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . 6 % % + % + > > . > + % + % % 6 / . 6 % % + % + > > . > + % + % % 6 / . ",
|
||||
". > > + * + > > > . / 6 + * + > > > . > > + * + 6 / 6 . > > + * + > > > . > > + * + > > > . / 6 + * + > > > . > > + * + 6 / 6 . / 6 + * + > > > . > > + * + 6 / 6 . / 6 + * + 6 / 6 . > > + * + > > > . / 6 + * + > > > . > > + * + 6 / 6 . / 6 + * + 6 / 6 . / 6 + * + 6 / 6 . / 6 + * + 6 / 6 . / 6 + * + > > > . / 6 + * + > > > . / 6 + * + > > > . > > + * + 6 / 6 . > > + * + 6 / 6 . > > + * + 6 / 6 . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . / 6 + * + > > > . > > + * + 6 / 6 . / 6 + * + > > > . > > + * + 6 / 6 . ",
|
||||
". > + * * * + > + . 6 + * * * + > + . > + * * * + 6 / . > + * * * + > + . > + * * * + > + . 6 + * * * + > + . > + * * * + 6 / . 6 + * * * + > + . > + * * * + 6 / . 6 + * * * + 6 / . > + * * * + > + . 6 + * * * + > + . > + * * * + 6 / . 6 + * * * + 6 / . 6 + * * * + 6 / . 6 + * * * + 6 / . 6 + * * * + > + . 6 + * * * + > + . 6 + * * * + > + . > + * * * + 6 / . > + * * * + 6 / . > + * * * + 6 / . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . 6 + * * * + > + . > + * * * + 6 / . 6 + * * * + > + . > + * * * + 6 / . ",
|
||||
". + * * * * * + $ . / * * * * * + $ . + * * * * * / 6 . + * * * * * + $ . + * * * * * + $ . / * * * * * + $ . + * * * * * / 6 . / * * * * * + $ . + * * * * * / 6 . / * * * * * / 6 . + * * * * * + $ . / * * * * * + $ . + * * * * * / 6 . / * * * * * / 6 . / * * * * * / 6 . / * * * * * / 6 . / * * * * * + $ . / * * * * * + $ . / * * * * * + $ . + * * * * * / 6 . + * * * * * / 6 . + * * * * * / 6 . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . / * * * * * + $ . + * * * * * / 6 . / * * * * * + $ . + * * * * * / 6 . ",
|
||||
". $ + * + * + $ $ . 6 * * + * + $ $ . $ + * + * * 6 / . $ + * + * + $ $ . $ + * * * + $ $ . 6 * * + * + $ $ . $ + * + * * 6 / . 6 * * * * + $ $ . $ + * * * * 6 / . 6 * * + * * 6 / . $ + * * * + $ $ . 6 * * * * + $ $ . $ + * * * * 6 / . 6 * * + * * 6 / . 6 * * * * * 6 / . 6 * * * * * 6 / . 6 * * + * + $ $ . 6 * * + * + $ $ . 6 * * + * + $ $ . $ + * + * * 6 / . $ + * + * * 6 / . $ + * + * * 6 / . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . $ + * * * + $ $ . $ + * * * + $ $ . 6 * * + * + $ $ . $ + * + * * 6 / . 6 * * * * + $ $ . $ + * * * * 6 / . ",
|
||||
". $ $ + # + $ $ $ . / 6 + # + $ $ $ . $ $ + # + 6 / 6 . $ $ + # + $ $ $ . $ $ / 6 / $ $ $ . / 6 + # + $ $ $ . $ $ + # + 6 / 6 . / 6 / 6 / $ $ $ . $ $ / 6 / 6 / 6 . / 6 + # + 6 / 6 . $ $ / 6 / $ $ $ . / 6 / 6 / $ $ $ . $ $ / 6 / 6 / 6 . / 6 + # + 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 + # + $ $ $ . / 6 + # + $ $ $ . / 6 + # + $ $ $ . $ $ + # + 6 / 6 . $ $ + # + 6 / 6 . $ $ + # + 6 / 6 . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ / 6 / $ $ $ . $ $ / 6 / $ $ $ . $ $ / 6 / $ $ $ . / 6 + # + $ $ $ . $ $ + # + 6 / 6 . / 6 / 6 / $ $ $ . $ $ / 6 / 6 / 6 . ",
|
||||
". $ + # # # + $ + . 6 + # # # + $ + . $ + # # # + 6 / . $ + # # # + $ + . $ $ 6 / 6 $ $ $ . 6 + # # # + $ + . $ + # # # + 6 / . 6 / 6 / 6 $ $ $ . $ $ 6 / 6 / 6 / . 6 + # # # + 6 / . $ $ 6 / 6 $ $ $ . 6 / 6 / 6 $ $ $ . $ $ 6 / 6 / 6 / . 6 + # # # + 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 + # # # + $ + . 6 + # # # + $ $ . 6 + # # # + $ $ . $ + # # # + 6 / . $ + # # # + 6 / . $ + # # # + 6 / . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ $ . $ $ 6 / 6 $ $ $ . $ $ 6 / 6 $ $ $ . $ $ 6 / 6 $ $ $ . 6 + # # # + $ $ . $ + # # # + 6 / . 6 / 6 / 6 $ $ $ . $ $ 6 / 6 / 6 / . ",
|
||||
". + # # # # # + = . / # # # # # + = . + # # # # # / 6 . + # # # # # + = . / 6 / 6 / 6 / 6 . / # # # # # + = . + # # # # # / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / # # # # # / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / # # # # # / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / # # # # # + = . / # # # # # / 6 . / # # # # # / 6 . + # # # # # / 6 . / # # # # # / 6 . / # # # # # / 6 . / # # # # # + = . + # # # # # / 6 . / # # # # # / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / # # # # # / 6 . / # # # # # / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". = + # + # # 6 / . = + # + # + = = . = + # + # # 6 / . 6 # # + # + = = . = + # + # + = = . 6 # # + # + = = . = + # + # + = = . 6 # # + # # 6 / . 6 # # + # + = = . = + # + # # 6 / . 6 # # + # # 6 / . 6 # # + # # 6 / . 6 # # + # + = = . = + # + # # 6 / . 6 # # + # # 6 / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r # # + # + = = . = + # + # # r k . r k r + r k r k . = + # + # + = = . r k r + r k r k . r k r + r k r k . r # # + # + = = . = + # + # # r k . r # # + # # r k . r k r + r k r k . r k r + r k r k . r k r + r k r k . r k r + r k r k . r # # + # # r k . r k r + r k r k . ",
|
||||
". = = + % + 6 / 6 . = = + % + = = = . = = + % + 6 / 6 . / 6 + % + = = = . = = + % + = = = . / 6 + % + = = = . = = + % + = = = . / 6 + % + 6 / 6 . / 6 + % + = = = . = = + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + = = = . = = + % + 6 / 6 . / 6 + % + 6 / 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k r + % + = = = . = = + % + r k r . k r + % + r k r . = = + % + = = = . k r + % + r k r . k r + % + r k r . k r + % + = = = . = = + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . ",
|
||||
". = + % % % + 6 + . = + % % % + = + . = + % % % + 6 + . 6 + % % % + = + . = + % % % + = + . 6 + % % % + = + . = + % % % + = + . 6 + % % % + 6 + . 6 + % % % + = + . = + % % % + 6 + . 6 + % % % + 6 + . 6 + % % % + 6 + . 6 + % % % + = + . = + % % % + 6 + . 6 + % % % + 6 + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r + % % % + = + . = + % % % + r k . r + % % % + r + . = + % % % + = + . r + % % % + r + . r + % % % + r k . r + % % % + = + . = + % % % + r k . r + % % % + r k . r + % % % + r + . r + % % % + r + . r + % % % + r k . r + % % % + r k . r + % % % + r k . r + % % % + r k . ",
|
||||
". + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k % % % % % + > . + % % % % % k r . + % % % % % + > . + % % % % % + > . k % % % % % + > . + % % % % % k r . k % % % % % + > . + % % % % % k r . k % % % % % k r . + % % % % % + > . k % % % % % + > . + % % % % % k r . k % % % % % k r . k % % % % % k r . k % % % % % k r . ",
|
||||
". > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r % % + % + > > . > + % + % % r k . > + % + % + > > . > + % + % + > > . r % % + % + > > . > + % + % % r k . r % % + % + > > . > + % + % % r k . r % % + % % r k . > + % + % + > > . r % % + % + > > . > + % + % % r k . r % % + % % r k . r % % + % % r k . r % % + % % r k . ",
|
||||
". > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k r + * + > > > . > > + * + r k r . > > + * + > > > . > > + * + > > > . k r + * + > > > . > > + * + r k r . k r + * + > > > . > > + * + r k r . k r + * + r k r . > > + * + > > > . k r + * + > > > . > > + * + r k r . k r + * + r k r . k r + * + r k r . k r + * + r k r . ",
|
||||
". > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r + * * * + > + . > + * * * + r k . > + * * * + > + . > + * * * + > + . r + * * * + > + . > + * * * + r k . r + * * * + > + . > + * * * + r k . r + * * * + r k . > + * * * + > + . r + * * * + > + . > + * * * + r k . r + * * * + r k . r + * * * + r k . r + * * * + r k . ",
|
||||
". + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k * * * * * + $ . + * * * * * k r . + * * * * * + $ . + * * * * * + $ . k * * * * * + $ . + * * * * * k r . k * * * * * + $ . + * * * * * k r . k * * * * * k r . + * * * * * + $ . k * * * * * + $ . + * * * * * k r . k * * * * * k r . k * * * * * k r . k * * * * * k r . ",
|
||||
". $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r * * + * + $ $ . $ + * + * * r k . $ + * + * + $ $ . $ + * * * + $ $ . r * * + * + $ $ . $ + * + * * r k . r * * * * + $ $ . $ + * * * * r k . r * * + * * r k . $ + * * * + $ $ . r * * * * + $ $ . $ + * * * * r k . r * * + * * r k . r * * * * * r k . r * * * * * r k . ",
|
||||
". $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k r + # + $ $ $ . $ $ + # + r k r . $ $ + # + $ $ $ . $ $ k r k $ $ $ . k r + # + $ $ $ . $ $ + # + r k r . k r k r k $ $ $ . $ $ k r k r k r . k r + # + r k r . $ $ k r k $ $ $ . k r k r k $ $ $ . $ $ k r k r k r . k r + # + r k r . k r k r k r k r . k r k r k r k r . ",
|
||||
". $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ $ . $ + # # # + $ + . $ + # # # + $ + . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ + . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ $ . $ + # # # + $ $ . $ + # # # + $ $ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r + # # # + $ + . $ + # # # + r k . $ + # # # + $ + . $ $ r k r $ $ $ . r + # # # + $ + . $ + # # # + r k . r k r k r $ $ $ . $ $ r k r k r k . r + # # # + r k . $ $ r k r $ $ $ . r k r k r $ $ $ . $ $ r k r k r k . r + # # # + r k . r k r k r k r k . r k r k r k r k . ",
|
||||
". + # # # # # + = . + # # # # # / 6 . + # # # # # / 6 . + # # # # # + = . / # # # # # + = . / # # # # # + = . / # # # # # / 6 . + # # # # # + = . + # # # # # / 6 . / # # # # # + = . / # # # # # + = . + # # # # # / 6 . / # # # # # / 6 . / # # # # # / 6 . / # # # # # / 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k # # # # # + = . + # # # # # k r . + # # # # # + = . k r k r k r k r . k # # # # # + = . + # # # # # k r . k r k r k r k r . k r k r k r k r . k # # # # # k r . k r k r k r k r . k r k r k r k r . k r k r k r k r . k # # # # # k r . k r k r k r k r . k r k r k r k r . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". r # # + # # r k . r # # + # + = = . r # # + # # r k . r # # + # # r k . = + # + # # r k . r # # + # # r k . r k r + r k r k . r k r + r k r k . r k r + r k r k . r # # + # + = = . = + # + # # r k . r # # + # # r k . r k r + r k r k . r k r + r k r k . r # # + # # r k . r # # + # # r k . = + # + # # r k . = + # + # + = = . = + # + # # r k . r # # + # + = = . = + # + # + = = . r # # + # + = = . = + # + # + = = . r # # + # # r k . r # # + # + = = . = + # + # # r k . r # # + # # r k . r # # + # # r k . r # # + # + = = . = + # + # # r k . r # # + # # r k . @ @ @ @ @ @ @ @ . ",
|
||||
". k r + % + r k r . k r + % + = = = . k r + % + r k r . k r + % + r k r . = = + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + = = = . = = + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + r k r . = = + % + r k r . = = + % + = = = . = = + % + r k r . k r + % + = = = . = = + % + = = = . k r + % + = = = . = = + % + = = = . k r + % + r k r . k r + % + = = = . = = + % + r k r . k r + % + r k r . k r + % + r k r . k r + % + = = = . = = + % + r k r . k r + % + r k r . @ @ @ @ @ @ @ @ . ",
|
||||
". r + % % % + r + . r + % % % + = + . r + % % % + r + . r + % % % + r k . = + % % % + r k . r + % % % + r k . r + % % % + r + . r + % % % + r + . r + % % % + r + . r + % % % + = + . = + % % % + r + . r + % % % + r + . r + % % % + r + . r + % % % + r k . r + % % % + r + . r + % % % + r k . = + % % % + r + . = + % % % + = + . = + % % % + r + . r + % % % + = + . = + % % % + = + . r + % % % + = + . = + % % % + = + . r + % % % + r + . r + % % % + = + . = + % % % + r + . r + % % % + r + . r + % % % + r + . r + % % % + = + . = + % % % + r + . r + % % % + r + . @ @ @ @ @ @ @ @ . ",
|
||||
". k % % % % % + > . k % % % % % + > . k % % % % % + > . + % % % % % k r . + % % % % % k r . + % % % % % k r . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . k % % % % % + > . + % % % % % k r . k % % % % % + > . + % % % % % k r . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . @ @ @ @ @ @ @ @ . ",
|
||||
". r % % + % + > > . r % % + % + > > . r % % + % + > > . > + % + % % r k . > + % + % % r k . > + % + % % r k . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . r % % + % + > > . > + % + % % r k . r % % + % + > > . > + % + % % r k . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . @ @ @ @ @ @ @ @ . ",
|
||||
". k r + * + > > > . k r + * + > > > . k r + * + > > > . > > + * + r k r . > > + * + r k r . > > + * + r k r . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . k r + * + > > > . > > + * + r k r . k r + * + > > > . > > + * + r k r . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . @ @ @ @ @ @ @ @ . ",
|
||||
". r + * * * + > + . r + * * * + > + . r + * * * + > + . > + * * * + r k . > + * * * + r k . > + * * * + r k . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . r + * * * + > + . > + * * * + r k . r + * * * + > + . > + * * * + r k . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . @ @ @ @ @ @ @ @ . ",
|
||||
". k * * * * * + $ . k * * * * * + $ . k * * * * * + $ . + * * * * * k r . + * * * * * k r . + * * * * * k r . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . k * * * * * + $ . + * * * * * k r . k * * * * * + $ . + * * * * * k r . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . @ @ @ @ @ @ @ @ . ",
|
||||
". r * * + * + $ $ . r * * + * + $ $ . r * * + * + $ $ . $ + * + * * r k . $ + * + * * r k . $ + * + * * r k . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . $ + * * * + $ $ . $ + * * * + $ $ . r * * + * + $ $ . $ + * + * * r k . r * * * * + $ $ . $ + * * * * r k . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . @ @ @ @ @ @ @ @ . ",
|
||||
". k r + # + $ $ $ . k r + # + $ $ $ . k r + # + $ $ $ . $ $ + # + r k r . $ $ + # + r k r . $ $ + # + r k r . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ k r k $ $ $ . $ $ k r k $ $ $ . $ $ k r k $ $ $ . k r + # + $ $ $ . $ $ + # + r k r . k r k r k $ $ $ . $ $ k r k r k r . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . @ @ @ @ @ @ @ @ . ",
|
||||
". r + # # # + $ + . r + # # # + $ $ . r + # # # + $ $ . $ + # # # + r k . $ + # # # + r k . $ + # # # + r k . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ $ . $ $ r k r $ $ $ . $ $ r k r $ $ $ . $ $ r k r $ $ $ . r + # # # + $ $ . $ + # # # + r k . r k r k r $ $ $ . $ $ r k r k r k . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ $ . $ + # # # + $ + . $ + # # # + $ + . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ + . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ $ . $ + # # # + $ $ . $ + # # # + $ $ . @ @ @ @ @ @ @ @ . ",
|
||||
". k # # # # # + = . k # # # # # k r . k # # # # # k r . + # # # # # k r . k # # # # # k r . k # # # # # k r . k # # # # # + = . + # # # # # k r . k # # # # # k r . k r k r k r k r . k r k r k r k r . k r k r k r k r . k # # # # # k r . k # # # # # k r . k r k r k r k r . k r k r k r k r . + # # # # # + = . + # # # # # k r . + # # # # # k r . + # # # # # + = . k # # # # # + = . k # # # # # + = . k # # # # # k r . + # # # # # + = . + # # # # # k r . k # # # # # + = . k # # # # # + = . + # # # # # k r . k # # # # # k r . k # # # # # k r . k # # # # # k r . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". = + # + # # 6 / . 6 + ( + ( + _ _ . _ + ( + ( + 6 / . _ + ( + ( + _ _ . _ # # + # # 6 / . 6 / 6 + 6 / 6 / . _ + ( + ( + 6 / . 6 + ( + ( + _ _ . 6 / 6 + 6 / 6 / . _ + ( + ( + _ _ . _ + ( + ( + _ _ . 6 + ( + ( + _ _ . 6 / 6 + 6 / 6 / . _ + ( + ( + _ _ . = + # + # # _ _ . = + # + # # _ _ . = + # + # + = = . = + # + # + = = . _ + ( + ( + _ _ . _ + ( + ( + _ _ . _ + ( + ( + _ _ . _ # # + # + = = . = + # + # # _ _ . _ # # + # # _ _ . = + # + # # _ _ . = + # + # + = = . = + # + # # 6 / . = + # + # # _ _ . 6 # # + # + = = . = + # + # # _ _ . = + # + # + = = . 6 / 6 + 6 / 6 / . ",
|
||||
". = = + % + 6 / 6 . / + + % + + _ _ . _ + + % + + / 6 . _ + + % + + _ _ . _ + + % + 6 / 6 . / 6 + % + 6 / 6 . _ + + % + + / 6 . / + + % + + _ _ . / 6 + % + 6 / 6 . _ + + % + + _ _ . _ + + % + + _ _ . / + + % + + _ _ . / 6 + % + 6 / 6 . _ + + % + + _ _ . = = + % + + _ _ . = = + % + + _ _ . = = + % + = = = . = = + % + = = = . _ + + % + + _ _ . _ + + % + + _ _ . _ + + % + + _ _ . _ + + % + = = = . = = + % + + _ _ . _ + + % + + _ _ . = = + % + + _ _ . = = + % + = = = . = = + % + + / 6 . = = + % + + _ _ . / 6 + % + = = = . = = + % + + _ _ . = = + % + = = = . / 6 + % + 6 / 6 . ",
|
||||
". = + % % % + 6 + . 6 + % % % + + + . + + % % % + + + . + + % % % + + + . + + % % % + 6 / . + + % % % + 6 + . + + % % % + + + . 6 + % % % + + + . 6 + % % % + 6 + . + + % % % + + + . + + % % % + + + . 6 + % % % + + + . 6 + % % % + 6 + . + + % % % + + + . = + % % % + + + . = + % % % + + + . = + % % % + = + . = + % % % + = + . + + % % % + + + . + + % % % + + + . + + % % % + + + . + + % % % + = + . = + % % % + + + . + + % % % + + + . = + % % % + + + . = + % % % + = + . = + % % % + + / . = + % % % + + + . 6 + % % % + = + . = + % % % + + + . = + % % % + = + . 6 + % % % + 6 / . ",
|
||||
". + % % % % % + > . / % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % / 6 . / % % % % % + > . + % % % % % + > . / % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + / . + % % % % % + > . + % % % % % + / . + % % % % % + / . + % % % % % + / . + % % % % % + > . + % % % % % + > . + % % % % % + > . / % % % % % + > . + % % % % % + / . + % % % % % + > . / % % % % % + > . + % % % % % + / . / % % % % % + / . + % % % % % + / . + % % % % % + > . + % % % % % + 6 . + % % % % % + / . + % % % % % + > . + % % % % % + / . + % % % % % + > . + % % % % % / 6 . ",
|
||||
". > + % + % + > > . 6 % % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % % 6 / . / % % + % + > > . > + % + % + > > . 6 % % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % % + / . > + % + % + > > . > + % + % % + / . > + % + % % + / . > + % + % % + / . > + % + % + > > . > + % + % + > > . > + % + % + > > . / % % + % + > > . > + % + % % + / . > + % + % + > > . / % % + % + > > . > + % + % % + / . / % % + % % + / . > + % + % % + / . > + % + % + > > . > + % + % % + / . > + % + % % + / . > + % + % + > > . > + % + % % + / . > + % + % + > > . > + % + % % 6 / . ",
|
||||
". > > + * + > > > . / 6 + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + 6 / 6 . / / + * + > > > . > > + * + > > > . / 6 + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + { + / . > > + * + > > > . > > + * + { + / . > > + * + { + / . > > + * + { + / . > > + * + > > > . > > + * + > > > . > > + * + > > > . / / + * + > > > . > > + * + { + / . > > + * + > > > . / / + * + > > > . > > + * + { + / . / / + * + { + / . > > + * + 6 + / . > > + * + > > > . > > + * + { + 6 . > > + * + { + / . > > + * + > > > . > > + * + 6 + / . > > + * + > > > . > > + * + { + 6 . ",
|
||||
". > + * * * + > + . 6 + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + 6 / . + + * * * + > + . > + * * * + > + . 6 + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + { + . > + * * * + > + . > + * * * + { + . > + * * * + { + . > + * * * + { + . > + * * * + > + . > + * * * + > + . > + * * * + > + . + + * * * + > + . > + * * * + { + . > + * * * + > + . + + * * * + > + . > + * * * + { + . + + * * * + { + . > + * * * + { + . > + * * * + > + . > + * * * + { + . > + * * * + { + . > + * * * + > + . > + * * * + { + . > + * * * + > + . > + * * * + { + . ",
|
||||
". + * * * * * + $ . / * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * / 6 . K * * * * * + $ . + * * * * * + $ . / * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * { + . + * * * * * + $ . + * * * * * { + . + * * * * * { + . + * * * * * { + . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . K * * * * * + $ . + * * * * * { + . + * * * * * + $ . K * * * * * + $ . + * * * * * { + . K * * * * * { + . + * * * * * { + . + * * * * * + $ . + * * * * * { + . + * * * * * { + . + * * * * * + $ . + * * * * * { + . + * * * * * + $ . + * * * * * { + . ",
|
||||
". $ + * * * + $ $ . 6 * * + * + $ $ . $ + * * * + $ $ . $ + * * * + $ $ . $ + * * * * 6 / . + * * + * + $ $ . $ + * + * + $ $ . 6 * * * * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . $ + * * * * { + . $ + * * * + $ $ . $ + * * * * { + . $ + * * * * { + . $ + * + * * { + . $ + * + * + $ $ . $ + * * * + $ $ . $ + * * * + $ $ . + * * + * + $ $ . $ + * + * * { + . $ + * + * + $ $ . + * * + * + $ $ . $ + * + * * { + . + * * * * * { + . $ + * * * * { + . $ + * + * + $ $ . $ + * * * * { + . $ + * * * * { + . $ + * + * + $ $ . $ + * * * * { + . $ + * * * + $ $ . $ + * * * * { + . ",
|
||||
". $ $ + { { $ $ $ . / 6 + # + $ $ $ . $ $ / 6 / $ $ $ . $ $ / 6 / $ $ $ . $ $ / 6 / 6 / 6 . K K + # + $ $ $ . $ $ + # + $ $ $ . / 6 / 6 / $ $ $ . $ $ + # + $ $ $ . $ $ + { { $ $ $ . $ $ + { { { + K . $ $ + { { $ $ $ . $ $ + { { { + K . $ $ + { { { + 6 . $ $ + # + { + K . $ $ + # + $ $ $ . $ $ + { { $ $ $ . $ $ + { { $ $ $ . K K + # + $ $ $ . $ $ + # + { + K . $ $ + # + $ $ $ . K K + # + $ $ $ . $ $ + # + { + K . K K + { { { + K . $ $ + { { { + 6 . $ $ + # + $ $ $ . $ $ + { { { + 6 . $ $ + { { { + K . $ $ + # + $ $ $ . $ $ + { { { + K . $ $ + { { $ $ $ . $ $ + { { { + 6 . ",
|
||||
". $ $ + + + $ $ $ . 6 + # # # + $ $ . $ $ 6 / 6 $ $ $ . $ $ 6 / 6 $ $ $ . $ $ 6 / 6 / 6 / . + + # # # + $ $ . $ + # # # + $ $ . 6 / 6 / 6 $ $ $ . $ + # # # + $ $ . $ $ + + + $ $ $ . $ $ + + + + + + . $ $ + + + $ $ $ . $ $ + + + + + + . $ $ 6 + + + 6 / . $ + # # # + + + . $ + # # # + $ $ . $ $ + + + $ $ $ . $ $ + + + $ $ $ . + + # # # + $ + . $ + # # # + + + . $ + # # # + $ + . + + # # # + $ $ . $ + # # # + + + . + K + + + + + + . $ $ 6 + + + 6 / . $ + # # # + $ $ . $ $ + + + + 6 / . $ $ + + + + + + . $ + # # # + $ $ . $ $ + + + + + + . $ $ + + + $ $ $ . $ $ + + + + 6 / . ",
|
||||
". _ + ( ( ( + _ _ . / # # # # # / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . _ # # # # # / 6 . / # # # # # k r . / 6 / 6 / 6 / 6 . + # # # # # _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . / + ( ( ( + _ _ . / 6 / 6 / 6 / 6 . + # # # # # _ _ . + # # # # # / 6 . _ + ( ( ( + / 6 . / + ( ( ( + _ _ . _ # # # # # + = . + # # # # # _ _ . + # # # # # + = . _ # # # # # _ _ . _ # # # # # _ _ . _ + ( ( ( + _ _ . / 6 / 6 / 6 / 6 . + # # # # # _ _ . _ + ( ( ( + / 6 . / + ( ( ( + _ _ . + # # # # # _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + / 6 . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". 6 # # + # # r k . = + # + # # r k . 6 / 6 + 6 / 6 k . 6 # # + # # r k . 6 / 6 + 6 / 6 / . = + # + # # r k . 6 # # + # # r k . 6 # # + # # r k . r k r + r k r k . r k r + r k r k . r k r + r k r k . r k r + r k r k . 6 / 6 + 6 / 6 k . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 # # + # + = = . 6 / 6 + 6 / 6 / . 6 # # + # + = = . 6 / 6 + 6 / 6 / . g + Q + Q + g g . g + Q + Q + g g . g + Q + Q + g g . 6 / 6 + 6 / 6 / . g + Q + Q + 6 / . g + Q + Q + g g . 6 / 6 + 6 / 6 / . 6 # # + # + = = . g # # + # + = = . g # # + # + = = . g + Q + Q + g g . = + # + # # g g . 6 # # + # # 6 / . ",
|
||||
". / 6 + % + r k r . = = + % + r k r . / 6 + % + 6 / r . / 6 + % + r k r . / 6 + % + 6 / 6 . = = + % + r k r . / 6 + % + r k r . / 6 + % + r k r . k r + % + r k 6 . k r + % + r k r . / r + % + r k r . k r + % + r k r . / 6 + % + 6 / r . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + = = = . / 6 + % + 6 / 6 . / 6 + % + = = = . / 6 + % + 6 / 6 . g + + % + + g g . g + + % + + g g . g + + % + + g g . / 6 + % + 6 / 6 . g + + % + + / 6 . g + + % + + g g . / 6 + % + 6 / 6 . / 6 + % + = = = . g + + % + = = = . g + + % + = = = . g + + % + + g g . = = + % + + g g . / 6 + % + 6 / 6 . ",
|
||||
". 6 + % % % + r + . = + % % % + r k . 6 + % % % + r k . 6 + % % % + r k . 6 + % % % + 6 + . = + % % % + r k . 6 + % % % + r + . 6 + % % % + r k . r + % % % + 6 / . r + % % % + r k . 6 + % % % + r + . r + % % % + r + . 6 + % % % + r k . 6 + % % % + 6 + . 6 + % % % + 6 + . 6 + % % % + = + . 6 + % % % + 6 + . 6 + % % % + = + . 6 + % % % + 6 + . + + % % % + + + . + + % % % + + + . + + % % % + + + . 6 + % % % + 6 / . + + % % % + + + . + + % % % + + + . 6 + % % % + 6 + . 6 + % % % + = + . + + % % % + = + . + + % % % + = + . + + % % % + + + . = + % % % + + + . 6 + % % % + 6 + . ",
|
||||
". / % % % % % + > . + % % % % % k r . + % % % % % k r . + % % % % % k r . / % % % % % + > . + % % % % % k r . + % % % % % + > . / % % % % % k r . + % % % % % / 6 . + % % % % % k r . / % % % % % + > . + % % % % % + > . + % % % % % k r . / % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . 2.% % % % % + > . + % % % % % / 6 . 2.% % % % % + > . 2.% % % % % + > . + % % % % % + > . + % % % % % + > . 2.% % % % % + > . + % % % % % + > . + % % % % % + 2.. + % % % % % + > . + % % % % % + 2.. ",
|
||||
". 6 % % + % + > > . > + % + % % r k . > + % + % % r k . > + % + % % r k . 6 % % + % + > > . > + % + % % r k . > + % + % + > > . 6 % % + % % r k . > + % + % % 6 / . > + % + % % r k . 6 % % + % + > > . > + % + % + > > . > + % + % % r k . 6 % % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . 2.% % + % + > > . > + % + % % 6 / . 2.% % + % + > > . 2.% % + % + > > . > + % + % + > > . > + % + % + > > . 2.% % + % + > > . > + % + % + > > . > + % + % % + 2.. > + % + % + > > . > + % + % % + 2.. ",
|
||||
". / 6 + * + > > > . > > + * + r k r . > > + * + r k r . > > + * + r k r . / 6 + * + > > > . > > + * + r k r . > > + * + > > > . / 6 + * + r k r . > > + * + 6 / 6 . > > + * + r k r . / 6 + * + > > > . > > + * + > > > . > > + * + r k r . / 6 + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . 2.2.+ * + > > > . > > + * + 6 / 6 . 2.2.+ * + > > > . 2.2.+ * + > > > . > > + * + > > > . > > + * + > > > . 2.2.+ * + > > > . > > + * + > > > . > > + * + 4.+ 2.. > > + * + > > > . > > + * + 4.+ 2.. ",
|
||||
". 6 + * * * + > + . > + * * * + r k . > + * * * + r k . > + * * * + r k . 6 + * * * + > + . > + * * * + r k . > + * * * + > + . 6 + * * * + r k . > + * * * + 6 / . > + * * * + r k . 6 + * * * + > + . > + * * * + > + . > + * * * + r k . 6 + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . + + * * * + > + . > + * * * + 6 / . + + * * * + > + . + + * * * + > + . > + * * * + > + . > + * * * + > + . + + * * * + > + . > + * * * + > + . > + * * * + 4.+ . > + * * * + > + . > + * * * + 4.+ . ",
|
||||
". / * * * * * + $ . + * * * * * k r . + * * * * * k r . + * * * * * k r . / * * * * * + $ . + * * * * * k r . + * * * * * + $ . / * * * * * k r . + * * * * * / 6 . + * * * * * k r . / * * * * * + $ . + * * * * * + $ . + * * * * * k r . / * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . n.* * * * * + $ . + * * * * * / 6 . n.* * * * * + $ . n.* * * * * + $ . + * * * * * + $ . + * * * * * + $ . n.* * * * * + $ . + * * * * * + $ . + * * * * * 4.+ . + * * * * * + $ . + * * * * * 4.+ . ",
|
||||
". 6 * * * * + $ $ . $ + * + * * r k . $ + * + * * r k . $ + * * * * r k . 6 * * + * + $ $ . $ + * * * * r k . $ + * + * + $ $ . 6 * * + * * r k . $ + * * * * 6 / . $ + * * * * r k . 6 * * * * + $ $ . $ + * * * + $ $ . $ + * * * * r k . 6 * * * * + $ $ . $ + * * * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . $ + * + * + $ $ . + * * * * + $ $ . $ + * * * * 6 / . + * * * * + $ $ . + * * * * + $ $ . $ + * * * + $ $ . $ + * + * + $ $ . + * * + * + $ $ . $ + * + * + $ $ . $ + * + * * 4.+ . $ + * + * + $ $ . $ + * + * * 4.+ . ",
|
||||
". / 6 / 6 / $ $ $ . $ $ + # + r k r . $ $ + # + r k r . $ $ k r k r k r . / 6 + # + $ $ $ . $ $ / 6 / 6 k r . $ $ + # + $ $ $ . / 6 + # + r k r . $ $ / 6 / 6 / 6 . $ $ / 6 / 6 k r . / 6 / 6 / $ $ $ . $ $ / 6 / $ $ $ . $ $ k r k r k r . / r k r k $ $ $ . $ $ k r k $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ k r k $ $ $ . $ $ + # + $ $ $ . $ $ + 4.4.$ $ $ . $ $ + # + $ $ $ . + l.+ 4.4.$ $ $ . $ $ 4.4.4.4.+ 6 . l.l.+ 4.4.$ $ $ . l.l.+ 4.4.$ $ $ . $ $ + 4.4.$ $ $ . $ $ + # + $ $ $ . l.l.+ # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + 4.+ l.. $ $ + # + $ $ $ . $ $ + # + 4.+ l.. ",
|
||||
". 6 / 6 / 6 $ $ $ . $ + # # # + r k . $ + # # # + r k . $ $ r k r k r k . 6 + # # # + $ $ . $ $ 6 / 6 / 6 k . $ + # # # + $ $ . 6 + # # # + r k . $ $ 6 / 6 / 6 / . $ $ 6 / 6 / 6 k . 6 / 6 / 6 $ $ $ . $ $ 6 / 6 $ $ $ . $ $ r k r k r k . 6 k r k r $ $ $ . $ $ r k r $ $ $ . $ + # # # + $ $ . $ + # # # + $ $ . $ $ r k r $ $ $ . $ + # # # + $ $ . $ $ + + + $ $ $ . $ + # # # + $ + . + l.+ + + $ $ $ . $ $ + + + + 6 / . + l.+ + + $ $ $ . + l.+ + + $ $ $ . $ $ + + + $ $ $ . $ + # # # + $ + . + + # # # + $ + . $ + # # # + $ + . $ + # # # + + + . $ + # # # + $ $ . $ + # # # + + + . ",
|
||||
". / 6 / 6 / 6 / 6 . / # # # # # k r . + # # # # # k r . k r k r k r k r . / # # # # # k r . / 6 / 6 / 6 / 6 . + # # # # # k r . / # # # # # k r . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . k r k r k r k r . k r k r k r k r . k r k r k r k r . + # # # # # k r . + # # # # # k r . k r k r k r k r . + # # # # # g g . g + Q Q Q + g g . g # # # # # + = . 9.+ Q Q Q + g g . / + Q Q Q + / 6 . g + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + g g . g # # # # # + = . g # # # # # + = . g # # # # # + = . + # # # # # g g . + # # # # # g g . + # # # # # g g . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". 6 # # + # # 6 / . g + Q + Q + g g . 6 + Q + Q + g g . 6 / 6 + 6 / 6 / . g + Q + Q + g g . = + # + # # g g . = + # + # # g g . g + Q + Q + g g . g + Q + Q + g g . g # # + # + = = . 6 # # + # # g g . 6 / 6 + 6 / 6 / . ) + # + # + = = . ) + # + # + = = . = + # + # + = = . = + # + # + = = . = + # + # + + ) . = + # + # + + ) . 6 # # + # + + ) . = + # + # + + ) . 6 / 6 + 6 / 6 / . = + # + # + = = . 6 / 6 + 6 / 6 / . = + # + # + + ' . = + # + # + + ' . ' + # + # + = = . = + # + # + = = . = + # + # + = = . = + # + # + + ' . ' + # + # + = = . ' + # + # + = = . ! ' ' ' ' ' ! ! . ",
|
||||
". / 6 + % + 6 / 6 . g + + % + + g g . / + + % + + g g . / 6 + % + 6 / 6 . g + + % + + g g . = = + % + + g g . = = + % + + g g . g + + % + + g g . g + + % + + g g . g + + % + = = = . / 6 + % + + g g . / 6 + % + 6 / 6 . ) + + % + = = = . ) + + % + = = = . = = + % + = = = . = = + % + = = = . = = + % + = + ) . = = + % + = + ) . / 6 + % + = + ) . = = + % + = + ) . / 6 + % + 6 / 6 . = = + % + = = = . / 6 + % + 6 / 6 . = = + % + = + ~ . = = + % + = + ~ . ~ + + % + = = = . = = + % + = = = . = = + % + = = = . = = + % + = + ~ . ~ + + % + = = = . ~ + + % + = = = . ~ + + + + + ~ ! . ",
|
||||
". 6 + % % % + 6 / . + + % % % + + + . 6 + % % % + + + . 6 + % % % + 6 + . + + % % % + + + . = + % % % + + + . = + % % % + + + . + + % % % + + + . + + % % % + + + . + + % % % + = + . 6 + % % % + + + . 6 + % % % + 6 + . + + % % % + = + . + + % % % + = + . = + % % % + = + . = + % % % + = + . = + % % % + = + . = + % % % + = + . 6 + % % % + = + . = + % % % + = + . 6 + % % % + 6 + . = + % % % + = + . 6 + % % % + 6 + . = + % % % + = + . = + % % % + = + . + + % % % + = + . = + % % % + = + . = + % % % + = + . = + % % % + = + . + + % % % + = + . + + % % % + = + . + + % % % + + ' . ",
|
||||
". + % % % % % / 6 . + % % % % % + 2.. + % % % % % + > . + % % % % % + 2.. + % % % % % + 2.. + % % % % % + 2.. + % % % % % + > . 2.% % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + 2.. / % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + ' . ",
|
||||
". > + % + % % 6 / . > + % + % % + 2.. > + % + % + > > . > + % + % % + 2.. > + % + % % + 2.. > + % + % % + 2.. > + % + % + > > . 2.% % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % % + 2.. 6 % % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + + ' . ",
|
||||
". > > + * + 6 / 6 . > > + * + 4.+ 2.. > > + * + > > > . > > + * + 4.+ 2.. > > + * + 4.+ 2.. > > + * + 4.+ 2.. > > + * + > > > . 2.2.+ * + > > > . > > + * + > > > . > > + * + > > > . > > + * + 4.+ 2.. / 6 + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > + ' . ",
|
||||
". > + * * * + 6 / . > + * * * + 4.+ . > + * * * + > + . > + * * * + 4.+ . > + * * * + 4.+ . > + * * * + 4.+ . > + * * * + > + . + + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + 4.+ . 6 + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + + ' . ",
|
||||
". + * * * * * / 6 . + * * * * * 4.+ . + * * * * * + $ . + * * * * * 4.+ . + * * * * * 4.+ . + * * * * * 4.+ . + * * * * * + $ . n.* * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * 4.+ . / * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + ' . ",
|
||||
". $ + * * * * 6 / . $ + * * * * 4.+ . $ + * * * + $ $ . $ + * * * * 4.+ . $ + * * * * 4.+ . $ + * + * * 4.+ . $ + * + * + $ $ . + * * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * * * * 4.+ . 6 * * + * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * + + ' . ",
|
||||
". $ $ + + + + / 6 . $ $ + 4.4.4.+ l.. $ $ + 4.4.$ $ $ . $ $ + 4.4.4.+ l.. $ $ + 4.4.4.+ 6 . $ $ + # + 4.+ l.. $ $ + # + $ $ $ . l.l.+ # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + 4.4.4.+ 6 . / 6 + # + $ $ $ . $ $ + # + $ $ $ . + $ / 6 / $ $ $ . $ $ + # + $ $ + . + $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ + . $ $ + # + $ $ $ . $ $ + { { $ $ $ . + $ + # + $ $ $ . + $ + # + $ $ $ . $ $ + # + $ $ + . $ $ / 6 / $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ + . + $ + # + $ $ $ . $ $ + # + $ $ + . + $ + # + $ $ $ . $ $ + # + $ $ + . $ $ + # + $ + ' . ",
|
||||
". $ $ + ~ ~ + + / . $ $ + + + + + + . $ $ + + + $ $ $ . $ $ + + + + + + . $ $ 6 + + + 6 / . $ + # # # + + + . $ + # # # + $ $ . + + # # # + $ + . $ + # # # + $ + . $ + # # # + $ + . $ $ 6 + + + 6 / . 6 + # # # + $ $ . $ + # # # + $ $ . + $ 6 / 6 $ $ $ . $ + # # # + $ + . + + # # # + $ + . $ + # # # + $ + . $ + # # # + $ + . $ + # # # + $ + . $ $ + + + $ $ $ . + + # # # + $ + . + + # # # + $ + . $ + # # # + $ + . $ $ 6 / 6 $ $ $ . $ + # # # + $ + . $ + # # # + $ $ . $ + # # # + $ + . + + # # # + $ + . $ + # # # + $ + . + + # # # + $ + . $ + # # # + $ + . $ + # # # + + ' . ",
|
||||
". g + + ' ! ~ + 6 . g + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + g g . / 6 / 6 / 6 / 6 . + # # # # # g g . + # # # # # / 6 . g # # # # # + = . + # # # # # + = . + # # # # # + = . / 6 / 6 / 6 / 6 . / # # # # # g g . + # # # # # / 6 . i + / 6 / 6 / 6 . + # # # # # + ) . ) + # # # # + = . + # # # # # + = . + # # # # # + ) . + # # # # # + = . _ + ( ( ( + _ _ . ) + # # # # + = . ) + # # # # + = . + # # # # # + ~ . / 6 / 6 / 6 / 6 . + # # # # # + = . + # # # # # / 6 . + # # # # # + ~ . ~ + # # # # + = . + # # # # # + ~ . ~ + # # # # + = . + # # # # # + ~ . + # # # # # + ' . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". ' + # + # + = = . ' + 6 + 6 / 6 / . m.# # + # # g g . m.A m.+ m.+ ~ ! . m.# # + # # m.A . m.A m.+ m.A m.A . m.A m.+ m.A m.A . m.# # + # + = = . = + # + # # g g . m.# # + # # g g . m.A m.+ m.A m.A . m.# # + # + = = . = + # + # # g g . m.# # + # + = = . g + Q + Q + g g . m.# # + # + = = . = + # + # # g g . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . 6 / 6 + 6 / 6 / . m.A m.+ m.A m.A . m.A m.+ m.A m.A . m.# # + # # m.A . = + # + # + = = . = + # + # + = = . = + # + # # ) d.. g + Q + Q + g g . g # # + # + = = . g # # + # + = = . m.A m.+ m.A m.A . m.A m.+ m.A m.A . ",
|
||||
". ~ + + % + = = = . ~ + + % + 6 / 6 . A ` + % + + g g . A ` + % + + ' ! . A ` + % + ` e m.. A ` + % + ` e m.. A ` + % + ` e m.. A ` + % + = = = . = = + % + + g g . A ` + % + + g g . A ` + % + ` e m.. A ` + % + = = = . = = + % + + g g . A ` + % + = = = . g + + % + + g g . A ` + % + = = = . = = + % + + g g . A 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . / 6 + % + 6 / 6 . A ` + % + ` e m.. A ` + % + ` e m.. A ` + % + ` e m.. = = + % + = = = . = = + % + = = = . = = + % + G o.p.. g + + % + + g g . g + + % + = = = . g + + % + = = = . A ` + % + ` e m.. A ` + % + ` e m.. ",
|
||||
". + + % % % + = + . + + % % % + 6 + . m.+ % % % + + + . m.+ % % % + ! ~ . m.+ % % % + m.A . m.+ % % % + m.A . m.+ % % % + m.+ . m.+ % % % + = + . = + % % % + + + . m.+ % % % + + + . m.+ % % % + m.+ . m.+ % % % + = + . = + % % % + + + . m.+ % % % + = + . + + % % % + + + . m.+ % % % + = + . = + % % % + + + . m.+ % % % + 6 + . 6 + % % % + 6 / . 6 + % % % + 6 + . 6 + % % % + 6 + . m.+ % % % + m.+ . m.+ % % % + m.A . m.+ % % % + m.+ . = + % % % + = + . = + % % % + = + . = + % % % + q.+.. + + % % % + + + . + + % % % + = + . + + % % % + = + . m.+ % % % + m.+ . m.+ % % % + m.+ . ",
|
||||
". / % % % % % + > . / % % % % % + > . + % % % % % + > . e % % % % % + + . e % % % % % A ` . e % % % % % A ` . e % % % % % + > . + % % % % % + > . + % % % % % + 2.. e % % % % % + > . e % % % % % + > . e % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + 2.. e % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % / 6 . + % % % % % + > . / % % % % % + > . e % % % % % + > . + % % % % % A ` . + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % -.r.. + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . e % % % % % + > . ",
|
||||
". 6 % % + % + > > . 6 % % + % + > > . ~ + % + % + > > . m.% % + % % m.A . m.% % + % % m.A . m.% % + % % m.A . m.% % + % + > > . > + % + % + > > . > + % + % % + 2.. m.% % + % + > > . m.% % + % + > > . m.% % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % % + 2.. m.% % + % + > > . > + % + % + > > . ~ + % + % + > > . > + % + % % 6 / . > + % + % + > > . 6 % % + % + > > . m.% % + % + > > . > + % + % % m.A . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % % 8.] . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . m.% % + % + > > . ",
|
||||
". / 6 + * + > > > . / 6 + * + > > > . ' ~ + * + > > > . A ` + * + ` e m.. A ` + * + ` e m.. A ` + * + ` e m.. A 6 + * + > > > . > > + * + > > > . > > + * + 4.+ 2.. A ` + * + > > > . A 6 + * + > > > . A ` + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + 4.+ 2.. A 6 + * + > > > . > > + * + > > > . ' ~ + * + > > > . > > + * + 6 / 6 . > > + * + > > > . / 6 + * + > > > . A ` + * + > > > . > > + * + ` e m.. > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + s.` d . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . A 6 + * + > > > . ",
|
||||
". 6 + * * * + > + . 6 + * * * + > + . ~ + * * * + > + . m.+ * * * + m.A . m.+ * * * + m.A . m.+ * * * + m.A . m.+ * * * + > + . > + * * * + > + . > + * * * + 4.+ . m.+ * * * + > + . m.+ * * * + > + . m.+ * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + 4.+ . m.+ * * * + > + . > + * * * + > + . ~ + * * * + > + . > + * * * + 6 / . > + * * * + > + . 6 + * * * + > + . m.+ * * * + > + . > + * * * + m.A . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + t.j . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . m.+ * * * + > + . ",
|
||||
". / * * * * * + $ . / * * * * * + $ . + * * * * * + $ . e * * * * * A ` . e * * * * * A ` . e * * * * * A ` . e * * * * * + $ . + * * * * * + $ . + * * * * * 4.+ . e * * * * * + $ . e * * * * * + $ . e * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * 4.+ . e * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * / 6 . + * * * * * + $ . / * * * * * + $ . e * * * * * + $ . + * * * * * A ` . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * C.X . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . e * * * * * + $ . ",
|
||||
". 6 * * * * + $ $ . 6 * * * * + $ $ . m.* * + * + $ $ . m.* * + * * m.A . m.* * * * * m.A . m.* * * * * m.A . m.* * * * + $ $ . $ + * * * + $ $ . $ + * + * * 4.+ . m.* * + * + $ $ . m.* * * * + $ $ . m.* * + * + $ $ . $ + * + * + $ $ . $ + * + * + $ $ . $ + * + * * 4.+ . m.* * * * + $ $ . $ + * * * + $ $ . m.* * + * + $ $ . $ + * * * * 6 / . $ + * * * + $ $ . 6 * * * * + $ $ . m.* * * * + $ $ . $ + * * * * m.A . $ + * + * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . $ + * * * * F.G.. $ + * + * + $ $ . $ + * * * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . m.* * * * + $ $ . ",
|
||||
". / 6 / 6 / $ $ $ . + 6 / 6 / $ $ $ . A ` + # + $ $ $ . A ` + # + ` e m.. A + 0., ).+ e m.. A ` e m.A ` e m.. + ` e m.A $ $ $ . $ $ e m.A $ $ $ . $ $ + # + 4.+ l.. A ` + # + $ $ $ . A ` e m.A $ $ $ . A ` + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ + # + 4.+ l.. A ` e m.A $ $ $ . $ $ e m.A $ $ $ . A ` + # + $ $ $ . $ $ e m.A 6 / 6 . $ $ e m.A $ $ $ . / ` e m.A $ $ $ . A ` e m.A $ $ $ . $ $ e m.A ` e m.. $ $ + # + $ $ $ . $ $ + # + $ $ $ . $ $ 0., ).$ $ $ . $ $ 0., ).z J.H.. $ $ + # + $ $ $ . $ $ 0., ).$ $ $ . $ $ + # + $ $ $ . $ $ 0., ).$ $ $ . A ` e m.A $ $ $ . ",
|
||||
". 6 / 6 / 6 $ $ $ . + / 6 / 6 $ $ $ . m.+ # # # + $ + . m.+ # # # + m.A . + u.v.R -.w.+ A . m.A m.A m.A m.A . + A m.A m.$ $ $ . $ $ m.A m.$ $ $ . $ + # # # + + + . m.+ # # # + $ + . m.A m.A m.$ $ $ . m.+ # # # + $ + . $ + # # # + $ + . $ + # # # + $ + . $ + # # # + + + . m.A m.A m.$ $ $ . $ $ m.A m.$ $ $ . m.+ # # # + $ + . $ $ m.A m.A 6 / . $ $ m.A m.$ $ $ . 6 A m.A m.$ $ $ . m.A m.A m.$ $ $ . $ $ m.A m.A m.A . $ + # # # + $ $ . $ + # # # + $ $ . $ $ v.R -.$ $ $ . $ $ v.R -.w.A 3 . $ + # # # + $ $ . $ $ v.R -.$ $ $ . $ + # # # + $ $ . $ $ v.R -.$ $ $ . m.A m.+ + $ $ $ . ",
|
||||
". / 6 / 6 / 6 / 6 . ~ + / 6 / 6 / 6 . e # # # # # + = . e # # # # # A ` . + c.c x.3 [ + + . e m.A ` e m.A ` . ~ + A ` e m.A ` . e m.A ` e m.A ` . e # # # # # g g . e # # # # # + = . e m.A ` e m.A ` . e # # # # # + = . e # # # # # + = . e # # # # # + = . e # # # # # g g . e m.A ` e m.A ` . e m.A ` e m.A ` . e # # # # # + = . e m.A ` e m.A 6 . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e # # # # # A ` . + # # # # # s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. + # # # # # s M.. L.c.c x.3 [ s M.. + # # # # # s M.. L.c.c x.3 [ s M.. + + + x.3 [ s M.. ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". g + Q + Q + + ' . g + Q + Q + g g . y.z.A.+ v y ) d.. y.z.A.+ v y ) d.. m.# # + # + = = . = + # + # # g g . g + Q + Q + ) d.. y.+ Q + Q + g g . y.# # + # + = = . y.# # + # + = = . = + # + # + + ' . y.# # + # + = = . = + # + # + = = . = + # + # + = = . g # # + # + = = . ' + # + # + = = . = + # + # + = = . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". g + + % + + + ~ . g + + % + + g g . ].! + % + G o.p.. ].! + % + G o.p.. A ` + % + = = = . = = + % + + g g . g + + % + + o.p.. ].+ + % + + g g . ].! + % + = = = . ].! + % + = = = . = = + % + = + ~ . ].! + % + = = = . = = + % + = = = . = = + % + = = = . g + + % + = = = . ~ + + % + = = = . = = + % + = = = . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + + % % % + + + . + + % % % + + + . B.+ % % % + q.+ . B.+ % % % + q.+.. m.+ % % % + = + . = + % % % + + + . + + % % % + + + . + + % % % + + + . B.+ % % % + = + . B.+ % % % + = + . = + % % % + = + . B.+ % % % + = + . = + % % % + = + . = + % % % + = + . + + % % % + = + . + + % % % + = + . = + % % % + = + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + % % % % % + 2.. + % % % % % + > . y % % % % % + > . + % % % % % -.r.. + % % % % % + > . + % % % % % + > . + % % % % % + > . + % % % % % + > . y % % % % % + > . y % % % % % + > . + % % % % % + > . y % % % % % + > . + % % % % % + > . + % % % % % + > . 2.% % % % % + > . + % % % % % + > . + % % % % % + > . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". > + % + % % + 2.. > + % + % + > > . C.% % + % + > > . > + % + % % 8.] . > + % + % + > > . > + % + % + > > . > + % + % + > > . > + % + % + > > . C.% % + % + > > . C.% % + % + > > . > + % + % + > > . C.% % + % + > > . > + % + % + > > . > + % + % + > > . 2.% % + % + > > . > + % + % + > > . > + % + % + > > . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". > > + * + 4.+ 2.. > > + * + > > > . D.,.+ * + > > > . > > + * + s.` d . > > + * + > > > . > > + * + > > > . > > + * + > > > . > > + * + > > > . D.,.+ * + > > > . D.,.+ * + > > > . > > + * + > > > . D.,.+ * + > > > . > > + * + > > > . > > + * + > > > . 2.2.+ * + > > > . > > + * + > > > . > > + * + > > > . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". > + * * * + 4.+ . > + * * * + > + . a.+ * * * + > + . > + * * * + t.j . > + * * * + > + . > + * * * + > + . > + * * * + > + . > + * * * + > + . a.+ * * * + > + . a.+ * * * + > + . > + * * * + > + . a.+ * * * + > + . > + * * * + > + . > + * * * + > + . + + * * * + > + . > + * * * + > + . > + * * * + > + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + * * * * * 4.+ . + * * * * * + $ . E.* * * * * + $ . + * * * * * C.X . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . + * * * * * + $ . E.* * * * * + $ . E.* * * * * + $ . + * * * * * + $ . E.* * * * * + $ . + * * * * * + $ . + * * * * * + $ . n.* * * * * + $ . + * * * * * + $ . + * * * * * + $ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". $ + * * * * 4.+ . $ + * * * + $ $ . < * * * * + $ $ . $ + * * * * F.G.. $ + * * * + $ $ . $ + * * * + $ $ . $ + * * * + $ $ . $ + * * * + $ $ . < * * * * + $ $ . < * * + * + $ $ . $ + * + * + $ $ . < * * * * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . + * * * * + $ $ . $ + * + * + $ $ . $ + * * * + $ $ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". $ $ + 4.4.4.+ H.. $ $ 0., ).$ $ $ . 9.I.0., ).$ $ $ . $ $ 0., ).z J.H.. $ $ 0., ).$ $ $ . $ $ 0., ).$ $ $ . $ $ 0., ).$ $ $ . $ $ 0., ).$ $ $ . + 6 / 6 / $ $ $ . 9.I.+ # + $ $ $ . $ $ + # + $ $ $ . 9.I.0., ).$ $ $ . $ $ + # + $ $ $ . $ $ 0., ).$ $ $ . 9.I.0., ).$ $ $ . $ $ + # + $ $ $ . + $ / 6 / $ $ $ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". $ $ v.+ + + A 3 . $ $ v.R -.$ $ $ . K.u.v.R -.$ $ $ . $ $ v.R -.w.A 3 . $ $ v.R -.$ $ $ . $ $ v.R -.$ $ $ . $ $ v.R -.$ $ $ . $ $ v.R -.$ $ $ . 6 / 6 / 6 $ $ $ . K.+ # # # + $ + . $ + # # # + $ + . K.u.v.R -.$ $ $ . $ + # # # + $ + . $ $ v.R -.$ $ $ . K.u.v.R -.$ $ $ . $ + # # # + $ + . + $ 6 / 6 $ $ $ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. / 6 / 6 / 6 / 6 . L.# # # # # + = . L.# # # # # + = . L.c.c x.3 [ s M.. L.# # # # # + = . L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. + # # # # # + = . i + / 6 / 6 / 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". m.A m.A m.A m.A . m.A m.A m.A 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . ' + m.A m.A m.A . ' + m.A m.A m.A . m.A m.A m.A + ' . m.A m.A m.A m.A . m.A m.A m.A m.+ . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . + A m.A m.A m.A . ' + m.A m.A + ' . m.A m.A m.A + ' . m.A m.A m.A + ' . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . m.A m.A m.A m./ . m.A m.A m.A m./ . 6 / 6 / 6 / 6 / . y.z.A.N.+ + + + . ' + m.A m.A m.A . + A m.A m.A m.A . + + + + + + + + . y.z.A.N.+ + + + . + + + + + + + + . m.A m.A m.A m.A . ' + m.A m.A m.A . m.A m.+ v y ) d.. m.A m.A m.A m.A . ",
|
||||
". A ` e m.A ` e m.. A ` e m.A ` / 6 . / 6 / 6 / 6 / 6 . A 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . ~ + e m.A ` e m.. ~ + e m.A ` e m.. A ` e m.A ` + ~ . A ` e m.A ` e m.. A ` e m.A ` e + . A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. + ` e m.A ` e m.. ~ + e m.A ` + ~ . A ` e m.A ` + ~ . A ` e m.A ` + ~ . / 6 / 6 / 6 / 6 . A 6 / 6 / 6 / 6 . A ` e m.A ` e 6 . A ` e m.A ` / 6 . / 6 / 6 / 6 / 6 . ].! + + A ` e m.. ~ + e m.A ` e m.. + ` e m.A ` e m.. A ` e m.A ` e m.. ].! + + A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. ~ + e m.A ` e m.. A ` e m.+ G o.p.. A ` e m.A ` e m.. ",
|
||||
". m.A m.A m.A m.A . m.A m.A m.A 6 / . 6 / 6 / 6 / 6 / . m.A m./ 6 / 6 / . 6 / 6 / 6 / 6 / . + A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.+ . m.A m.A m.A m.A . m.A m.A m.A m.+ . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . + A m.A m.A m.A . + A m.A m.A m.+ . m.A m.A m.A m.+ . m.A m.A m.A m.+ . 6 / 6 / 6 / 6 / . m.A m./ 6 / 6 / . m.A m.A m.A 6 / . m.A m.A m.A 6 / . 6 / 6 / 6 / 6 / . B.+ m.A m.A m.A . + A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.A . B.+ m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.+ q.+.. m.A m.A m.A m.A . ",
|
||||
". e m.A ` e m.A ` . e m.A ` e m./ 6 . e 6 / 6 / 6 / 6 . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A + . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . + m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m./ 6 . e m.A ` e m./ 6 . e m.A ` / 6 / 6 . y + A ` e m.A ` . + m.A ` e m.A ` . + m.A ` e m.A ` . e m.A ` e m.A ` . y + A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . + m.A ` e m.A ` . e m.A ` e + -.r.. e m.A ` e m.A ` . ",
|
||||
". m.A m.A m.A m.A . m.A m.A m.A 6 / . m.A m./ 6 / 6 / . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.+ . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A 6 / . m.A m.A m./ 6 / . m.A m.A m./ 6 / . + A m.A m.A m.A . + A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A + ] . m.A m.A m.A m.A . ",
|
||||
". A ` e m.A ` e m.. A ` e m.A ` / 6 . A ` e m./ 6 / 6 . A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e + . A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. + ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` / 6 . A ` e m.A 6 / 6 . A ` e m.A 6 / 6 . + ` e m.A ` e m.. + ` e m.A ` e m.. + ` e m.A ` e m.. A ` e m.A ` e m.. + ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. + ` e m.A ` e m.. A ` e m.A ` e + . A ` e m.A ` e m.. ",
|
||||
". m.A m.A m.A m.A . m.A m.A m.A 6 / . m.A m.A m./ 6 / . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.+ . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A 6 / . m.A m.A 6 / 6 / . m.A m.A 6 / 6 / . + A m.A m.A m.A . + A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.+ . m.A m.A m.A m.+ . ",
|
||||
". e m.A ` e m.A ` . e m.A ` e m./ 6 . e m.A ` e 6 / 6 . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A + . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . + m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m./ 6 . e m.A 6 / 6 / 6 . e m.A 6 / 6 / 6 . + m.A ` e m.A ` . + m.A ` e m.A ` . + m.A ` e m.A ` . e m.A ` e m.A ` . + m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . + m.A ` e m.A ` . + m.A ` e m.A ` . + m.A ` e m.+ X . ",
|
||||
". m.A m.A m.A m.A . m.A m.A m.A 6 / . m.A m.A m.A 6 / . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A + G.. m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . < + m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A 6 / . m./ 6 / 6 / 6 / . m./ 6 / 6 / 6 / . + A m.A m.A m.A . + A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.A . < + m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . < + m.A m.A m.A . < + m.A m.A m.A . < + m.A m.A + G.. ",
|
||||
". A ` e m.A ` e m.. A ` e m.A ` / 6 . A ` e m.A ` / 6 . A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` + H.. + ` e m.A ` e m.. A ` e m.A ` e + . A ` e m.A ` e m.. 9.+ e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e + . A ` e m.A ` e m.. A ` e m.A ` e + . A ` e m.A ` e + . A ` e m.A ` / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . + ` e m.A ` e m.. + ` e m.A ` e m.. + ` e m.A ` e m.. A ` e m.A ` e m.. 9.+ e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e + . 9.+ e m.A ` e m.. 9.+ e m.A ` e m.. 9.+ e m.A + J.H.. ",
|
||||
". m.A m.A m.A m.A . m.A m.A m.A m./ . m.A m.A m.A 6 / . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A + + A 3 . + A m.A m.A m.A . m.A m.A m.A m.+ . m.A m.A m.A m.A . K.u.+ + m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.+ . m.A m.A m.A m.A . m.A m.A m.A m.+ . m.A m.A m.A m.+ . m.A m.A m.A 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . + A m.A m.A m.A . + A m.A m.A m.A . + A m.A m.A m.A . m.A m.A m.A m.A . K.u.+ + m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.+ . K.u.+ + m.A m.A . K.u.+ A m.A m.A . K.u.+ + + A A 3 . ",
|
||||
". e m.A ` e m.A ` . e m.A ` e m.A 6 . e m.A ` e m.A 6 . e m.A ` e m.A ` . e m.A ` e m.A ` . + + + + + + + + . e m.A ` e m.A ` . e m.A ` e m.A ` . e m.A ` e m.A ` . + + + + 3 [ s M.. ~ + A ` e m.A ` . e m.A ` e m.+ ~ . + + + + + + + + . L.c.c x.+ + + + . e m.A ` e m.A ` . e m.A ` e m.+ ~ . + + + + + + + + . e m.A ` e m.+ ~ . e m.A ` e m.+ ~ . e m.A ` e m./ 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . + m.A ` e m.A ` . + m.A ` e m.A ` . + m.A ` e m.A ` . + + + + + + + + . L.c.c x.+ + + + . e m.A ` e m.A ` . + + + + + + + ~ . L.c.c x.+ + + + . L.c.c + e m.A ` . L.c.c x.3 [ s M.. ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". m.A m.A m.A m.A . y.z.A.N.+ + + + . y.+ + + v y ) d.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r k r k r k r k . r k r k r k r k . 6 / 6 / 6 / 6 / . r k r k r k r k . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . i + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + + i . _ + ( ( ( + _ _ . 6 / 6 / 6 / 6 / . 6 + ( ( ( + _ _ . _ + ( ( ( + 6 / . _ + ( ( ( + _ _ . i + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + + i . 6 / 6 / 6 / 6 / . i + 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . ",
|
||||
". A ` e m.A ` e m.. ].! Y + A ` e m.. + ` e m.+ G o.p.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k r k r k r k r . k r k r k r k r . / 6 / 6 / 6 / 6 . k r k r k r k r . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . i + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + + i . _ + ( ( ( + _ _ . / 6 / 6 / 6 / 6 . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . _ + ( ( ( + _ _ . i + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + + i . / 6 / 6 / 6 / 6 . i + / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . ",
|
||||
". m.A m.A m.A m.A . B.( + A m.A m.A . + A m.A m.+ q.+.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r k r k r k r k . 6 k r k r k r k . 6 / 6 / 6 / 6 k . r k r k r k r / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + 6 / 6 / 6 + . 6 / + + + K + + . + + + + + K + / . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + 6 / 6 / 6 + . + + 6 / 6 / 6 + . + + 6 / 6 / 6 + . ",
|
||||
". e m.A ` e m.A ` . y F + ` e m.A ` . + m.A ` e + -.r.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k r k r k r k r . / 6 k r k r k r . / 6 / 6 / 6 k r . k r k r k r / 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + 6 / 6 + / . / 6 + K K K + / . / / + K K K + 6 . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + 6 / 6 + / . / / + 6 / 6 + / . / / + 6 / 6 + / . ",
|
||||
". m.A m.A m.A m.A . C.+ m.A m.A m.A . + A m.A m.A + ] . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r k r k r k r k . 6 / r k r k r k . 6 / 6 / 6 / r k . r k r k r k 6 / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . 6 / 6 + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . ",
|
||||
". A ` e m.A ` e m.. + ` e m.A ` e m.. + ` e m.A ` + d . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k r k r k r k r . / 6 / r k r k r . / 6 / 6 / r k r . k r k r k 6 / 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / 6 + { { { + / . / / + { { { + 6 . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . ",
|
||||
". m.A m.A m.A m.A . + A m.A m.A m.A . + A m.A m.A + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r k r k r k r k . 6 / 6 / r k r k . 6 / 6 / r k r k . r k r k 6 / 6 / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . 6 + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . ",
|
||||
". e m.A ` e m.A ` . e m.A ` e m.A ` . + m.A ` e m.+ ` . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k r k r k r k r . / 6 / 6 k r k r . / 6 / 6 k r k r . k r k r / 6 / 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . / + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . ",
|
||||
". m.A m.A m.A m.A . m.A m.A m.A m.A . < + m.A m.+ m.A . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r k r k r k r k . 6 / 6 / 6 k r k . 6 / 6 k r k r k . r k r / 6 / 6 / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . 6 + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . ",
|
||||
". + ` e m.A ` e + . A ` e m.A ` e m.. 9.+ e m.A + e m.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k r k r k r k r . / 6 / 6 / 6 k r . / 6 k r k r k r . k r / 6 / 6 / 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . K K + { { { + K . K K + { { { + + . K K + { { { + K . + K + { { { + K . K K + { { { + K . / 6 + { { { + 6 . K K + { { { + K . / 6 + { { { + K . K K + { { { + 6 . / 6 + { { { + + . / 6 + { { { + 6 . + 6 + { { { + 6 . / 6 + { { { + 6 . K K + { { { + + . K K + { { { + K . + K + { { { + K . ",
|
||||
". + A m.A m.A m.+ . m.A m.A m.A m.A . K.u.+ + + A m.A . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . r k r k r k r k . 6 / 6 / 6 / r k . 6 / r k r k r k . r k 6 / 6 / 6 / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + K + + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . 6 / 6 + + + 6 / . + K + + + + + + . 6 / + + + + + + . + K + + + + 6 / . 6 / 6 + + + 6 + . 6 / 6 + + + 6 / . + / 6 + + + 6 / . 6 / 6 + + + 6 / . + K + + + + + + . + K + + + + + + . + K + + + + + + . ",
|
||||
". ~ + A ` e m.+ ~ . e m.A ` + + + + . L.c.c + e m.A ` . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . k r k r k r k r . / 6 / 6 / 6 / r . / r k r k r k r . k 6 / 6 / 6 / 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . _ + ( ( ( + _ _ . _ + ( ( ( + + i . _ + ( ( ( + _ _ . i + ( ( ( + _ _ . _ + ( ( ( + _ _ . / 6 / 6 / 6 / 6 . _ + ( ( ( + _ _ . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . / 6 / 6 / 6 + i . / 6 / 6 / 6 / 6 . i + / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . _ + ( ( ( + + i . _ + ( ( ( + _ _ . i + ( ( ( + _ _ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". 6 / 6 / 6 / + i . _ + ( ( ( + _ _ . _ + ( ( ( + + i . 6 + ( ( ( + _ _ . _ + ( ( ( + 6 / . 6 + ( ( ( + _ _ . _ + ( ( ( + 6 / . 6 + ( ( ( + 6 / . _ + ( ( ( + _ _ . 6 + ( ( ( + _ _ . i + ( ( ( + _ _ . 6 + ( ( ( + _ _ . 6 + ( ( ( + + i . _ + ( ( ( + 6 / . i + ( ( ( + 6 / . _ + ( ( ( + 6 / . _ + ( ( ( + + i . _ + ( ( ( + 6 / . ' + ( ( ( + _ _ . ' + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + + ' . ' + ( ( ( + _ _ . 6 / 6 / 6 / + ' . 6 + ( ( ( + _ _ . _ + ( ( ( + 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 + ( ( ( + 6 / . 6 / 6 / 6 / 6 / . 6 + ( ( ( + _ _ . ",
|
||||
". / 6 / 6 / 6 + i . _ + ( ( ( + _ _ . _ + ( ( ( + + i . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . / + ( ( ( + / 6 . _ + ( ( ( + _ _ . / + ( ( ( + _ _ . i + ( ( ( + _ _ . / + ( ( ( + _ _ . / + ( ( ( + + i . _ + ( ( ( + / 6 . i + ( ( ( + / 6 . _ + ( ( ( + / 6 . _ + ( ( ( + + i . _ + ( ( ( + / 6 . ~ + ( ( ( + _ _ . ~ + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + + ~ . ~ + ( ( ( + _ _ . / 6 / 6 / 6 + ~ . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / + ( ( ( + / 6 . / 6 / 6 / 6 / 6 . / + ( ( ( + _ _ . ",
|
||||
". + + 6 / 6 / 6 + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . 6 / + + + K + + . + / + + + K + + . 6 / + + + K + + . 6 / + + + K + + . + + + + + K + / . + + + + + K + / . + + + + + K + / . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + + + + K + + . + + 6 / 6 / 6 + . + + + + + K + + . + + + + + K + + . + + 6 / 6 / 6 + . + + 6 / 6 / 6 + . 6 / + + + K + / . + + 6 / 6 / 6 + . 6 / + + + K + + . ",
|
||||
". / / + 6 / 6 + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / 6 + K K K + / . / 6 + K K K + / . / 6 + K K K + / . / 6 + K K K + / . / / + K K K + 6 . / / + K K K + 6 . / / + K K K + 6 . / / + K K K + 6 . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + K K K + / . / / + 6 / 6 + / . / / + K K K + / . / / + K K K + / . / / + 6 / 6 + / . / / + 6 / 6 + / . / 6 + K K K + 6 . / / + 6 / 6 + / . / 6 + K K K + / . ",
|
||||
". / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . 6 / 6 + + + + / . 6 / 6 + + + + / . 6 / 6 + + + + / . 6 / 6 + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . / / + + + + + / . 6 / 6 + + + + / . / / + + + + + / . 6 / 6 + + + + / . ",
|
||||
". / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / 6 + { { { + / . / 6 + { { { + / . / 6 + { { { + / . / 6 + { { { + / . / / + { { { + 6 . / / + { { { + 6 . / / + { { { + 6 . / / + { { { + 6 . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / / + { { { + / . / 6 + { { { + 6 . / / + { { { + / . / 6 + { { { + / . ",
|
||||
". + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . 6 + { { { { { + . + + { { { { { + . 6 + { { { { { + . ",
|
||||
". K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . / + { { { { { + . / + { { { { { + . / + { { { { { + . / + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . / + { { { { { + . K + { { { { { + . / + { { { { { + . ",
|
||||
". + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . 6 + { { { { { + . + + { { { { { + . 6 + { { { { { + . ",
|
||||
". K K + { { { + K . + K + { { { + + . K K + { { { + + . K K + { { { + K . K K + { { { + K . / 6 + { { { + K . K K + { { { + 6 . K K + { { { + K . / 6 + { { { + 6 . / 6 + { { { + + . / 6 + { { { + K . + 6 + { { { + K . / 6 + { { { + K . K K + { { { + + . K K + { { { + 6 . + K + { { { + 6 . K K + { { { + 6 . / 6 + { { { + K . K K + { { { + K . + K + { { { + K . K K + { { { + + . + K + { { { + K . K K + { { { + K . K K + { { { + K . K K + { { { + K . / 6 + { { { + 6 . / 6 + { { { + 6 . / 6 + { { { + K . K K + { { { + 6 . / 6 + { { { + 6 . / 6 + { { { + 6 . / 6 + { { { + 6 . ",
|
||||
". + K + + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . 6 / + + + + + + . + K + + + + 6 / . + K + + + + + + . 6 / + + + + 6 / . 6 / + + + + + + . 6 / + + + + + + . + / + + + + + + . 6 / + + + + + + . + K + + + + 6 + . + K + + + + 6 / . + K + + + + 6 / . + K + + + + 6 / . 6 / + + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . 6 / 6 + + + 6 / . 6 / 6 + + + 6 / . 6 / + + + + + + . + K + + + + 6 / . 6 / + + + + 6 / . 6 / 6 + + + 6 / . 6 / 6 + + + 6 / . ",
|
||||
". _ + ( ( ( + _ _ . i + ( ( ( + + i . _ + ( ( ( + + i . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . _ + ( ( ( + _ _ . / + ( ( ( + / 6 . / + ( ( ( + + i . / + ( ( ( + _ _ . i + ( ( ( + _ _ . / + ( ( ( + _ _ . _ + ( ( ( + + i . _ + ( ( ( + / 6 . i + ( ( ( + / 6 . _ + ( ( ( + / 6 . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . ~ + ( ( ( + _ _ . _ + ( ( ( + + ~ . ~ + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . / + ( ( ( + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". _ + ( ( ( + 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 + ( ( ( + 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . i + 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / + i . i + 6 / 6 / 6 / . 6 / 6 / 6 / + i . 6 / 6 / 6 / 6 / . i + 6 / 6 / + i . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / + ' . ' + 6 / 6 / 6 / . 6 / 6 / 6 / + ' . ' + 6 / 6 / 6 / . @ @ @ @ @ @ @ @ . ",
|
||||
". _ + ( ( ( + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / + ( ( ( + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . i + / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 + i . i + / 6 / 6 / 6 . / 6 / 6 / 6 + i . / 6 / 6 / 6 / 6 . i + / 6 / 6 + i . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 + ~ . ~ + / 6 / 6 / 6 . / 6 / 6 / 6 + ~ . ~ + / 6 / 6 / 6 . @ @ @ @ @ @ @ @ . ",
|
||||
". + + + + + K + / . 6 / 6 / 6 / 6 + . + + 6 / 6 / 6 / . 6 / + + + K + / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . + + 6 / 6 / 6 / . + + + + + K + + . + + + + + K + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . + / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . + / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . 6 / 6 / 6 / 6 / . + / 6 / 6 / 6 + . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . + / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . + / 6 / 6 / 6 / . @ @ @ @ @ @ @ @ . ",
|
||||
". / / + K K K + 6 . / 6 / 6 / 6 + / . / / + 6 / 6 / 6 . / 6 + K K K + 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 + / . / / + 6 / 6 / 6 . / / + K K K + / . / / + K K K + / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . @ @ @ @ @ @ @ @ . ",
|
||||
". / / + + + + + / . 6 / 6 + + + + / . / / + + + + 6 / . 6 / 6 + + + + / . 6 / 6 + + + 6 / . 6 / 6 + + + + / . / / + + + + 6 / . / / + + + + + / . / / + + + + + / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . @ @ @ @ @ @ @ @ . ",
|
||||
". / / + { { { + 6 . / 6 + { { { + / . / / + { { { + 6 . / 6 + { { { + 6 . / 6 + { { { + 6 . / 6 + { { { + / . / / + { { { + 6 . / / + { { { + / . / / + { { { + / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . @ @ @ @ @ @ @ @ . ",
|
||||
". + + { { { { { + . 6 + { { { { { + . + + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . @ @ @ @ @ @ @ @ . ",
|
||||
". K + { { { { { + . / + { { { { { + . K + { { { { { + . / + { { { { { + . / + { { { { { + . / + { { { { { + . K + { { { { { + . K + { { { { { + . K + { { { { { + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . @ @ @ @ @ @ @ @ . ",
|
||||
". + + { { { { { + . 6 + { { { { { + . + + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . 6 + { { { { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . @ @ @ @ @ @ @ @ . ",
|
||||
". / 6 + { { { + 6 . / 6 + { { { + K . K K + { { { + 6 . / 6 + { { { + 6 . / 6 + { { { + 6 . / 6 + { { { + 6 . / 6 + { { { + 6 . / 6 + { { { + K . K K + { { { + 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / + . / 6 / 6 / 6 / 6 . + 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . + 6 / 6 / 6 / 6 . / 6 / 6 / 6 / + . + 6 / 6 / 6 / + . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / + . + 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / + . + 6 / 6 / 6 / 6 . @ @ @ @ @ @ @ @ . ",
|
||||
". 6 / 6 + + + 6 / . 6 / + + + + + + . + K + + + + 6 / . 6 / 6 + + + 6 / . 6 / + + + + 6 / . 6 / 6 + + + 6 / . 6 / 6 + + + 6 / . 6 / + + + + + + . + K + + + + 6 / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . 6 / 6 / 6 / 6 / . + / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . + / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . + / 6 / 6 / 6 + . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . + / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . + / 6 / 6 / 6 / . @ @ @ @ @ @ @ @ . ",
|
||||
". / 6 / 6 / 6 / 6 . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . / 6 / 6 / 6 / 6 . / + ( ( ( + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 + i . / 6 / 6 / 6 / 6 . i + / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . i + / 6 / 6 / 6 . / 6 / 6 / 6 + i . i + / 6 / 6 + i . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 + ~ . ~ + / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 + ~ . ~ + / 6 / 6 / 6 . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". 6 / 6 / 6 / 6 / . 6 / + ' ! ' + / . ! ~ + / 6 / 6 / . 6 / 6 / 6 + ~ ! . 6 / 6 / 6 + ~ ! . ! ~ + / 6 / 6 / . ! ~ + / 6 / + i . 6 / 6 / 6 / 6 / . 6 / 6 / 6 + ~ ! . ! ~ + / 6 / 6 / . 6 / 6 / 6 + ~ ! . 6 / + ' ! ' + / . g + + ' ! ' + / . ! ~ + Q Q + g g . ! ~ + Q Q + g g . g + + ' ! ' + g . g + Q Q Q + ~ ! . g + + ' ! ' + g . ! ~ + Q Q + g g . = + # + # + ~ ! . = + # + # + = = . ! ~ + + # + = = . ! ~ + + # + = = . ! ~ + + # + = = . = + # + # + ~ ! . = + # + # + ~ ! . 6 # # + # + = = . m.A m.A m.+ ~ ! . ! ~ + A m.A m.A . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . ",
|
||||
". / 6 / 6 / 6 / 6 . / 6 + ' ! ' + 6 . ! ' + 6 / 6 / 6 . / 6 / 6 / + ! ! . / 6 / 6 / + ' ! . ! ' + 6 / 6 / 6 . ! ' + 6 / 6 + i . / 6 / 6 / 6 / 6 . / 6 / 6 / + ' ! . ! ' + 6 / 6 / 6 . / 6 / 6 / + ' ! . / 6 + ' ! ' + 6 . g + + ' ! ' + 6 . ! ' + Q Q + g g . ! ' + Q Q + g g . g + + ' ! ' + g . g + Q Q Q + ' ! . g + + ' ! ' + g . ! ' + Q Q + g g . = = + % + + ' ! . = = + % + = = = . ! ' + % + = = = . ! ' + % + = = = . ! ' + % + = = = . = = + % + + ' ! . = = + % + + ' ! . / 6 + % + = = = . A ` e m.A + ' ! . ! ' + m.A ` e m.. A ` e m.A ` e m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. ",
|
||||
". 6 / 6 / 6 / 6 / . 6 / + ' ! ' + / . ~ ! ~ + 6 / 6 / . 6 / 6 / + ~ ! ~ . 6 / 6 / + ~ ! ~ . ~ ! ~ + 6 / 6 / . ~ ! ~ + 6 / 6 + . 6 / 6 / 6 / 6 / . 6 / 6 / + ~ ! ~ . ~ ! ~ + 6 / 6 / . 6 / 6 / + ~ ! ~ . 6 / + ' ! ' + / . + + + ' ! ' + + . ~ ! ~ + + l.+ + . ~ ! ~ + + l.+ + . + + + ' ! ' + + . + + + + + ~ ! ~ . + + + ' ! ' + + . ~ ! ~ + + l.+ + . = + % % + ~ ! ~ . = + ~ + % + = + . ~ ! ~ + % + = + . ~ ! ~ + % + = + . ~ ! ~ + % + = + . = + % % + ~ ! ~ . = + % % + ~ ! ~ . 6 + % % % + = + . m.A m.A + ~ ! ~ . ~ ! ~ + m.A m.A . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . ",
|
||||
". + + + + / 6 / 6 . / 6 + ' ! ' + 6 . + ' ! ~ + 6 / 6 . / 6 / + ~ ! ! + . + + + + ~ ! ! + . + ' ! ~ + 6 / 6 . + ' ! ~ + 6 / 6 . + + + + + + + + . / 6 / + ~ ! ' + . + ' ! ~ + 6 / 6 . / 6 / + ~ ! ' + . / 6 + ' ! ' + 6 . 2.2.+ ' ! ' + 2.. + ' ! ~ + l.+ 2.. + ' ! ~ + l.+ 2.. 2.2.+ ' ! ' + 2.. 2.2.+ + ~ ! ' + . 2.2.+ ' ! ' + 2.. + ' ! ~ + l.+ 2.. + % % + ~ ! ' + . + ~ ! ~ + % + > . + ' ! ~ + % + > . + ' ! ~ + % + > . + ' ! ~ + % + > . + % % + ~ ! ' + . + + + + ~ ! ' + . / % % % + + + + . e m.A + ~ ! ' + . + ' ! ~ + m.A ` . + + + + + + + + . e m.+ ' ! ' + ` . e m.+ ' ! ' + ` . ",
|
||||
". ' ' ' ~ + / 6 / . 6 / + ' ! ' + / . + ~ ! ' + / 6 / . 6 / 6 + ! ! ~ + . ' ' ' ' ! ! ~ + . + ~ ! ' + / 6 / . + ~ ! ' + / 6 / . ' ' ' ' ' ' ' ' . 6 / 6 + ' ! ~ + . + ~ ! ' + / 6 / . 6 / 6 + ' ! ~ + . 6 / + ' ! ' + / . 2.2.+ ' ! ' + 2.. + ~ ! ' + + + 2.. + ~ ! ' + + + 2.. 2.2.+ ' ! ' + 2.. 2.2.+ + ' ! ~ + . 2.2.+ ' ! ' + 2.. + ~ ! ' + + + 2.. > + % + ' ! ~ + . + ~ ! ' + + > > . + ~ ! ' + + > > . + ~ ! ' + + > > . + ~ ! ' + + > > . > + % + ' ! ~ + . ' ' ' ' ! ' ~ + . 6 % % + ~ ' ' ' . m.A m.+ ' ! ~ + . + ~ ! ' + A m.A . ' ' ' ' ' ' ' ' . m.A + ' ! ' + A . m.A + ' ! ' + A . ",
|
||||
". ! ! ! ' ~ + / 6 . / 6 + ' ! ' + 6 . / + ' ! ~ + / 6 . / 6 + ~ ! ! + 6 . ! ! ! ! ! ~ + 6 . / + ~ ! ~ + / 6 . / + ' ! ~ + / 6 . ! ! ! ! ! ! ! ! . / 6 + ~ ! ~ + 6 . / + ~ ! ~ + / 6 . / 6 + ~ ! ' + 6 . / 6 + ' ! ~ + 6 . 2.2.+ ' ! ' + 2.. / + ~ ! ~ + + 2.. 2.+ ~ ! ~ + + 2.. 2.2.+ ' ! ' + 2.. 2.2.+ ~ ! ' + 2.. 2.2.+ ' ! ~ + 2.. 2.+ ~ ! ~ + + 2.. > > + ~ ! ' + > . > + ~ ! ~ + > > . > + ~ ! ~ + > > . > + ' ! ~ + > > . > + ~ ! ~ + > > . > > + ~ ! ~ + > . ! ! ! ! ~ + + > . / 6 + ~ ! ! ! ! . A ` + ~ ! ~ + m.. A + ~ ! ~ + e m.. ! ! ! ! ! ! ! ! . A ` + ' ! ' + m.. A ` + ' ! ' + m.. ",
|
||||
". ' ' ! ! ' ~ + / . 6 / + ' ! ' + / . 6 + ' ! ' + 6 / . 6 / + ! ! ! + / . ' ' ' ' ~ + 6 / . 6 / + ' ! ~ + / . 6 + ' ! ' + 6 / . ' ' ' ' ' ' ' ' . 6 + ~ ! ' + 6 / . 6 / + ' ! ~ + / . 6 / + ' ! ' + / . 6 + ~ ! ' + 6 / . + + + ' ! ' + + . + + + ' ! ~ + + . + + + ' ! ~ + + . + + + ' ! ' + + . + + + ' ! ' + + . + + ~ ! ' + 4.+ . + + + ' ! ~ + + . > + + ' ! ' + + . > + + ' ! ~ + + . > + + ' ! ~ + + . > + ' ! ' + > + . > + + ' ! ~ + + . > + ~ ! ' + > + . ' ' ' ~ + + > + . 6 + ~ ! ! ' ' ' . m.+ ~ ! ' + m.A . m.A + ' ! ~ + A . ' ' ' ' ' ' ' ' . m.A + ' ! ' + A . m.A + ' ! ' + A . ",
|
||||
". + + ~ ! ! ' + 6 . / 6 + ~ ! ' + 6 . / + ' ! ~ + / 6 . / 6 + ~ ! ! + 6 . + + + + + 6 / 6 . / 6 + ' ! ' + 6 . / + ' ! ~ + / 6 . + + + + + + + + . / + ' ! ~ + / 6 . / 6 + ~ ! ' + 6 . / 6 + ' ! ' + 6 . / + ' ! ~ + / 6 . n.+ + ~ ! ' + + . n.+ + ~ ! ' + + . n.+ + ' ! ' + + . n.+ + ~ ! ' + + . n.+ + ' ! ' + + . n.+ ' ! ~ + 4.+ . n.+ + ' ! ' + + . + * + ~ ! ' + $ . + * + ~ ! ' + $ . + * + ~ ! ' + $ . + + ' ! ~ + + $ . + * + ~ ! ' + $ . + + ' ! ~ + + $ . + + + + * * + $ . / + ' ! ~ + + + . e + ' ! ~ + A ` . e m.+ ~ ! ' + m.. + + + + + + + + . e m.+ ' ! ' + ` . e m.+ ' ! ' + ` . ",
|
||||
". 6 / + ' ! ' + / . 6 / 6 + ~ ! ~ + . + ~ ! ~ + / 6 / . 6 / 6 + ~ ! ~ + . 6 / 6 / 6 / 6 / . 6 / + ' ! ' + / . + ~ ! ~ + / 6 / . 6 / 6 / 6 / 6 / . + ~ ! ~ + / 6 / . 6 / 6 + ~ ! ~ + . 6 / + ' ! ' + / . + ~ ! ~ + / 6 / . + + 4.+ ~ ! ~ + . + + 4.+ ~ ! ~ + . + + + ' ! ' + + . + + 4.+ ~ ! ~ + . + + + ' ! ' + + . + ~ ! ~ + 4.4.+ . + + + ' ! ' + + . $ + * + ~ ! ~ + . $ + * + ~ ! ~ + . $ + * + ~ ! ~ + . + ~ ! ~ + + $ $ . $ + * + ~ ! ~ + . + ~ ! ~ + + $ $ . $ + * + * + $ $ . + ~ ! ~ + + $ $ . + ~ ! ~ + A m.A . m.A m.+ ~ ! ~ + . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . ",
|
||||
". / 6 + ' ! ' + 6 . / 6 / 6 + ' ! ~ . ~ ! ' + / 6 / 6 . / 6 / 6 + ! ! ~ . / 6 / 6 / 6 / 6 . / 6 + ' ! ' + 6 . ~ ! ' + / 6 / 6 . / 6 / 6 / 6 / 6 . ~ ! ' + / 6 / 6 . / 6 / 6 + ' ! ~ . / 6 + ' ! ' + 6 . ~ ! ' + / 6 / 6 . / 6 + 4.+ ' ! ~ . l.l.+ 4.+ ' ! ~ . l.l.+ ' ! ' + l.. l.l.+ 4.+ ' ! ~ . l.l.+ ' ! ' + l.. ~ ! ' + 4.4.+ l.. 9.I.0.' ! ' J.H.. $ $ + # + ' ! ~ . $ $ + # + ' ! ~ . $ $ / 6 + ' ! ~ . ~ ! ' + + $ $ $ . $ $ + # + ' ! ~ . ~ ! ' + + $ $ $ . $ $ + # + $ $ $ . ~ ! ' + + $ $ $ . ~ ! ' + A ` e m.. A ` e m.+ ' ! ~ . A ` e m.A ` e m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. ",
|
||||
". 6 / + ' ! ' + / . 6 / 6 / + ~ ! ' . ' ! ~ + 6 / 6 / . 6 / 6 / + ~ ! ! . 6 / 6 / 6 / 6 / . 6 / + ' ! ' + / . ' ! ~ + 6 / 6 / . 6 / 6 / 6 / 6 / . ' ! ~ + 6 / 6 / . 6 / 6 / + ~ ! ' . 6 / + ' ! ' + / . ' ! ~ + 6 / 6 / . 6 / + + + ~ ! ' . + l.+ + + ~ ! ' . + l.+ ' ! ' + + . + l.+ + + ~ ! ' . + l.+ ' ! ' + + . ' ! ~ + + + + + . K.u.v.R -.w.A 3 . $ + # # + ~ ! ' . $ + # # + ~ ! ' . $ $ 6 / + ~ ! ' . ' ! ~ + # + $ + . $ + # # + ~ ! ' . ' ! ~ + # + $ + . $ + # # # + $ + . ' ! ~ + # + $ + . ' ! ~ + m.A m.A . m.A m.A + ~ ! ' . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . ",
|
||||
". / 6 + ' ! ' + 6 . / 6 / 6 / + ~ ! . ! ~ + 6 / 6 / 6 . / 6 / 6 / + ~ ! . / 6 / 6 / 6 / 6 . / 6 + ' ! ' + 6 . ! ~ + 6 / 6 / 6 . / 6 / 6 / 6 / 6 . ! ~ + 6 / 6 / 6 . / 6 / 6 / + ~ ! . / 6 + ' ! ' + 6 . ! ~ + 6 / 6 / 6 . / + Q Q Q + ~ ! . g + Q Q Q + ~ ! . g + + ' ! ' + g . g + Q Q Q + ~ ! . g + + ' ! ' + g . ! ~ + Q Q + g g . L.c.c x.3 [ s M.. + # # # # + ~ ! . + # # # # + ~ ! . / 6 / 6 / + ~ ! . ! ~ + # # # + = . + # # # # + ~ ! . ! ~ + # # # + = . + # # # # # + = . ! ~ + # # # + = . ! ~ + ` e m.A ` . e m.A ` e + ~ ! . e m.A ` e m.A ` . + + ~ ! ! ! ~ + . e m.+ ' ! ' + ` . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". ! ~ + A m.A m.A . ! ~ + A m.+ ~ ! . ! ~ + A m.A m.+ . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . ! ~ + A m.A m.A . m.A m.A m.+ ~ ! . 6 / + ' ! ' + A . + A m.A m.+ ~ ! . m.A m.A m.+ ~ ! . ! ~ + A m.A m.A . ! ! ! ! ! ' + A . m.A m.A m.+ ~ ! . ' + m.A m.A m.A . ! ~ + A m.A m.A . m.A + ' ! ! ! ! . ! ~ + A m.A m.A . m.A m.A m.+ ~ ! . ! ~ + A m.A m.A . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . ! ~ + A m.A m.A . m.A m.A m.+ ~ ! . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A m.A m.A m.A . m.A m.A m.+ ' ! . ! ! ! ! ! ! ! ! . ",
|
||||
". ! ' + m.A ` e m.. ! ' + m.A + ' ! . ! ' + m.A ` e + . A ` e m.A ` e m.. A ` e m.A ` e m.. A ` e m.A ` e m.. ! ' + m.A ` e m.. A ` e m.A + ' ! . / 6 + ' ! ' + m.. + ` e m.A + ' ! . A ` e m.A + ' ! . ! ' + m.A ` e m.. ! ! ! ! ! ' + m.. A ` e m.A + ' ! . ~ + e m.A ` e m.. ! ' + m.A ` e m.. A ` + ' ! ! ! ! . ! ' + m.A ` e m.. A ` e m.A + ' ! . ! ' + m.A ` e m.. A ` e m.A ` e m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. ! ' + m.A ` e m.. A ` e m.A + ' ! . A ` e m.A ` e m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. A ` e m.A ` e m.. A ` e m.A + ' ! . ! ! ! ! ! ! ! ! . ",
|
||||
". ~ ! ~ + m.A m.A . ~ ! ~ + + ~ ! ~ . ~ ! ~ + m.A m.+ . m.A m.A m.A m.A . m.A m.A m.A m.A . m.A m.A m.A m.A . ~ ! ~ + m.A m.A . m.A m.A + ~ ! ~ . 6 / + ' ! ' + A . + A m.A + ~ ! ~ . m.A m.A + ~ ! ~ . ~ ! ~ + m.A m.A . ! ! ! ! ! ' + A . m.A m.A + ~ ! ! . + A m.A m.A m.A . ~ ! ~ + m.A m.A . m.A + ' ! ! ! ! . ! ! ~ + m.A m.A . m.A m.A + ~ ! ~ . ~ ! ~ + m.A m.A . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . ~ ! ~ + m.A m.A . m.A m.A + ~ ! ~ . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A m.A m.A m.A . m.A m.A + ~ ! ! . ! ! ! ! ! ! ! ! . ",
|
||||
". + ' ! ~ + m.A ` . + ' ! ' ' ! ' + . + ' ! ~ + m.A + . + + + + + + + + . + + + + + + + + . + + + + e m.A ` . + ' ! ~ + + + + . e m.A + ~ ! ' + . e m.+ ' ! ! ~ + . ~ + + + ~ ! ' + . e m.A + ~ ! ' + . + ' ! ~ + m.A ` . ! ! ! ! ! ' + ` . e m.A + ~ ! ! ! . e m.A ` e m.A ` . + ' ! ~ + m.A ` . e m.+ ' ! ! ! ! . ! ! ! ~ + m.A ` . e m.A + ~ ! ' + . + ' ! ~ + m.A ` . + + + + + + + + . e m.+ ' ! ' + ` . e m.+ ' ! ' + ` . + ' ! ~ + m.A ` . e m.A + ~ ! ' + . + + + + e m.A ` . e m.+ ' ! ! ~ + . e m.+ ' ! ' + ` . e m.+ ' ! ' + ` . e m.A ` e + + + . + + + + ~ ! ! ! . ! ! ! ! ! ! ! ! . ",
|
||||
". + ~ ! ' + A m.A . + ~ ! ! ! ! ~ + . + ~ ! ' + A m.+ . ' ' ' ' ' ' ' ' . ' ' ' ' ' ' ' ' . ' ' ' ~ + A m.A . + ~ ! ! ' ' ' ' . m.A m.+ ' ! ~ + . m.A + ~ ' ! ! ' . ! ' ' ' ! ! ~ + . m.A m.+ ' ! ~ + . + ~ ! ' + A m.A . ! ! ! ! ! ' + A . m.A m.+ ' ! ! ! . m.A m.A m.A m.A . + ~ ! ' + A m.A . m.A + ' ! ! ! ! . ! ! ! ' + A m.A . m.A m.+ ' ! ~ + . + ~ ! ' + A m.A . ' ' ' ' ' ' ' ' . m.A + ' ! ' + A . m.A + ' ! ' + A . + ~ ! ' + A m.A . m.A m.+ ' ! ~ + . ' ' ' ~ + A m.A . m.A + ' ! ! ! ' . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A m.A + ~ ' ' . ' ' ' ' ! ! ! ! . ! ! ! ! ! ! ! ! . ",
|
||||
". A + ' ! ~ + e m.. A + ~ ! ! ' + m.. A + ~ ! ~ + e + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ~ + e m.. A + ~ ! ! ! ! ! . A ` + ~ ! ' + m.. A ` e + ~ ' ! ! . ! ! ! ! ! ~ + m.. A ` + ~ ! ' + m.. A + ' ! ~ + e m.. ! ! ! ! ! ' + m.. A ` + ~ ! ! ! ! . A ` e m.A ` e m.. A + ~ ! ~ + e m.. A ` + ' ! ! ! ! . ! ! ! ! ~ + e m.. A ` + ~ ! ~ + m.. A + ~ ! ~ + e m.. ! ! ! ! ! ! ! ! . A ` + ' ! ' + m.. A ` + ' ! ' + m.. A + ~ ! ~ + e m.. A ` + ~ ! ' + m.. ! ! ! ! ~ + e m.. A ` + ' ! ! ! ! . A ` + ' ! ~ + m.. A ` + ' ! ' + m.. A ` e + ~ ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ",
|
||||
". m.+ ' ! ! ~ + A . m.A + ' ! ' + A . m.A + ' ! ~ + + . ' ' ! ! ! ' ' ' . ' ' ' ' ' ' ' ' . ' ' ' ! ! ~ + A . m.A + ~ ' ' ' ' . m.+ ~ ! ! ' + A . m.A m.A + ~ ' ' . ! ' ' ' ~ + m.A . m.+ ~ ! ! ' + A . m.+ ' ! ' + m.A . ' ' ' ! ! ' + A . m.+ ~ ! ! ' ' ' . m.A m.A m.A m.A . m.A + ' ! ~ + A . m.+ ~ ! ! ' ' ' . ' ' ' ! ! ~ + A . m.+ ~ ! ' + m.A . m.A + ' ! ~ + A . ' ' ' ' ' ' ' ' . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ~ + A . m.A + ' ! ' + A . ' ' ! ! ! ~ + A . m.A + ' ! ! ! ' . m.+ ~ ! ' + m.A . m.A + ' ! ' + A . m.A + ~ ! ! ! ' . ' ' ' ' ' ' ' ' . ' ' ' ' ' ' ' ' . ",
|
||||
". e + ' ! ! ' + ` . e m.+ ~ ! ' + ` . e m.+ ~ ! ! ' ' . + + ! ! ~ + + + . + + + + + + + + . + + + ~ ! ' + ` . e m.A + + + + + . e + ' ! ! ' + ` . e m.A ` e + + + . ~ + + + + m.A ` . e + ' ! ! ' + ` . e + ' ! ~ + A ` . + + + ~ ! ' + ` . e + ' ! ~ + + + . e m.A ` e m.A ` . e m.+ ' ! ' + ` . e + ' ! ~ + + + . + + + ~ ! ' + ` . e + ' ! ~ + A ` . e m.+ ~ ! ' + m.. + + + + + + + + . e m.+ ' ! ' + ` . e m.+ ' ! ' + ` . e m.+ ' ! ' + ` . e m.+ ' ! ' + ` . + + ~ ! ! ' + ` . e m.+ ' ! ! ~ + . e + ' ! ~ + A ` . e m.+ ~ ! ' + ` . e m.+ ' ! ! ~ + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + ~ ! ' ' ! ~ + . m.A m.+ ~ ! ~ + . m.A m.+ ' ! ! ! . + ~ ! ~ + A m.A . m.A m.A m.A m.A . m.A m.+ ~ ! ~ + . m.A m.A m.A m.A . + ~ ! ' ' ! ~ + . m.A m.A m.A m.A . + A m.A m.A m.A . + ~ ! ! ! ' + A . + ~ ! ~ + A m.A . m.A m.+ ~ ! ~ + . + ~ ! ~ + A m.A . m.A m.A m.A m.A . m.A + ' ! ! ~ + . + ~ ! ~ + A m.A . m.A m.+ ~ ! ~ + . + ~ ! ~ + A m.A . m.A m.+ ~ ! ~ + . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . + ~ ! ~ + A m.A . m.A m.+ ~ ! ~ + . m.A + ' ! ' + A . m.A m.A m.A m.A . m.A m.A m.A m.A . ",
|
||||
". ~ ! ' + + ' ! ~ . A ` e m.+ ' ! ~ . A ` e + ' ! ! H.. ~ ! ' + A ` e m.. A ` e m.A ` e + . A ` e m.+ ' ! ~ . A ` e m.A ` e m.. ~ ! ' + + ' ! ~ . A ` e m.A ` e m.. + ` e m.A ` e m.. ~ ! ! ! ! ' + m.. ~ ! ' + A ` e m.. A ` e m.+ ' ! ~ . ~ ! ' + A ` e m.. + ` e m.A ` e m.. A ` + ' ! ! ! ~ . ~ ! ' + A ` e m.. A ` e m.+ ' ! ~ . ~ ! ' + A ` e m.. A ` e m.+ ' ! ~ . A ` e m.A ` e m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. A ` + ' ! ' + m.. ~ ! ' + A ` e m.. A ` e m.+ ' ! ~ . A ` + ' ! ' + m.. A ` e m.A ` e m.. A ` e m.A ` e m.. ",
|
||||
". ' ! ~ + + ~ ! ' . m.A m.A + ~ ! ' . m.A m.A ' ! A 3 . ' ! ~ + m.A m.A . m.A m.A m.A m.+ . m.A m.A + ~ ! ' . m.A m.A m.A m.A . ' ! ~ + + ~ ! ' . m.A m.A m.A m.A . + A m.A m.A m.A . ' ! ! ! ! ' + A . ' ! ~ + m.A m.A . m.A m.A + ~ ! ' . ' ! ~ + m.A m.A . + A m.A m.A m.A . m.A + ' ! ! ! ' . ' ! ~ + m.A m.A . m.A m.A + ~ ! ' . ' ! ~ + m.A m.A . m.A m.A + ~ ! ' . m.A m.A m.A m.A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . m.A + ' ! ' + A . ' ! ~ + m.A m.A . m.A m.A + ~ ! ' . m.A + ' ! ' + A . m.A m.A m.A m.A . m.A m.A m.A m.A . ",
|
||||
". ! ~ + ` e + ~ ! . e m.A ` e + ' ! . + + + + 3 [ s M.. ! ~ + ` e m.A ` . e m.A ` e m.+ ~ . e m.A ` e + ~ ! . e m.A ` e m.A ` . ! ~ + ` e + ~ ! . e m.A ` e m.A ` . + m.A ` e m.A ` . ! ! ! ! ! ' + ` . ! ~ + ` e m.A ` . e m.A ` e + ~ ! . ! ~ + ` e m.A ` . ~ + A ` e m.A ` . e m.+ ' ! ! ! ! . ! ~ + ` e m.A ` . e m.A ` e + ~ ! . ! ~ + ` e m.A ` . e m.A ` e + ~ ! . e m.A ` e m.A ` . + + ~ ! ! ! ~ + . e m.+ ' ! ' + ` . e m.+ ' ! ' + ` . + + ~ ' ! ' ~ + . e m.+ ' ! ' + ` . e m.+ ' ! ' + ` . ! ~ + ` e m.A ` . e m.A ` e + ~ ! . e m.+ ' ! ' + ` . e m.A ` e m.A ` . e m.A ` e m.A ` . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". ! ! ! ! ! ' + A . m.A + ' ! ' + A . ! ~ + A m.A m.A . m.A m.A m.+ ~ ! . m.A + ' ! ' + A . 6 / 6 / 6 / 6 / . 6 / 6 / 6 + ~ ! . ! ! ! ! ! ' + / . ! ! ! ! ! ! ! ! . + + + + + + + + . _ + ( ( ( + ~ ! . ! ! ! ! ! ! ! ! . _ + ( ( ( + + + . _ + ( ( ( + ~ ! . ! ! ! ! ! ! ! ! . + + + + + + + + . + + + + + + ~ ! . ! ! ! ! ! ! ! ! . ! ~ + ( ( + _ _ . ! ! ! ! ! ! ' + . ! ~ + ( ( + _ _ . ! ~ + ( ( + _ _ . + ' ! ! ! ! ! ! . + + + + + + + + . 6 / 6 / 6 + + + . ! ! ! ! ! ! ! ! . 6 + ( ( ( + + + . 6 # # + # + + + . 6 + ( + ( + + + . 6 # # + # + + + . ~ ' ! ! ! ! + % . + + + + + + + + . ",
|
||||
". ! ! ! ! ! ' + m.. A ` + ' ! ' + m.. ! ' + m.A ` e m.. A ` e m.A + ' ! . A ` + ' ! ' + m.. / 6 / 6 / 6 / 6 . / 6 / 6 / + ' ! . ! ! ! ! ! ' + 6 . ! ! ! ! ! ! ! ! . ' ' ' ' ' ' ' ' . _ + ( ( ( + ' ! . ! ! ! ! ! ! ! ! . _ + ( ( ( + ~ ' . _ + ( ( ( + ' ! . ! ! ! ! ! ! ! ! . ' ' ' ' ' ' ' ' . ' ' ' ' ' ' ! ! . ! ! ! ! ! ! ! ! . ! ' + ( ( + _ _ . ! ! ! ! ! ! ' + . ! ' + ( ( + _ _ . ! ' + ( ( + _ _ . + ' ! ! ! ! ! ! . ' ' ' ' ' ' ' ' . / 6 / 6 / + ~ ' . ! ! ! ! ! ! ! ! . / + ( ( ( + ~ ' . / 6 + % + + ~ ' . / + + % + + ~ ' . / 6 + % + + ~ ' . ! ! ! ! ! ! + % . ' ' ' ' ' ' ' ' . ",
|
||||
". ! ! ! ! ! ' + A . m.A + ' ! ' + A . ~ ! ~ + m.A m.A . m.A m.A + ~ ! ~ . m.A + ' ! ' + A . 6 / 6 / 6 / 6 / . 6 / 6 / + ~ ! ! . ! ! ! ! ! ' + / . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . + + + + + ~ ! ! . ! ! ! ! ! ! ! ~ . + + + + + ~ ! ! . + + + + + ~ ! ! . ! ! ! ! ! ! ! ~ . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ~ ! ! ! ! ! ! ! . ! ! ~ + + K + + . ~ ! ! ! ! ! ' + . ! ! ~ + + K + + . ! ! ~ + + K + + . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . 6 / 6 / + ~ ! ! . ! ! ! ! ! ! ! ~ . 6 / + + + ~ ! ! . 6 + % % + ~ ! ! . 6 + % % + ~ ! ! . 6 + % % + ~ ! ! . ! ! ! ! ! ! ! + . ! ! ! ! ! ! ! ! . ",
|
||||
". ! ! ! ! ! ' + ` . + + ~ ! ! ' + ` . + ' ! ~ + + + + . + + + + ~ ! ' + . e m.+ ' ! ! ~ + . / 6 / 6 + + + + . e m.A + ~ ! ! ! . ! ! ! ! ! ' + ` . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . / / + + ~ ! ! ! . ! ! ! ! ! ! ' + . / / + + ~ ! ! ! . / / + + ~ ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . + ' ! ! ! ! ! ! . ! ! ! ~ + K + / . + ' ! ! ! ! ' + . ! ! ! ~ + K + / . ! ! ! ~ + K + / . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . / 6 / + ~ ! ! ! . ! ! ! ! ! ! ' + . / 6 + + ~ ! ! ! . / % % + ~ ! ! ! . + % % + ~ ! ! ! . / % % + ~ ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ",
|
||||
". ! ! ! ! ! ' + A . ' ' ! ! ! ' + A . + ~ ! ! ' ' ' ' . ' ' ' ' ! ! ~ + . m.A + ' ! ! ! ' . 6 / 6 + ~ ' ' ' . m.A m.+ ' ! ! ! . ! ! ! ! ! ' + A . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . / / + + ' ! ! ! . ! ! ! ! ! ! ~ + . / / + + ' ! ! ! . / / + + ' ! ! ! . ! ! ! ! ! ! ~ + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . + ~ ! ! ! ! ! ! . ! ! ! ' + + + / . + ' ! ! ! ! ' + . ! ! ! ' + + + / . ! ! ! ' + + + / . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . 6 / 6 + ' ! ! ! . ! ! ! ! ! ! ~ + . 6 / 6 + ' ! ! ! . 6 % % + ' ! ! ! . > + % + ' ! ! ! . 6 + + ~ ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ",
|
||||
". ! ! ! ! ! ' + m.. ! ! ! ! ! ' + m.. A + ' ! ! ! ! ! . ! ! ! ! ! ~ + m.. A ` + ' ! ! ! ! . / 6 + ~ ! ! ! ! . A ` + ~ ! ! ! ! . ! ! ! ! ! ' + m.. ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . / / + ~ ! ! ! ! . ! ! ! ! ! ' + / . / / + ~ ! ! ! ! . / / + ~ ! ! ! ! . ! ! ! ! ! ' + / . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . / + ~ ! ! ! ! ! . ! ! ! ! ~ + + / . + ' ! ! ! ! ' + . ! ! ! ! ~ + + / . ! ! ! ! ~ + + / . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . / 6 + ~ ! ! ! ! . ! ! ! ! ! ~ + 6 . / 6 + ~ ! ! ! ! . / 6 + ~ ! ! ! ! . > > + ~ ! ! ! ! . + ~ ' ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ",
|
||||
". ' ' ! ! ! ' + A . ' ' ' ! ! ' + A . m.+ ' ! ! ' ' ' . ' ' ' ' ~ + m.A . m.+ ~ ! ! ' ' ' . 6 + ~ ! ! ! ! ! . m.+ ~ ! ! ! ! ! . ! ! ! ! ! ' + A . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . + + + ' ! ! ! ! . ! ! ! ! ! ' + + . + + ~ ! ! ! ! ! . + + + ' ! ! ! ! . ! ! ! ! ! ' + + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . + + + ' ! ! ! ! . ! ! ! ! ! ~ + + . + ' ! ! ! ! ' + . ! ! ! ! ' + { + . ! ! ! ! ! ~ + + . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . 6 + ~ ! ! ! ! ! . ! ! ! ! ' + 6 / . 6 + ~ ! ! ! ! ! . 6 + ~ ! ! ! ! ! . > + ~ ! ! ! ! ! . ~ ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ",
|
||||
". + + ~ ! ! ' + ` . + + + ~ ! ' + ` . e + ' ! ~ + + + . + + + + + m.A ` . e + ' ! ~ + + + . / + ' ! ! ! ~ + . e + ' ! ! ! ! ! . ! ! ! ! ! ' + ` . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . K + + ~ ! ! ! ! . ! ! ! ! ! ' + + . K + ' ! ! ! ! ! . K + + ' ! ! ! ! . ! ! ! ! ! ' + + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . K + + ~ ! ! ! ! . ! ! ! ! ! ' + + . + ' ! ! ! ! ' + . ! ! ! ! ~ + { + . ! ! ! ! ! ' + + . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . / + ' ! ! ! ! ! . ! ! ! ! ~ + / 6 . / + ' ! ! ! ! ! . / + ' ! ! ! ! ! . + + ' ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ' ' ' . ! ! ! ! ! ! ! ! . ",
|
||||
". m.A + ' ! ' + A . m.A m.+ ~ ! ~ + . + ~ ! ~ + A m.A . m.A m.A m.A m.A . + ~ ! ~ + A m.A . + ~ ! ! ! ' + / . + ~ ! ! ! ! ! ! . ! ! ! ! ! ' + A . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . + + { + ~ ! ! ! . ! ! ! ! ! ! ~ + . + ~ ! ! ! ! ! ! . + + + ' ! ! ! ! . ! ! ! ! ! ' + + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . + + { + ~ ! ! ! . ! ! ! ! ! ! ~ + . + ' ! ! ! ! ' + . ! ! ! ~ + { { + . ! ! ! ! ! ! ~ + . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . + ~ ! ! ! ! ! ! . ! ! ! ~ + / 6 / . + ~ ! ! ! ! ! ! . + ~ ! ! ! ! ! ! . + ~ ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ~ + + + . ! ! ! ! ! ! ! ! . ",
|
||||
". A ` + ' ! ' + m.. A ` e m.+ ' ! ~ . ~ ! ' + A ` e m.. A ` e m.A ` e m.. ~ ! ' + A ` e m.. ~ ! ! ! ! ' + 6 . ~ ! ! ! ! ! ! ! . ! ! ! ! ! ' + m.. ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . K K + { + ' ! ! . ! ! ! ! ! ! ! ~ . ~ ! ! ! ! ! ! ! . K K + ' ! ! ! ! . ! ! ! ! ! ' + K . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . K K + { + ' ! ! . ! ! ! ! ! ! ! ~ . + ' ! ! ! ! ! ~ . ! ! ' + { { + K . ! ! ! ! ! ! ' + . ~ ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ~ ! ! ! ! ! ! ! . ! ! ' + / 6 / 6 . ~ ! ! ! ! ! ! ! . ~ ! ! ! ! ! ! ! . ~ ! ! ! ! ! ! ! . + ! ! ! ! ! ! ! . ! ! ! ~ + ` e m.. ! ! ! ! ! ! ! ! . ",
|
||||
". m.A + ' ! ' + A . m.A m.A + ~ ! ' . ' ! ~ + m.A m.A . m.A m.A m.A m.A . ' ! ~ + m.A m.A . ! ! ! ! ! ' + / . ' ! ! ! ! ! ! ! . ! ! ! ! ! ' + A . ' ' ' ' ' ' ! ! . ! ! ! ! ! ! ! ! . + K + + + ~ ' ' . ! ! ! ! ! ! ! ' . ' ! ! ! ! ! ! ! . + K + ' ! ! ! ! . ! ! ! ! ! ' + + . ! ! ' ' ' ' ' ' . ' ' ' ' ' ' ' ' . + K + + + ~ ! ! . ! ! ! ! ! ! ! ' . + ' ! ! ! ! ! ' . ! ! ~ + + + + + . ! ! ! ! ! ! ' + . ' ! ! ! ! ! ! ! . ' ' ' ' ' ' ' ' . ' ! ! ! ! ! ! ! . ' ' ~ + 6 / 6 / . ' ! ! ! ! ! ! ! . ' ! ! ! ! ! ! ! . ' ! ! ! ! ! ! ! . + ! ! ! ! ! ! ! . ! ! ~ + m.A m.A . ' ' ' ' ' ' ! ! . ",
|
||||
". e m.+ ' ! ' + ` . e m.A ` e + ~ ! . ! ~ + ` e m.A ` . e m.A ` e m.A ` . ! ~ + ` e m.A ` . ! ! ! ! ! ' + 6 . ! ! ! ! ! ! ! ! . ! ! ! ! ! ' + ` . + + + + + + ~ ! . ! ! ! ! ! ! ! ! . _ + ( ( ( + + + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . _ + + ' ! ! ! ! . ! ! ! ! ! ' + _ . ! ~ + + + + + + . + + + + + + + + . _ + ( ( ( + ~ ! . ! ! ! ! ! ! ! ! . + ' ! ! ! ! ! ! . ! ~ + ( ( + _ _ . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . + + + + + + + + . ! ! ! ! ! ! ! ! . + + + 6 / 6 / 6 . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . % + ! ! ! ! ! ~ . ! ~ + ` e m.A ` . + + + + + + ~ ! . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". 6 / 6 / 6 + ~ ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ~ + / 6 / 6 / . 6 / 6 / 6 + ~ ! . ! ! ! ! ! ! ! ! . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . ! ! ! ! ! ! ! ! . ! ~ + / 6 / 6 / . ! ! ! ! ! ! ! ! . _ + + ' ! ! ! ! . ! ! ! ! ! ' + 6 . _ + ( ( ( + ~ ! . ! ! ! ! ! ! ! ! . + + + + + + ~ ! . ! ! ! ! ! ! ! ! . = + # + # + = = . = + # + # + = = . ! ' + + # + = = . = + # + # + ~ ! . = + # + # + ~ ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . = + # + # + ~ ! . ! ! ! ! ! ! ! ! . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . + + + + + + ~ ! . 6 / 6 / 6 + ~ ! . ",
|
||||
". / 6 / 6 / + ' ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ' + 6 / 6 / 6 . / 6 / 6 / + ' ! . ! ! ! ! ! ! ! ! . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . ! ! ! ! ! ! ! ! . ! ' + 6 / 6 / 6 . ! ! ! ! ! ! ! ! . _ + + ' ! ! ! ! . ! ! ! ! ! ' + / . _ + ( ( ( + ' ! . ! ! ! ! ! ! ! ! . ' ' ' ' ' ' ! ! . ! ! ! ! ! ! ! ! . = = + % + = = = . = = + % + = = = . ! ' + % + = = = . = = + % + + ' ! . = = + % + + ' ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . = = + % + + ' ! . ! ! ! ! ! ! ! ! . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ' ' ' ' ' ' ! ! . / 6 / 6 / + ' ! . ",
|
||||
". 6 / 6 / + ~ ! ! . ! ! ! ! ! ! ! ~ . ~ ! ! ! ! ! ! ! . ! ! ~ + 6 / 6 / . 6 / 6 / + ~ ! ! . ! ! ! ! ! ! ! ~ . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . ~ ! ! ! ! ! ! ! . ! ! ~ + 6 / 6 / . ~ ! ! ! ! ! ! ! . + + + ' ! ! ! ! . ! ! ! ! ! ' + + . + + + + + ~ ! ! . ! ! ! ! ! ! ! ~ . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ~ . = + % % % + = + . = + % % % + = + . ! ! ~ + % + = + . = + % % + ~ ! ! . = + % % + ~ ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . = + % % + ~ ! ! . ! ! ! ! ! ! ! ~ . + ' ! ! ! ! ! ~ . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ~ . 6 / 6 / + ~ ! ! . ",
|
||||
". / 6 / + ~ ! ! ! . ! ! ! ! ! ! ' + . + ' ! ! ! ! ! ! . ! ! ! ~ + 6 / 6 . / 6 / + ~ ! ! ! . ! ! ! ! ! ! ' + . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . + ' ! ! ! ! ! ! . ! ! ! ~ + 6 / 6 . + ' ! ! ! ! ! ! . / / + ' ! ! ! ! . ! ! ! ! ! ' + / . / / + + ~ ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . + % % % % + + + . + + + % % % + > . ! ! ! ~ + % + > . + + + + ~ ! ! ! . + % % + ~ ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . + % % + ~ ! ! ! . ! ! ! ! ! ! ' + . + ' ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . / 6 / + ~ ! ! ! . ",
|
||||
". 6 / 6 + ' ! ! ! . ! ! ! ! ! ! ~ + . + ~ ! ! ! ! ! ! . ! ! ! ' + / 6 / . 6 / 6 + ' ! ! ! . ! ! ! ! ! ! ~ + . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . + ~ ! ! ! ! ! ! . ! ! ! ' + / 6 / . + ~ ! ! ! ! ! ! . / / + ' ! ! ! ! . ! ! ! ! ! ' + / . / / + + ' ! ! ! . ! ! ! ! ! ! ~ + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ~ + . > + % + + ~ ' ' . ' ' ~ + + + > > . ! ! ! ' + + > > . ' ' ' ' ! ! ! ! . > + % + ' ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . > + % + ' ! ! ! . ! ! ! ! ! ! ~ + . + ' ! ! ! ! ~ + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ~ + . 6 / 6 + ' ! ! ! . ",
|
||||
". / 6 + ~ ! ! ! ! . ! ! ! ! ! ~ + 6 . / + ~ ! ! ! ! ! . ! ! ! ! ~ + / 6 . / 6 + ~ ! ! ! ! . ! ! ! ! ! ' + 6 . / 6 + ' ! ! ! ! . ! ! ! ! ! ~ + 6 . / + ~ ! ! ! ! ! . ! ! ! ! ~ + / 6 . / + ~ ! ! ! ! ! . / / + ' ! ! ! ! . ! ! ! ! ! ~ + / . / / + ~ ! ! ! ! . ! ! ! ! ! ~ + / . ! ! ! ! ! ! ! ! . ! ! ! ! ! ~ + / . > > + ~ ' ! ! ! . ! ! ! ' ~ + > > . ! ! ! ! ~ + > > . ! ! ! ! ! ! ! ! . > > + ~ ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . > > + ~ ! ! ! ! . ! ! ! ! ! ~ + > . + ' ! ! ! ~ + > . ! ! ! ! ! ! ! ! . ! ! ! ! ! ~ + 6 . / 6 + ~ ! ! ! ! . ",
|
||||
". 6 + ~ ! ! ! ! ! . ! ! ! ! ' + 6 / . 6 / + ' ! ! ! ! . ! ! ! ! ! ~ + / . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . 6 + ~ ! ! ! ! ! . ! ! ! ! ' + 6 / . 6 / + ' ! ! ! ! . ! ! ! ! ! ~ + / . + + + ' ! ! ! ! . + + ~ ! ! ! ! ! . ! ! ! ! ' + { + . + + ~ ! ! ! ! ! . ! ! ! ! ' + { + . ! ! ! ! ! ! ! ! . ! ! ! ! ' + { + . > + ~ ! ! ! ! ! . ! ! ! ! ! ~ + + . ! ! ! ! ! ~ + + . ! ! ! ! ! ! ! ! . > + ~ ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . > + ~ ! ! ! ! ! . ! ! ! ! ' + > + . + ' ! ! ' + > + . ! ! ! ! ! ! ! ! . ! ! ! ! ' + 6 / . 6 + ~ ! ! ! ! ! . ",
|
||||
". / + ' ! ! ! ! ! . ! ! ! ! ~ + / 6 . / 6 + ~ ! ! ! ! . ! ! ! ! ! ' + 6 . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . / + ' ! ! ! ! ! . ! ! ! ! ~ + / 6 . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . K + + ' ! ! ! ! . K + ' ! ! ! ! ! . ! ! ! ! ~ + { + . K + ' ! ! ! ! ! . ! ! ! ! ~ + { + . ! ! ! ! ! ! ! ! . ! ! ! ! ~ + { + . + + ' ! ! ! ! ! . ! ! ! ! ! ' + $ . ! ! ! ! ! ' + $ . ! ! ! ! ! ! ! ! . + + ' ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ~ + . + + ' ! ! ! ! ! . ! ! ! ! ~ + + $ . + ' ! ! ~ + + $ . ! ! ! ! ! ! ! ! . ! ! ! ! ~ + / 6 . / + ' ! ! ! ! ! . ",
|
||||
". + ~ ! ! ! ! ! ! . ! ! ! ~ + / 6 / . 6 / 6 + ~ ! ! ! . ! ! ! ! ! ! ~ + . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . + ~ ! ! ! ! ! ! . ! ! ! ~ + / 6 / . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . + + + ' ! ! ! ! . + ~ ! ! ! ! ! ! . ! ! ! ~ + { { + . + ~ ! ! ! ! ! ! . ! ! ! ~ + { { + . ! ! ! ! ! ! ! ! . ! ! ! ~ + { { + . + ~ ! ! ! ! ! ! . ! ! ! ! ! ! ~ + . ! ! ! ! ! ! ~ + . ! ! ! ! ! ! ! ! . + ~ ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ! ' + $ . + ~ ! ! ! ! ! ! . ! ! ! ~ + + $ $ . + ' ! ~ + + $ $ . ! ! ! ! ! ! ! ! . ! ! ! ~ + / 6 / . + ~ ! ! ! ! ! ! . ",
|
||||
". ~ ! ! ! ! ! ! ! . ! ! ' + / 6 / 6 . / 6 / 6 + ' ! ! . ! ! ! ! ! ! ! ~ . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . ~ ! ! ! ! ! ! ! . ! ! ' + / 6 / 6 . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . K K + ' ! ! ! ! . ~ ! ! ! ! ! ! ! . ! ! ' + { { + K . ~ ! ! ! ! ! ! ! . ! ! ' + { { + K . ! ! ! ! ! ! ! ! . ! ! ' + { { + K . ~ ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ~ . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . + ' ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ! ! ! ! ' ~ + $ . ~ ! ! ! ! ! ! ! . ! ! ' + + $ $ $ . ~ ! ' + + $ $ $ . ! ! ! ! ! ! ! ! . ! ! ' + / 6 / 6 . + ! ! ! ! ! ! ! . ",
|
||||
". ' ! ! ! ! ! ! ! . ! ! ~ + 6 / 6 / . 6 / 6 / + ~ ! ! . ! ! ! ! ! ! ! ' . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . ' ! ! ! ! ! ! ! . ! ! ~ + 6 / 6 / . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . + K + ' ! ! ! ! . ' ! ! ! ! ! ! ! . ! ! ~ + + + + + . ' ! ! ! ! ! ! ! . ! ! ~ + + + + + . ! ! ' ' ' ' ' ' . ' ' ~ + + + + + . ' ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ' . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . + ~ ' ' ' ' ' ' . ' ' ' ' ' ' ' ' . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . ' ' ' ~ + + $ + . ' ! ! ! ! ! ! ! . ! ! ~ + # + $ + . ' ! ~ + # + $ + . ! ! ! ! ! ! ! ! . ! ! ~ + 6 / 6 / . + ! ! ! ! ! ! ! . ",
|
||||
". ! ! ! ! ! ! ! ! . ! ~ + 6 / 6 / 6 . / 6 / 6 / + ~ ! . ! ! ! ! ! ! ! ! . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . ! ! ! ! ! ! ! ! . ! ~ + 6 / 6 / 6 . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . _ + + ' ! ! ! ! . ! ! ! ! ! ! ! ! . ! ~ + ( ( + _ _ . ! ! ! ! ! ! ! ! . ! ~ + ( ( + _ _ . ! ~ + + + + + + . + + + ( ( + _ _ . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . + + + + + + + + . + + + + + + + + . ! ! ! ! ! ! ' + . ! ! ! ! ! ! ! ! . + + + + # # + = . ! ! ! ! ! ! ! ! . ! ~ + # # # + = . ! ~ + # # # + = . ~ ! ! ! ! ! ! ! . ! ~ + 6 / 6 / 6 . + ! ! ! ! ! ! ! . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". + ' ! ! ! ! ! ! . = + # + # + ~ ! . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . ! ! ! ! ! ! ! ! . ! ~ + / 6 / 6 / . 6 / 6 / 6 + ~ ! . ! ! ! ! ! ! ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 / 6 + 6 / 6 / . ) ) + + # + = = . ) ) + + # + = = . 6 # # + # + = = . = + # + # # _ _ . _ + ( + ( + _ _ . ) ) + + # + = = . = + # + # + ) ) . ' + # + # + = = . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ! ' . = = + % + + ' ! . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . ! ! ! ! ! ! ! ! . ! ' + 6 / 6 / 6 . / 6 / 6 / + ' ! . ! ! ! ! ! ! ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / 6 + % + 6 / 6 . ) ) + % + = = = . ) ) + % + = = = . / 6 + % + = = = . = = + % + + _ _ . _ + + % + + _ _ . ) ) + % + = = = . = = + % + + ) ) . ~ + + % + = = = . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ! ~ . = + % % + ~ ! ! . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . ~ ! ! ! ! ! ! ! . ! ! ~ + 6 / 6 / . 6 / 6 / + ~ ! ! . ! ! ! ! ! ! ! ~ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 / ) + % + 6 + . ) ) ) + % + = + . ) ) ) + % + = + . 6 + % % % + = + . = + % % % + + + . + + % % % + + + . ) ) ) + % + = + . = + % % + ) ) ) . + ) ) + % + = + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ' + . + % % + ~ ! ! ! . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . + ' ! ! ! ! ! ! . ! ! ! ~ + 6 / 6 . / 6 / + ~ ! ! ! . ! ! ! ! ! ! ' + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / ) ) ) + % + > . + ) ) ) + % + > . + ) ) ) + % + > . / + + + + + + + . + + + + + + + + . + + + + + + + / . + ) ) ) + % + > . + % % + ) ) ) + . ) ) ) ) + % + > . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ' + . > + % + ' ! ! ! . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . + ~ ! ! ! ! ! ! . ! ! ! ' + / 6 / . 6 / 6 + ' ! ! ! . ! ! ! ! ! ! ~ + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 ) ) ) + + > > . + ) ) ) + + > > . + ) ) ) + + > > . 6 ) ) ) ) ) ) ) . ) ) ) ) ) ) ) ) . ) ) ) ) ) ) + / . + ) ) ) + + > > . > + % + ) ) ) + . + ) ) ) + + > > . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ' + . > > + ~ ! ! ! ! . / 6 + ' ! ! ! ! . ! ! ! ! ! ' + 6 . / + ' ! ! ! ! ! . ! ! ! ! ~ + / 6 . / 6 + ~ ! ! ! ! . ! ! ! ! ! ' + 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / + ) ) ) + > > . > + ) ) ) + > > . > + ) ) ) + > > . / ) ) ) ) ) ) ) . ) ) ) ) ) ) ) ) . ) ) ) ) ) { + / . > + ) ) ) + > > . > > + ) ) ) + > . > + ) ) ) + > > . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ' + . > + + ' ! ! ! ! . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . 6 + ' ! ! ! ! ! . ! ! ! ! ' + 6 / . 6 / + ' ! ! ! ! . ! ! ! ! ! ' + / . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 + + ) ) ) + + . > + + ) ) ) + + . > + + ) ) ) + + . 6 ) ) ) ) ) ) ) . ) ) ) ) ) ) ) ) . ) ) ) ) ) ) { + . > + ) ) ) + > + . > + ) ) ) + > + . > + + ) ) ) + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ' + . + * + ' ! ! ! ! . / 6 + ~ ! ! ! ! . ! ! ! ! ! ' + 6 . / + ' ! ! ! ! ! . ! ! ! ! ~ + / 6 . / 6 + ~ ! ! ! ! . ! ! ! ! ! ' + 6 . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / * + ) ) ) + $ . + * + ) ) ) + $ . + * + ) ) ) + + . / + + + + + + + . + + + + + + + + . + + + + + + { + . + + ) ) ) + + $ . + + ) ) ) + + $ . + * + ) ) ) + $ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ' + . $ + + ' ! ! ! ! . 6 / 6 + ~ ! ! ! . ! ! ! ! ! ! ~ + . + ~ ! ! ! ! ! ! . ! ! ! ~ + / 6 / . 6 / 6 + ~ ! ! ! . ! ! ! ! ! ! ~ + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 * * + ) ) ) + . $ + * + ) ) ) + . $ + * + ) ) ) + . 6 * * + * + $ $ . $ + * + * + $ $ . $ + * * * * { + . + ) ) ) + + $ $ . + ) ) ) + + $ $ . $ + * + ) ) ) + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ! ~ . $ $ + ' ! ! ! ! . / 6 / 6 + ' ! ! . ! ! ! ! ! ! ! ~ . ~ ! ! ! ! ! ! ! . ! ! ' + / 6 / 6 . / 6 / 6 + ' ! ! . ! ! ! ! ! ! ! ~ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / 6 + # + ) ) ) . $ $ + # + ) ) ) . $ $ + { + ) ) ) . / 6 + # + $ $ $ . $ $ + # + $ $ $ . $ $ + { { { + 6 . ) ) ) + + $ $ $ . ) ) ) + + $ $ $ . $ $ + # + ) ) + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ! ' . $ $ + ' ! ! ! ! . 6 / 6 / + ~ ! ! . ! ! ! ! ! ! ! ' . ' ! ! ! ! ! ! ! . ! ! ~ + 6 / 6 / . 6 / 6 / + ~ ! ! . ! ! ! ! ! ! ! ' . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . 6 + # # + ) ) ) . $ + # # + ) ) ) . $ $ + + + ) ) _ . 6 + # # # + $ + . $ + # # # + $ $ . $ $ 6 + + + 6 / . ) ) ) + # + $ + . ) ) ) + # + $ + . $ + # # + ) ) + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + ' ! ! ! ! ! ! . / 6 + ' ! ! ! ! . / 6 / 6 / + ~ ! . ! ! ! ! ! ! ! ! . ! ! ! ! ! ! ! ! . ! ~ + 6 / 6 / 6 . / 6 / 6 / + ~ ! . ! ! ! ! ! ! ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . / # # # # + ) ) . + # # # # + ) ) . _ + ( ( ( + _ _ . / # # # # # + = . + # # # # # / 6 . / 6 / 6 / 6 / 6 . ) ) + # # # + = . ) ) + # # # + = . + # # # # + + ~ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". 6 / 6 / 6 + i i . i i + / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 + i i . 6 / + i i i + / . i i + / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / + i i i + / . 6 / 6 / 6 + i i . 6 / 6 / 6 + i i . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 / 6 / 6 / . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / + i i i + / . 6 / + i i i + / . 6 / + i i i + / . i i + / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . i i + / 6 / 6 / . 6 / 6 / 6 + i i . 6 / + i i i + / . i i + i i i + / . 6 / + i i i i i . 6 / + i i i + / . 6 / + i i i + / . i i + / 6 + i i . ",
|
||||
". / 6 / 6 / + i i . i i + 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / + i i . / 6 + i i i + 6 . i i + 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 + i i i + 6 . / 6 / 6 / + i i . / 6 / 6 / + i i . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 / 6 / 6 / 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . i i + 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . i i + 6 / 6 / 6 . / 6 / 6 / + i i . / 6 + i i i + 6 . i i + i i i + 6 . / 6 + i i i i i . / 6 + i i i + 6 . / 6 + i i i + 6 . i i + 6 / + i i . ",
|
||||
". 6 / 6 / + i i i . i i i + 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / + i i i . 6 / + i i i + / . i i i + 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / + i i i + / . 6 / 6 / + i i i . 6 / 6 / + i i i . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 / 6 / 6 / . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / + i i i + / . 6 / + i i i + / . 6 / + i i i + / . i i i + 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . i i i + 6 / 6 / . 6 / 6 / + i i i . 6 / + i i i + / . i i i i i i + / . 6 / + i i i i i . 6 / + i i i + / . 6 / + i i i + / . i i i + + i i i . ",
|
||||
". / 6 / + i i i + . + i i i + 6 / 6 . / 6 / 6 + + + + . + + + + + + + + . + + + + i i i + . / 6 + i i i + 6 . + i i i + + + + . + + + + / 6 / 6 . / 6 + i i i + 6 . / 6 / + i i i + . + + + + i i i + . + + i i i i + 6 . / 6 + i i i i + . + + + + + + + + . + + i i i i i + . + + i i i i i + . / 6 / 6 + + + + . + + + + + 6 / 6 . + + i i i i + 6 . / 6 + i i i i + . / 6 + i i i + 6 . + i i i + 6 / 6 . + + + + + + + + . + + + + + + + + . + i i i + + + + . + + + + i i i + . / 6 + i i i + 6 . + i i i i i + 6 . / 6 + i i i i + . / 6 + i i i + 6 . / 6 + i i i + 6 . + i i i i i i + . ",
|
||||
". 6 / 6 + i i i + . + i i i + / 6 / . 6 / 6 + i i i i . i i i i i i i i . i i i i i i i + . 6 / + i i i + / . + i i i i i i i . i i i i + / 6 / . 6 / + i i i + / . 6 / 6 + i i i + . i i i i i i i + . i i i i i i + / . 6 / + i i i i i . i i i i i i i i . i i i i i i i i . i i i i i i i i . 6 / 6 + i i i i . i i i i i + 6 / . i i i i i i + / . 6 / + i i i i i . 6 / + i i i + / . + i i i + / 6 / . i i i i i i i i . i i i i i i i i . i i i i i i i i . i i i i i i i i . 6 / + i i i + / . + i i i i i + / . 6 / + i i i i + . 6 / + i i i + / . 6 / + i i i + / . + i i i i i i + . ",
|
||||
". / 6 + i i i + 6 . / + i i i + / 6 . / 6 + i i i i i . i i i i i i i i . i i i i i i + 6 . / 6 + i i i + 6 . / + i i i i i i . i i i i i + / 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . i i i i i i + 6 . i i i i i i + 6 . / 6 + i i i i i . i i i i i i i i . i i i i i i i i . i i i i i i i i . / 6 + i i i i i . i i i i i i + 6 . i i i i i i + 6 . / 6 + i i i i i . / 6 + i i i + 6 . / + i i i + / 6 . i i i i i i i i . i i i i i i i i . i i i i i i i i . i i i i i i i i . / 6 + i i i + 6 . / + i i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / + i i i i + 6 . ",
|
||||
". 6 + i i i + 6 / . 6 / + i i i + / . 6 + i i i i i i . i i i i i i i i . i i i i i + 6 / . 6 + i i i + 6 / . 6 / + i i i i i . i i i i i i + / . 6 / + i i i + / . 6 / + i i i + / . i i i i i i + / . i i i i i i + / . 6 / + i i i i i . i i i i i i i i . i i i i i i i i . i i i i i i i i . 6 / + i i i i i . i i i i i i + / . i i i i i + 6 / . 6 / 6 + i i i i . 6 / + i i i + / . 6 / + i i i + / . i i i i i i i i . i i i i i i i i . i i i i i i i i . i i i i i i i i . 6 + i i i i + / . 6 / + i i i + / . 6 / + i i i + / . 6 / + i i i + / . 6 + i i i i + / . 6 / + i i i + / . ",
|
||||
". / + i i i + / 6 . / 6 + i i i + 6 . / + i i i + + + . + + + + + + + + . + + + + + 6 / 6 . / + i i i + / 6 . / 6 / + + + + + . + + + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . + + + i i i + 6 . + + i i i i + 6 . / 6 + i i i i + . + + i i i i i + . + + + + + + + + . + + i i i i i + . / 6 + i i i i + . + + i i i i + 6 . + + + + + 6 / 6 . / 6 / 6 + + + + . / 6 + i i i + 6 . / 6 + i i i + 6 . + + i i i + + + . + + + i i i + + . + + + + + + + + . + + + + + + + + . / + i i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / + i i i i + 6 . / 6 + i i i + 6 . ",
|
||||
". + i i i + / 6 / . 6 / 6 + i i i + . + i i i + / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . + i i i + / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 + i i i + . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 + i i i + . 6 / + i i i + / . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 / 6 / 6 / . 6 / + i i i + / . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 + i i i + . 6 / + i i i + / . + i i i + / 6 / . 6 / 6 + i i i + . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . + i i i i i + / . 6 / + i i i + / . 6 / + i i i + / . 6 / + i i i i + . + i i i i i i + . 6 / + i i i + / . ",
|
||||
". i i i + / 6 / 6 . / 6 / 6 + i i i . i i i + / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . i i i + / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 + i i i . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 / 6 + i i i . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 / 6 / 6 / 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 + i i i . / 6 + i i i + 6 . i i i + / 6 / 6 . / 6 / 6 + i i i . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . i i i i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i i i . i i i + + i i i . / 6 + i i i + 6 . ",
|
||||
". i i i + 6 / 6 / . 6 / 6 / + i i i . i i i + 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . i i i + 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / + i i i . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 / + i i i . 6 / + i i i + / . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 / 6 / 6 / . 6 / + i i i + / . 6 / + i i i + / . 6 / + i i i + / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / + i i i . 6 / + i i i + / . i i i + 6 / 6 / . 6 / 6 / + i i i . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . i i i i i i + / . 6 / + i i i + / . 6 / + i i i + / . 6 / + i i i i i . i i i + + i i i . 6 / + i i i + / . ",
|
||||
". i i + 6 / 6 / 6 . / 6 / 6 / + i i . i i + 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . i i + 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / + i i . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 / 6 / + i i . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 / 6 / 6 / 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / + i i . / 6 + i i i + 6 . i i + 6 / 6 / 6 . / 6 / 6 / + i i . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . i i + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i + 6 . / 6 + i i i i i . i i + 6 / + i i . / 6 + i i i + 6 . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". i i + / 6 / 6 / . 6 / 6 / 6 / 6 / . _ + ( ( ( + i i . i i + ( ( + _ _ . _ + ( ( ( + _ _ . _ + + i i i + _ . _ + ( ( ( + i i . i i + ( ( + _ _ . 6 / 6 / 6 / 6 / . 6 / 6 / 6 + i i . i i + / 6 / 6 / . 6 / 6 / 6 / 6 / . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . i i + ( ( + i i . _ + ( ( ( + 6 / . _ + ( ( ( + i i . i i + ( ( + _ _ . i i + ( ( + _ _ . 6 + ( ( ( + _ _ . _ + ( ( ( + 6 / . 6 / 6 / 6 / 6 / . % % + ! ! ! ~ + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". i i + 6 / 6 / 6 . / 6 / 6 / 6 / 6 . _ + ( ( ( + i i . i i + ( ( + _ _ . _ + ( ( ( + _ _ . _ + + i i i + _ . _ + ( ( ( + i i . i i + ( ( + _ _ . / 6 / 6 / 6 / 6 . / 6 / 6 / + i i . i i + 6 / 6 / 6 . / 6 / 6 / 6 / 6 . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . i i + ( ( + i i . _ + ( ( ( + / 6 . _ + ( ( ( + i i . i i + ( ( + _ _ . i i + ( ( + _ _ . / + ( ( ( + _ _ . _ + ( ( ( + / 6 . / 6 / 6 / 6 / 6 . % % + ! ! ~ + m.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". i i i + 6 / 6 / . 6 / 6 / 6 / 6 / . + + + + + i i i . i i i + + K + + . + + + + + K + + . + + + i i i + + . + + + + + i i i . i i i + + K + + . 6 / 6 / 6 / 6 / . + + 6 / + i i i . i i i + 6 / 6 + . 6 / 6 / 6 / 6 / . + + + + + K + + . + + + + + K + + . i i i + + i i i . + + + + + K + / . + + + + + i i i . i i i + + K + + . i i i + + K + + . 6 / + + + K + + . + + + + + K + / . 6 / 6 / 6 / 6 / . % % % + ~ + m.A . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + i i i + + + + . + + + + + + + + . / / + + i i i + . + i i i + K + / . + + + + + + + + . / / + i i i + / . / / + + i i i + . + i i i + K + / . + + + + + + + + . / / + + i i i + . + i i i + 6 + / . + + + + + + + + . / / + K + + + + . + + + + K K + / . + i i i i i i + . + + + + + + + + . + + + + i i i + . + i i i + + + + . + i i i + + + + . / 6 + K + + + + . + + + + K K + 6 . + + + + / 6 / 6 . + % % % + + + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + i i i i i i i . i i i i i i i i . / / + + i i i + . + i i i + + + / . i i i i i i i i . / / + i i i + / . / / + + i i i + . + i i i + + + / . i i i i i i i i . / / + + i i i + . + i i i + + + / . i i i i i i i i . / / + + i i i i . i i i i + + + / . + i i i i i i + . i i i i i i i i . i i i i i i i + . + i i i i i i i . + i i i i i i i . 6 / 6 + i i i i . i i i i + + + / . i i i i + / 6 / . + % % i i i i i . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". / + i i i i i i . i i i i i i i i . / / + i i i + / . / + i i i + + / . i i i i i i i i . / / + i i i + / . / / + i i i + / . / + i i i + + / . i i i i i i i i . / / + i i i + / . / + i i i + + / . i i i i i i i i . / / + i i i i i . i i i i i + + / . / + i i i i + / . i i i i i i i i . i i i i i i + / . / + i i i i i i . / + i i i i i i . / 6 + i i i i i . i i i i i + + 6 . i i i i i + / 6 . ! + i i i i i i . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". 6 + i i i i i i . i i i i i i i i . + + i i i + { + . + + + i i i + + . i i i i i i i i . + + + i i i + + . + + i i i + { + . + + + i i i + + . i i i i i i i i . + + i i i + { + . + + + i i i + + . i i i i i i i i . + + i i i i i i . i i i i i i { + . + + i i i + { + . i i i i i i i i . i i i i i + { + . + + + i i i i i . 6 + + i i i i i . 6 + i i i i i i . i i i i i i { + . i i i i i i + + . ! ~ + i i i i i . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". / + i i i + + + . + + + + + + + + . K + i i i + { + . K + + i i i + + . + + + + + + + + . K + + i i i + + . K + i i i + { + . K + + i i i + + . + + + + + + + + . K + i i i + { + . K + + i i i + + . + + + + + + + + . K + i i i + + + . + + + i i i + + . K + i i i + { + . + + + + + + + + . + + + + + { { + . K + { + + + + + . / + { + + + + + . / + i i i + + + . + + + i i i + + . + + + i i % + ~ . ! ! ~ + + + + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + i i i + / 6 / . 6 / 6 / 6 / 6 / . + i i i + { { + . + + { + i i i + . + + { { { { { + . + + + i i i + + . + i i i + { { + . + + { + i i i + . + + { { { { { + . + i i i + { { + . + + { + i i i + . + + { { { { { + . + i i i + { { + . + + { + i i i + . + i i i + { { + . + + { { { { { + . + + { { { { { + . + + { { { { { + . 6 + { { { { { + . + i i i + { { + . + + { + i i i + . 6 / 6 + % % % + . ~ ' ! ! ! ' ~ + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". i i i + / 6 / 6 . / 6 / 6 / 6 / 6 . i i i + { { + K . K K + { + i i i . K K + { { { + K . K K + i i i + K . i i i + { { + 6 . / 6 + { + i i i . K K + { { { + K . i i i + { { + K . K K + { + i i i . K K + { { { + 6 . i i i + { { + K . K K + { + i i i . i i i + { { + K . K K + { { { + K . K K + { { { + K . K K + { { { + K . / 6 + { { { + K . i i i + { { + K . K K + { + i i i . / 6 / + + % % % . + + ~ ' ! ! ! ~ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". i i i + 6 / 6 / . 6 / 6 / 6 / 6 / . i i i + + + + + . + K + + + i i i . + K + + + + + + . + K + i i i + + . i i i + + + 6 / . 6 / 6 + + i i i . + K + + + + + + . i i i + + + + + . + K + + + i i i . + K + + + + 6 / . i i i + + + + + . + K + + + i i i . i i i + + + + + . + K + + + + + + . + K + + + + + + . + K + + + + + + . 6 / + + + + + + . i i i + + + + + . + K + + + i i i . 6 / + ~ + % % % . m.A + + ~ ' ! ' . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". i i + 6 / 6 / 6 . + + + + + + + + . i i + ( ( + _ _ . _ + ( ( ( + i i . _ + ( ( ( + _ _ . _ + + i i i + _ . i i + 6 / 6 / 6 . / 6 / 6 / + i i . _ + ( ( ( + _ _ . i i + ( ( + _ _ . _ + ( ( ( + i i . _ + ( ( ( + / 6 . i i + ( ( + _ _ . _ + ( ( ( + i i . i i + ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . _ + ( ( ( + _ _ . / + ( ( ( + _ _ . i i + ( ( + _ _ . _ + ( ( ( + i i . + + ~ ! ! + % % . e m.A ` + + ~ ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". y.z.A.N.v y ) d.. 6 / 6 / 6 / 6 / . y.z.A.N.v y ) d.. 6 / + N.v y ) d.. y.z.A.N.v + 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / + N.v y ) d.. y.z.A.N.v + 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . y.z.A.N.v y + / . 6 + A.N.v y ) d.. 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . y.z.A.N.v y + / . 6 + A.N.v y ) d.. y.z.A.N.v y ) d.. y.z.A.N.v y ) d.. y.z.A.N.v y + z.. z.z.z.z.z.z.z.z.. z.+ A.N.v y ) d.. y.z.A.N.v y + z.. z.+ A.N.v y ) d.. y.z.A.N.v y ) d.. y.z.A.N.v y ) d.. y.z.A.N.v y ) d.. y.z.A.N.v y ) d.. y.z.A.+ m.A m.A . m.A m.+ v y ) d.. y.z.A.N.v y ) d.. ",
|
||||
". ].! Y e '.G o.p.. / 6 / 6 / 6 / 6 . ].! Y e '.G o.p.. / 6 + e '.G o.p.. ].! Y e '.+ / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 + e '.G o.p.. ].! Y e '.+ / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . ].! Y e '.G + 6 . / + Y e '.G o.p.. / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . ].! Y e '.G + 6 . / + Y e '.G o.p.. ].! Y e '.G o.p.. ].! Y e '.G o.p.. ].! Y e '.G o.+ . + + + + + + + + . + ! Y e '.G o.p.. ].! Y e '.G + z.. z.+ Y e '.G o.p.. ].! Y e '.G o.p.. ].! Y e '.G o.p.. ].! Y e '.G o.p.. ].! Y e '.G o.p.. ].! Y e + ` e m.. A ` + e '.G o.p.. ].! Y e '.G o.p.. ",
|
||||
". B.( [ O.P.Q.q.+.. + + + + + + + + . B.( [ O.P.Q.q.+.. 6 / + O.P.Q.q.+.. B.( [ O.P.+ 6 / . + + 6 / 6 / 6 / . 6 / 6 / 6 / + + . 6 / + O.P.Q.q.+.. B.( [ O.P.+ 6 / . + + + + + / 6 / . + + + + + + + + . + + + + + + + + . B.( [ O.P.Q.q.+ . + ( [ O.P.Q.q.+.. + + + + + + + + . + + + + + / 6 / . B.( [ O.P.Q.q.+ . + ( [ O.P.Q.q.+.. B.( [ O.P.Q.q.+.. B.( [ O.P.Q.q.+.. B.( [ O.P.Q.q.+.. B.( [ O.P.Q.q.+.. B.( [ O.P.Q.q.+.. B.( [ O.P.Q.+ z.. z.+ [ O.P.Q.q.+.. B.( [ O.P.Q.q.+.. B.( [ O.P.Q.q.+.. B.( [ O.P.Q.q.+.. B.( [ O.P.Q.q.+.. B.( [ O.P.+ m.A . m.A + O.P.Q.q.+.. B.( [ O.P.Q.q.+.. ",
|
||||
". y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. / 6 + S.4.T.-.r.. y F R.S.4.+ / 6 . y F + 6 / 6 / 6 . / 6 / 6 / + -.r.. / 6 + S.4.T.-.r.. y F R.S.4.+ / 6 . y F R.S.4.+ / 6 . y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.+ / 6 . y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.+ z.. z.+ R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.T.-.r.. y F R.S.4.+ A ` . e + R.S.4.T.-.r.. y F R.S.4.T.-.r.. ",
|
||||
". C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . 6 / + {.t W.8.] . C.U.V.{.t + 6 / . C.U.V.+ 6 / 6 / . 6 / 6 / + W.8.] . 6 / 6 + t W.8.] . C.U.V.{.+ / 6 / . C.U.V.{.t W.+ / . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.+ / . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.+ z.. z.+ V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.8.] . C.U.V.{.t W.+ A . + U.V.{.t W.8.] . C.U.V.{.t W.8.] . ",
|
||||
". D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . / 6 + X.R s.` d . D.,./.X.R + / 6 . D.,./.+ / 6 / 6 . / 6 / 6 + s.` d . / 6 / + R s.` d . D.,./.X.+ 6 / 6 . D.,./.X.R s.+ 6 . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.+ 6 . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.+ z.. z.+ /.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` d . D.,./.X.R s.` + . + ,./.X.R s.` d . D.,./.X.R s.` d . ",
|
||||
". a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . 6 / + | Z.z.t.j . a.Y.|.| Z.+ 6 / . a.Y.|.| + / 6 / . 6 / 6 + Z.z.t.j . 6 / 6 / + z.t.j . a.Y.|.+ 6 / 6 / . a.Y.|.| Z.z.+ / . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.+ / . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.+ z.. z.+ |.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.+ . a.Y.|.| Z.z.t.j . a.Y.|.| Z.z.t.j . ",
|
||||
". E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . / 6 + +^.9.C.X . E.`.C +^.+ / 6 . E.`.C ++ 6 / 6 . / 6 / + ^.9.C.X . / 6 / 6 + 9.C.X . E.`.C + / 6 / 6 . E.`.C +^.9.+ 6 . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.+ 6 . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.+ z.. z.+ C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . + `.C +^.9.C.X . E.`.C +^.9.C.X . E.`.C +^.9.C.X . + `.C +^.9.C.+ . ",
|
||||
". < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. 6 / + c n.`.F.G.. < < .+c n.+ 6 / . < < .+c n.+ 6 / . 6 / + c n.`.F.G.. 6 / 6 / 6 + F.G.. < < + / 6 / 6 / . < < .+c n.+ 6 / . < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.+ 6 / . < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.+ z.. z.+ .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. m.+ .+c n.`.F.G.. < < .+c n.`.F.G.. < < .+c n.`.F.G.. m.+ .+c n.`.+ A . ",
|
||||
". 9.I.0., ).z J.H.. 9.I.0., ).z J.H.. + + + + + + + + . / 6 + , ).z J.H.. 9.I.0., ).+ / 6 . 9.I.0., ).+ / 6 . / 6 + , ).z J.H.. / 6 / 6 / 6 + + . + + / 6 / 6 / 6 . + + + + + 6 / + . 9.I.0., ).z J.+ . + I.0., ).z J.H.. + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + 6 / 6 . 9.I.0., ).z J.H.. 9.I.0., ).z J.H.. + I.0., ).z J.H.. 9.I.0., ).z J.+ . 9.I.0., ).z J.H.. 9.I.0., ).z J.H.. 9.I.0., ).z J.H.. 9.I.0., ).z + z.. z.+ 0., ).z J.H.. 9.I.0., ).z J.H.. 9.I.0., ).z J.H.. 9.I.0., ).z J.H.. A + 0., ).z J.H.. 9.I.0., ).z J.H.. 9.I.0., ).z J.H.. A + 0., ).z + m.. ",
|
||||
". K.u.v.R -.w.A 3 . K.u.v.R -.w.A 3 . 6 / 6 / 6 / 6 / . 6 / + R -.w.A 3 . K.u.v.R -.+ 6 / . K.u.v.R -.+ 6 / . 6 / + R -.w.A 3 . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . K.u.v.R -.w.+ / . 6 + v.R -.w.A 3 . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . K.u.v.R -.w.A 3 . K.u.v.R -.w.A 3 . 6 + v.R -.w.A 3 . K.u.v.R -.w.+ / . K.u.v.R -.w.A 3 . K.u.v.R -.w.A 3 . K.u.v.R -.w.A 3 . K.u.v.R -.w.+ z.. z.+ v.R -.w.A 3 . K.u.v.R -.w.A + . + + + + + + + + . + u.v.R -.w.A 3 . m.A + R -.w.A 3 . K.u.v.R -.w.A 3 . K.u.v.R -.w.A 3 . m.A + R -.+ m.A . ",
|
||||
". L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. / 6 / 6 / 6 / 6 . / 6 + x.3 [ s M.. L.c.c x.3 + / 6 . L.c.c x.3 + / 6 . / 6 + x.3 [ s M.. / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 + i . L.c.c x.3 [ + 6 . / + c x.3 [ s M.. / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. / + c x.3 [ s M.. L.c.c x.3 [ + 6 . L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ + z.. z.+ c x.3 [ s M.. L.c.c x.3 [ + z.. z.z.z.z.z.z.z.z.. z.+ c x.3 [ s M.. e m.A + 3 [ s M.. L.c.c x.3 [ s M.. L.c.c x.3 [ s M.. e m.A + + m.A ` . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". y.z.A.N.v y ) d.. y.z.A.N.v + 6 / . 6 / + ' ! ' + / . y.z.A.N.v y ) d.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + + + + + + + + . i i + / 6 + i i . 6 / 6 / r k r k . = + # + # + = = . = + # + # + ) ) . 6 / 6 / 6 / 6 / . m.A m.A m.A m.A . y.z.A.N.v y + + . = + # + # + = = . 6 / 6 / 6 / 6 / . 6 # # + # + = = . r k r k r k r k . ' + m.A m.A + ' . z.z.z.z.z.z.z.z.. = # # # # # = = . ! ' ' ' ' ' ! ! . 6 # # + # + = = . m.# + + + # m.A . r # # + # + = = . y.+ + + v y ) d.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". ].! Y e '.G o.p.. ].! Y e '.+ / 6 . / + ~ ! ! ' + 6 . ].! Y e '.! ' ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + ) % # ) # % + . i i + 6 / + i i . / 6 / 6 / 6 k r . = = + % + = = = . = = + % + + ) ) . / 6 / 6 / 6 / 6 . A ` e m.A ` e m.. ].! Y + + + / 6 . = = + + + = = = . / 6 / + + 6 / 6 . / 6 + + + = = = . k r k + + r k r . ~ + e + + ` + ~ . z.z.z.+ + z.z.z.. = = = = = = = = . ~ + + + + + ~ ! . / 6 + $ + $ = = . A + 1 1 1 + e m.. k r + % + = = = . + ` e m.+ G o.p.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". B.( [ O.P.Q.q.+.. B.( [ O.P.+ 6 / . + ~ ! ! ! ' + / . B.( [ O.P.! ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + % ) # ) # ) + . i i + + + + i i . 6 + + + + + + k . = + + + + + + + . = + + + + + + + . 6 + + + + + + / . m.+ + + + + + A . B.+ + + + + + / . = + + = = + = + . 6 / + = = + 6 / . 6 + + = = + = + . r k + = = + r k . + A + = = + m.+ . z.z.+ = = + z.z.. + + = + + = + + . + + % + % + + ' . 6 + $ $ $ $ $ + . m.+ + + + + m.+ . r + % % + + = + . + + + + + + + +.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". y F R.S.4.T.-.r.. y F R.S.4.+ / 6 . y F ! ! ! ~ + 6 . y F ' c ! ! ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + ) ) * * * * + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . + + = = = = + > . + + = = = = + 6 . + + = = = = + > . k + = = = = + r . e + = = = = + ` . z.+ = = = = + z.. + + = + + = + + . + % + ; + % + ' . + $ + + + + $ $ . A + $ $ $ + A > . k % % + * + + > . + > > > > # + r.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". C.U.V.{.t W.8.] . C.U.V.{.+ / 6 / . C.U.V.! ' + 6 / . C.U.V.c ' ! ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + * * * ) ) ) + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + = = = = = > + . + = = = = = = + . + = = = = = = + . + = = = = = = + . + = = = = = = + . + = = = = = = + . + + + + + + + + . > + % ; % + + ' . > + & & & & + $ . + $ $ $ $ $ + > . r % + * * * + > . + > = = # ) + ] . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". D.,./.X.R s.` d . D.,./.X.+ 6 / 6 . D.,./.! ' + / 6 . D.,./.' ! c ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + % % * % % ) + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + * % * % * % + . > + > ++> + + ' . > + & & & & + $ . + $ $ $ $ $ + > . k + * + + + * + . + > = . $ ) + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". a.Y.|.| Z.z.t.j . a.Y.|.+ 6 / 6 / . a.Y.|.| ' + 6 / . a.Y.|.! ' ! ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + % % * ) ) # + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . + * ) ) ) ) * + . > + = $ $ = + + . > + = $ $ = + / . > + = $ $ = + + . r + = $ $ = + k . m.+ = $ $ = + A . z.+ = $ $ = + z.. + % + + + + * + . > $ ++++++$ + ' . > + & & & $ + + . $ $ $ $ $ $ $ + . + * + ) k r + + . + > # $ $ ) + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". E.`.C +^.9.C.X . E.`.C + / 6 / 6 . E.`.C +' + / 6 . E.`.C +|.! ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + * * * * * * + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + % # ) ) # % + . + + = $ $ = + $ . + + = $ $ = + 6 . + + = $ $ = + $ . k + = $ $ = + r . e + = $ $ = + ` . z.+ = $ $ = + z.. + * + & & + % + . + N ++++++N + ' . + + & & $ % + $ . $ $ $ $ $ $ $ $ . * * + ) ) ) + $ . + # ) ) ) ) + ` . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". < < .+c n.`.F.G.. < < + / 6 / 6 / . < < .+c n.+ 6 / . < < .+c ! ' ! ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + ) ) * ) * ) + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . + ) % * * % ) + . $ + = $ $ = + $ . $ + = $ $ = + / . $ + = $ $ = + $ . r + = $ $ = + k . m.+ = $ $ = + A . z.+ = $ $ = + z.. + % + & & + * + . + +++++++++++ ' . $ + & % % % + $ . $ $ $ + $ $ $ $ . * * + ) ) + $ $ . + + + + + + + A . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". 9.I.0., ).+ + + . + + / 6 / 6 / + . 9.I.0., ).+ / 6 . 9.I.0., ).! c ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + ) ) * # * ) + . i i + + + + + K . / + + + + + + r . + + + + + + + + . + + + + + + + + . / + + + + + + + . + + + + + + + m.. 9.+ + + + + + 6 . $ + = $ $ = + $ . $ + = $ $ = + + . $ + = $ $ = + $ . k + = $ $ = + r . A + = $ $ = + m.. z.+ = $ $ = + z.. + * + & $ + % + . + ++++++++++) ' . $ + + + + + + $ . $ $ + # + $ $ $ . k * + + + $ $ $ . 9.+ e m.A + e m.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". K.u.v.+ + / 6 / . 6 / 6 / 6 / 6 + . K.u.v.R -.+ 6 / . K.u.v.R -.w.A ! . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + % % * ) * * + . i i i + + + + + . 6 / 6 / 6 / r k . + $ 6 / + i i i . + $ 6 / + i i i . 6 / 6 / 6 / 6 + . + A m.A m.A m.A . K.u.+ + 6 / 6 / . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ++&.++&.++&.% ' . $ $ # # # $ $ + . $ + # # # + $ $ . r + * * * + $ + . K.u.+ + + A m.A . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + + + 6 / 6 / 6 . / 6 / 6 / 6 + i . L.c.c x.3 + / 6 . L.c.c x.3 [ s M.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . + + + + + + + + . i i + ( ( + _ _ . / 6 / r k r k r . ~ + / 6 / + i i . ~ + / 6 / + i i . / 6 / 6 / 6 + ~ . ~ + A ` e m.A ` . L.c.c x.+ + + + . _ + ( ( ( + _ _ . + # # # # # + ~ . / # # # # # + = . k r k r k r k r . e m.A ` e m.A ` . z.z.z.z.z.z.z.z.. + # # # # + ) ) . + + + + + + + ' . / # # # # # + = . A # # # # # A ` . k # + # + # + = . L.c.c + e m.A ` . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". y.+ Q Q Q + g g . g + Q Q Q + ) d.. g + Q Q Q + g g . g + Q Q Q + g g . y.+ Q Q Q + g g . g + Q Q Q + ) d.. 6 / 6 / 6 / 6 / . 6 + Q Q Q + g g . g + Q Q Q + 6 / . 6 + Q Q Q + g g . g + Q Q Q + 6 / . g + Q Q Q + g g . g + Q Q Q + g g . 6 + Q Q Q + g g . g + Q Q Q + 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 + Q Q Q + 6 / . 6 / 6 / 6 / 6 / . g + Q Q Q + 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 + Q Q Q + 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 / . 6 + Q Q Q + g g . g + Q Q Q + 6 / . 6 + Q Q Q + 6 / . g + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + g g . ",
|
||||
". ].+ Q Q Q + g g . g + Q Q Q + o.p.. g + Q Q Q + g g . g + Q Q Q + g g . ].+ Q Q Q + g g . g + Q Q Q + o.p.. / 6 / 6 / 6 / 6 . / + Q Q Q + g g . g + Q Q Q + / 6 . / + Q Q Q + g g . g + Q Q Q + / 6 . g + Q Q Q + g g . g + Q Q Q + g g . / + Q Q Q + g g . g + Q Q Q + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / + Q Q Q + / 6 . / 6 / 6 / 6 / 6 . g + Q Q Q + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / + Q Q Q + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / + Q Q Q + g g . g + Q Q Q + / 6 . / + Q Q Q + / 6 . g + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + g g . ",
|
||||
". + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . B.( + + + l.+ + . + + + + + l.+ +.. + + 6 / 6 / 6 + . 6 / + + + l.+ + . + + + + + l.+ / . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + 6 / 6 / 6 + . + + 6 / 6 / 6 + . 6 / + + + l.+ / . + + 6 / 6 / 6 + . + + + + + l.+ + . 6 / 6 / 6 / 6 + . + + 6 / 6 / 6 / . 6 / + + + l.+ / . 6 / 6 / 6 / 6 / . 6 / 6 / 6 / 6 + . + + 6 / 6 / 6 / . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . ",
|
||||
". 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. y F + l.l.l.+ 2.. 2.2.+ l.l.l.+ r.. 2.2.+ 6 / 6 + 2.. / 6 + l.l.l.+ 2.. 2.2.+ l.l.l.+ 6 . 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ 6 / 6 + 2.. 2.2.+ 6 / 6 + 2.. / 6 + l.l.l.+ 6 . 2.2.+ 6 / 6 + 2.. 2.2.+ l.l.l.+ / . / 6 / 6 / 6 + 2.. 2.2.+ 6 / 6 / 6 . / 6 + l.l.l.+ 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 + 2.. 2.2.+ 6 / 6 / 6 . 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. ",
|
||||
". 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. C.U.V.+ + + + 2.. 2.2.+ + + + + ] . 2.2.+ + + + + 2.. 6 / 6 + + + + 2.. 2.2.+ + + + + / . 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 6 / 6 + + + + / . 2.2.+ + + + + 2.. 2.2.+ + + + + / . 6 / 6 + + + + 2.. 2.2.+ + + + 6 / . 6 / 6 + + + + / . 6 / 6 + + + 6 / . 6 / 6 + + + + 2.. 2.2.+ + + + 6 / . 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. ",
|
||||
". 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. D.,.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ d . 2.2.+ 4.4.4.+ 2.. / 6 + 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 6 . 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. / 6 + 4.4.4.+ 6 . 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ / . / 6 + 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 6 . 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. ",
|
||||
". + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . a.+ 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . ",
|
||||
". n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . E.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . / + 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . / + 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . / + 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . / + 4.4.4.4.4.+ . / + 4.4.4.4.4.+ . / + 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . ",
|
||||
". + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . < + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . ",
|
||||
". l.l.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ l.. 9.I.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ H.. 9.I.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ H.. l.l.+ 4.4.4.+ l.. / 6 + 4.4.4.+ l.. l.l.+ 4.4.4.+ 6 . l.l.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ l.. / 6 + 4.4.4.+ l.. l.l.+ 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ l.. l.l.+ 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ l.. / 6 + 4.4.4.+ l.. l.l.+ 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ l.. l.l.+ 4.4.4.+ 6 . l.l.+ 4.4.4.+ l.. / 6 + 4.4.4.+ 6 . l.l.+ 4.4.4.+ + . + l.+ 4.4.4.+ l.. ",
|
||||
". + l.+ + + + + + . + l.+ + + + + + . K.u.+ + + + + + . + l.+ + + + A 3 . K.u.+ + + + + + . + l.+ + + + A 3 . + l.+ + + + + + . 6 / + + + + + + . + l.+ + + + 6 / . + l.+ + + + + + . + l.+ + + + + + . 6 / + + + + + + . + l.+ + + + 6 / . 6 / 6 + + + 6 / . 6 / 6 + + + 6 / . 6 / + + + + + + . + l.+ + + + 6 / . 6 / + + + + 6 / . 6 / 6 + + + 6 / . 6 / + + + + + + . 6 / + + + + + + . + l.+ + + + 6 / . 6 / 6 + + + 6 / . 6 / + + + + 6 / . 6 / 6 + + + 6 / . 6 / 6 + + + 6 / . 6 / + + + + + + . + l.+ + + + 6 / . + l.+ + + + + + . 6 / + + + + 6 / . + l.+ + + + + + . + l.+ + + + + + . ",
|
||||
". g + Q Q Q + g g . g + Q Q Q + g g . L.+ Q Q Q + g g . g + Q Q Q + s M.. L.+ Q Q Q + g g . g + Q Q Q + s M.. g + Q Q Q + g g . / + Q Q Q + g g . g + Q Q Q + / 6 . g + Q Q Q + g g . g + Q Q Q + g g . / + Q Q Q + g g . g + Q Q Q + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / + Q Q Q + g g . g + Q Q Q + / 6 . / + Q Q Q + / 6 . / 6 / 6 / 6 / 6 . / + Q Q Q + g g . / + Q Q Q + g g . g + Q Q Q + / 6 . / 6 / 6 / 6 / 6 . / + Q Q Q + / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / + Q Q Q + g g . g + Q Q Q + / 6 . g + Q Q Q + g g . / + Q Q Q + / 6 . g + Q Q Q + + ~ . ~ + Q Q Q + g g . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". g + Q Q Q + + ' . ' + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + g g . 6 + Q Q Q + g g . g + Q Q Q + 6 / . g + Q Q Q + g g . y.z.A.N.v y ) d.. g + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + + ' . ' + Q Q Q + g g . 6 / 6 / 6 / + ' . ' + Q Q Q + g g . 6 / 6 / 6 / 6 / . 6 + Q Q Q + + ' . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". g + Q Q Q + + ~ . ~ + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + g g . / + Q Q Q + g g . g + Q Q Q + / 6 . g + Q Q Q + g g . ].! Y e '.G o.p.. g + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + + ~ . ~ + Q Q Q + g g . / 6 / 6 / 6 + ~ . ~ + Q Q Q + g g . / 6 / 6 / 6 / 6 . / + Q Q Q + + ~ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . 6 / + + + l.+ + . + + + + + l.+ / . + + + + + l.+ + . + + [ O.P.Q.q.+ . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + + + + l.+ + . + + 6 / 6 / 6 + . + + + + + l.+ + . + + 6 / 6 / 6 + . 6 / + + + l.+ + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". 2.2.+ l.l.l.+ / . 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. / 6 + l.l.l.+ 2.. 2.2.+ l.l.l.+ 6 . 2.2.+ l.l.l.+ 2.. 2.2.+ S.4.T.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ 6 / 6 + 2.. 2.2.+ l.l.l.+ 2.. 2.2.+ 6 / 6 + 2.. / 6 + l.l.l.+ 2.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". 2.2.+ + + + + / . 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 6 / 6 + + + + 2.. 2.2.+ + + + + / . 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 2.2.+ + + + + 2.. 6 / 6 + + + + 2.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". 2.2.+ 4.4.4.+ / . 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. / 6 + 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 6 . 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. 2.2.+ 4.4.4.+ 2.. / 6 + 4.4.4.+ 2.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . / + 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . n.+ 4.4.4.4.4.+ . / + 4.4.4.4.4.+ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . + + 4.4.4.4.4.+ . 6 + 4.4.4.4.4.+ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". l.l.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ l.. / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . / 6 + 4.4.4.+ 6 . 9.I.+ 4.4.4.+ H.. l.l.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ + . + l.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ l.. l.l.+ 4.4.4.+ l.. + l.+ 4.4.4.+ l.. + l.+ 4.4.4.+ l.. / 6 + 4.4.4.+ l.. @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". + l.+ + + + + + . + l.+ + + + + + . + l.+ + + + + + . 6 / 6 + + + 6 / . 6 / 6 + + + 6 / . 6 / 6 + + + 6 / . K.u.v.+ + + A 3 . + l.+ + + + + + . + l.+ + + + + + . + l.+ + + + + + . + l.+ + + + + + . + l.+ + + + + + . + l.+ + + + + + . + l.+ + + + + + . + l.+ + + + + + . 6 / + + + + + + . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". g + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + g g . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . / 6 / 6 / 6 / 6 . L.c.c x.3 [ s M.. g + Q Q Q + g g . g + Q Q Q + + ~ . ~ + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + g g . g + Q Q Q + g g . ~ + Q Q Q + g g . ~ + Q Q Q + g g . / + Q Q Q + g g . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". + + + + + + + + . + + + + + + + + . + g g + g g + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + _ g _ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + g g + g g + + . + + + + + + + + . + + ^ g ^ + + + . _ g _ + + + + + . + + ^ g ^ + + + . + + _ g _ + + + . + + + + g g + + . + + g g + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + g g + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + g g + + + . + g g + g g + + . + g g + g g + + . + g g g g g + + . g + g + + + + + . + g g g g g + + . + + _ g _ + + + . + + + g g + + + . + + + g g + + + . + + + + + + + + . + + ^ _ ^ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + g g + . + g g g g g + + . + + g g _ + + + . + g g g g g + + . + g g g g g + + . g g + + g g + + . g g g g g g g + . + g g g g g + + . g g g g g g g + . + g g g g g + + . + g g g g g + + . + + + + + + + + . + + + + + + + + . + + + + g g + + . + + + + + + + + . + g g + + + + + . + g g g g g + + . ",
|
||||
". + + + + + + + + . + + + g g + + + . + + + + + + + + . + g g + g g + + . g _ ^ g ^ _ g + . _ g _ + + g g + . g _ ^ g ^ _ g + . + + + + + + + + . + + _ g _ + + + . + + + _ g _ + + . + g g + g g + + . + + _ g _ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + g g + + . g g + + + g g + . + g g g _ + + + . g g + + + g g + . g g + + + g g + . g g + + g g + + . g g + + + + + + . g g + + + g g + . + + + + + g g + . g g + + + g g + . g g + + + g g + . + + + g g + + + . + + + + + + + + . + + + g g + + + . + + + + + + + + . + + g g + + + + . g g + + + g g + . ",
|
||||
". + + + + + + + + . + + + g g + + + . + + + + + + + + . g g g g g g g + . g _ ^ g ^ + + + . + + + + g g + + . g _ ^ g ^ + + + . + + + + + + + + . + + g g + + + + . + + + + g g + + . + + g g g + + + . + + _ g _ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + g g + + . g g + + g g g + . + + _ g _ + + + . + + + + + g g + . + + + + + g g + . g g + + g g + + . g g + + + + + + . g g + + + + + + . + + + + g g + + . g g + + + g g + . g g + + + g g + . + + + g g + + + . + + + + + + + + . + + g g + + + + . _ g g g g g _ + . + + + g g + + + . + + + + + g g + . ",
|
||||
". + + + + + + + + . + + + g g + + + . + + + + + + + + . + g g + g g + + . + g g g g g + + . + + + g g + + + . + g g g g g + + . + + + + + + + + . + + g g + + + + . + + + + g g + + . g g g g g g g + . g g g g g g g + . + + + + + + + + . _ g g g g g _ + . + + + + + + + + . + + + g g + + + . g g + g g g g + . + + _ g _ + + + . + + + + g g + + . + + { 4.4.4./ + . g g + + g g + + . g g g g g g + + . g g g g g g + + . + + + + g g + + . + g g g g g + + . g g + + + g g + . + + + + + + + + . + + + g g + + + . + g g + + + + + . + + + + + + + + . + + + + g g + + . + + + _ g _ + + . ",
|
||||
". + + + + + + + + . + + + g g + + + . + + + + + + + + . + g g + g g + + . + + ^ g ^ _ g + . + + g g + + + + . g _ ^ g ^ + + + . + + + + + + + + . + + g g + + + + . + + + + g g + + . + + g g g + + + . + + _ g _ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + g g + + + . g g g g + g g + . + + _ g _ + + + . + + + g g + + + . + + { 4.4.4./ + . g g g g g g g + . + + + + + g g + . g g + + + g g + . + + + g g + + + . g g + + + g g + . + g g g g g g + . + + + + + + + + . + + + g g + + + . + + g g + + + + . + + + + + + + + . + + + g g + + + . + + _ g _ + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . g g g g g g g + . g _ ^ g ^ _ g + . + g g + + + + + . g _ ^ g ^ _ g + . + + + + + + + + . + + g g + + + + . + + + + g g + + . + g g + g g + + . + + _ g _ + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + g g + + + + . g g g + + g g + . + + _ g _ + + + . + + g g + + + + . + + + + + g g + . + + + + g g + + . + + + + + g g + . g g + + + g g + . + + + g g + + + . g g + + + g g + . + + + + + g g + . + + + g g + + + . + + + + + + + + . + + + g g + + + . _ g g g g g _ + . + + g g + + + + . + + _ g _ + + + . ",
|
||||
". + + + + + + + + . + + + g g + + + . + + + + + + + + . + g g + g g + + . + g g g g g + + . g g + + _ g _ + . + g g g g g + + . + + + + + + + + . + + _ g _ + + + . + + + _ g _ + + . + + + + + + + + . + + ^ _ ^ + + + . + + + g g + + + . + + + + + + + + . + + + g g + + + . + + g g + + + + . g g + + + g g + . + + _ g _ + + + . + g g + + + + + . g g + + + g g + . + + + + g g + + . g g + + + g g + . g g + + + g g + . + + g g + + + + . g g + + + g g + . g g + + + g g + . + + + g g + + + . + + + g g + + + . + + + + g g + + . + + + + + + + + . + g g + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + g g + + + . + + + + + + + + . + g g + g g + + . + + ^ g ^ + + + . + + + + g + g + . + + ^ g ^ + + + . + + + + + + + + . + + + g g + + + . + + + g g + + + . + + + + + + + + . + + + + + + + + . + + + g g + + + . + + + + + + + + . + + + g g + + + . + g g + + + + + . + g g g g g + + . + g g g g g + + . g g g g g g g + . + g g g g g + + . + + + + g g + + . + g g g g g + + . + g g g g g + + . + + g g + + + + . + g g g g g + + . + g g g g g + + . + + + + + + + + . + + + g g + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + _ g _ + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + _ g _ + . + + + + + + + + . + + + + + + + + . + + + + g g + + . + + g g + + + + . + + + + + + + + . + + + + + + + + . + + g g + + + + . + + + + + + + + . + + + + + + + + . + g g + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + g g + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + g g + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + g g + + + + + . + + + + + + + + . + + g g g g + + . + + + + + + + + . ",
|
||||
". + ( g g g ( + + . + g g g g g + + . g g g g g g + + . + g g g g g + + . g g g g g g + + . g g g g g g g + . g g g g g g g + . + g g g g g + + . g g + + + g g + . g g g g g g g + . + + + + + g g + . g g + + + g g + . g g + + + + + + . g g + + + g g + . g g + + + g g + . + g g g g g + + . g g g g g g + + . + g g g g g + + . g g g g g g + + . + g g g g g + + . g g g g g g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g g g g g g + . + g g g g g + + . + g g + + + + + . + g g g g g + + . + g g + + g g + . + + + + + + + + . ",
|
||||
". ( ^ + + + ^ ( + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + + + + . g g + + + + + + . g g + + + g g + . g g + + + g g + . + + _ g _ + + + . + + + + + g g + . g g + + g g + + . g g + + + + + + . g g g + g g g + . g g g + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . + + _ g _ + + + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . + + + + + g g + . + g g + + + + + . + + g g + + + + . + + + + g g + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". g + _ g ( + g + . g g + + + g g + . g g + + + g g + . g g + + + + + + . g g + + + g g + . g g + + + + + + . g g + + + + + + . g g + + + + + + . g g + + + g g + . + + _ g _ + + + . + + + + + g g + . g g + g g + + + . g g + + + + + + . g g g g g g g + . g g g g + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + + + + . + + _ g _ + + + . g g + + + g g + . g g + + + g g + . g g + + + g g + . + g g + g g + + . g g + + + g g + . + + + + g g + + . + g g + + + + + . + + g g + + + + . + + + + g g + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". g + g + g + g + . g g g g g g g + . g g g g g g + + . g g + + + + + + . g g + + + g g + . g g g g g g + + . g g g g g g + + . g g + + + + + + . g g g g g g g + . + + _ g _ + + + . + + + + + g g + . g g g g + + + + . g g + + + + + + . g g + g + g g + . g g + g g g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . + g g g g g + + . + + _ g _ + + + . g g + + + g g + . g g + + + g g + . g g + + + g g + . + + g g g + + + . + g g + g g + + . + + + g g + + + . + g g + + + + + . + + + g g + + + . + + + + g g + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". g + g + g + g + . g g + + + g g + . g g + + + g g + . g g + + + + + + . g g + + + g g + . g g + + + + + + . g g + + + + + + . g g + + g g g + . g g + + + g g + . + + _ g _ + + + . + + + + + g g + . g g g g + + + + . g g + + + + + + . g g + + + g g + . g g + + g g g + . g g + + + g g + . g g g g g g + + . g g + + + g g + . g g g g g g + + . + + + + + g g + . + + _ g _ + + + . g g + + + g g + . g g + + + g g + . g g + g + g g + . + + g g g + + + . + + g g g + + + . + + g g + + + + . + g g + + + + + . + + + g g + + + . + + + + g g + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". g + _ g g g _ + . g g + + + g g + . g g + + + g g + . g g + + + + + + . g g + + + g g + . g g + + + + + + . g g + + + + + + . g g + + + g g + . g g + + + g g + . + + _ g _ + + + . g g + + + g g + . g g + g g + + + . g g + + + + + + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + + + + . g g + g g + g + . g g + g g + + + . + + + + + g g + . + + _ g _ + + + . g g + + + g g + . + g g + g g + + . g g g g g g g + . + g g + g g + + . + + _ g _ + + + . + g g + + + + + . + g g + + + + + . + + + + g g + + . + + + + g g + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". ( ^ + + + + + + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + + + + . g g + + + + + + . g g + + + g g + . g g + + + g g + . + + _ g _ + + + . g g + + + g g + . g g + + g g + + . g g + + + + + + . g g + + + g g + . g g + + + g g + . g g + + + g g + . g g + + + + + + . g g + + g g + + . g g + + g g + + . g g + + + g g + . + + _ g _ + + + . g g + + + g g + . + + g g g + + + . g g g + g g g + . g g + + + g g + . + + _ g _ + + + . g g + + + + + + . + g g + + + + + . + + + + g g + + . + + + + g g + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + ( g g g g + + . g g + + + g g + . g g g g g g + + . + g g g g g + + . g g g g g g + + . g g g g g g g + . g g + + + + + + . + g g g g g + + . g g + + + g g + . g g g g g g g + . + g g g g g + + . g g + + + g g + . g g g g g g g + . g g + + + g g + . g g + + + g g + . + g g g g g + + . g g + + + + + + . + g g g + g g + . g g + + + g g + . + g g g g g + + . + + _ g _ + + + . + g g g g g + + . + + + g + + + + . g g + + + g g + . g g + + + g g + . + + _ g _ + + + . g g g g g g g + . + g g g g g + + . + + + + + g g + . + g g g g g + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + g g + . + + + + + + + + . + + + + + + + + . + + + + + + + + . ",
|
||||
". + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . + + + + + + + + . g g g g g g g g . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "};
|
BIN
lib/scroll1.txt
Normal file
BIN
lib/scroll1.txt
Normal file
Binary file not shown.
BIN
lib/scroll2.txt
Normal file
BIN
lib/scroll2.txt
Normal file
Binary file not shown.
BIN
lib/scroll3.txt
Normal file
BIN
lib/scroll3.txt
Normal file
Binary file not shown.
BIN
lib/scroll4.txt
Normal file
BIN
lib/scroll4.txt
Normal file
Binary file not shown.
32
lib/thanks.txt
Normal file
32
lib/thanks.txt
Normal file
@ -0,0 +1,32 @@
|
||||
Thanks to:
|
||||
|
||||
Ben, Greg, Hammy, Izchak, Nathan, and Silver, for bug reports,
|
||||
playtesting, suggestions, debugging, and general advice.
|
||||
|
||||
Thanks to the army of players and debuggers of versions 0.6
|
||||
and 0.7; I predict a lot more work for you now....
|
||||
|
||||
More thanks to Nathan Glasser for the PC port, bugfixes, etc., without
|
||||
whose enthusiasm there would be no version 0.75
|
||||
|
||||
A number of people have sent patches and constructive criticism for
|
||||
version 0.78. Thanks go to John Green, Daniel Packman,
|
||||
Tero Jyri Michael Pelander, Rupert G. Goldie, Chris Herborth and
|
||||
Charles William Swiger.
|
||||
|
||||
Also, a few thanks to the people who reported problems with 0.78.1,
|
||||
making 0.79 possible: Geoff Dunbar and Mark G. Rodenkirch.
|
||||
|
||||
The list of people who sent me bug reports and patches allowing 0.80
|
||||
is quite long. Firstly, I must thank Julian Neil for playtesting
|
||||
omega 0.80, not even complaining when told "this change will invalidate
|
||||
your save file... again."
|
||||
Thanks also go to: Morten V. Christiansen, Stuart Craig, William Flynn,
|
||||
David Gibbs, Peter Hill, Ken Iwasa, Stefan Krabbe, Aaron Mandelbaum,
|
||||
Mark Morgan, Kent Peterson, Bryan Rendell, Zik Saleeba, Craig Sanders,
|
||||
Jeremy Seip, Billy Tanksley and Patrick A Walsh.
|
||||
|
||||
For the patches to 0.80, thanks go to: Alan L. Bostick, William Fang,
|
||||
Djuara Kurniawan, Alan Light (bugs mentioned in his Omega spoiler file),
|
||||
John O'Hare, Daniel Phillips, Ian Richards, Kevin W. Thomas, John Tomicich.
|
||||
|
80
lib/update.txt
Normal file
80
lib/update.txt
Normal file
@ -0,0 +1,80 @@
|
||||
Version Changes
|
||||
======= =======
|
||||
|
||||
Produced by Laurence Brothers (brothers@paul.rutgers.edu)
|
||||
|
||||
0.57(alpha) First public release
|
||||
|
||||
0.58(alpha) bugfixes, I forget what else
|
||||
|
||||
0.59(alpha) bugfixes, better tactical combat mode ^c trapping
|
||||
|
||||
0.60(alpha) bugfixes, filechecking, cuserid changed to getlogin, brothel
|
||||
on city level, more foods. this file started. new time
|
||||
mechanism, new module otime.
|
||||
12/5/87.
|
||||
|
||||
0.70(alpha) architecture changed -- therefore most code rewritten. Only
|
||||
large-scale changes detailed here, otherwise too many to count.
|
||||
|
||||
Countryside; multiple dungeons; "special levels"; special
|
||||
screens for houses, the arena, and countryside encounters;
|
||||
single combat mode with different verbosity levels; no more
|
||||
filechecking for saved games; many new monsters; a few new
|
||||
items; new end game; new inventory modes, effects of many
|
||||
commands are different, some new commands added, other old
|
||||
ones removed. Commands and terrain characters have different
|
||||
meanings in countryside.
|
||||
3/22/88.
|
||||
|
||||
0.70.5(alpha) First 0.70 version released via ftp. Many bugs. Among other
|
||||
things, wouldn't work at all on a vax.
|
||||
3/22/88.
|
||||
|
||||
0.71 (beta) Rather different version of 0.70 now about to be released to
|
||||
usenet via comp.sources.games.
|
||||
7/11/88.
|
||||
|
||||
0.75 Somewhat bugfixed version of 0.71, with MS-DOS cpp code and
|
||||
makefile courtesy Nathan Glasser.
|
||||
5/4/89.
|
||||
|
||||
Produced by Robert Rendell (rendell@cs.monash.edu.au)
|
||||
|
||||
0.78 Rather more bugfixed version from 0.75. Put in support for
|
||||
uid swapping so omega may run suid. Removed the high scores
|
||||
from the player save file (weird...) Put in file locking on
|
||||
the high score file so file isn't corrupted by simultanious
|
||||
updates. Fixed many sundry bugs.
|
||||
3 Sept 93.
|
||||
|
||||
0.78.1 Fixed a number of bugs reported by various people.
|
||||
3 Oct 93.
|
||||
|
||||
0.79 Fixed a number of bugs, largely cosmetic, but also some
|
||||
serious ones, like the Justiciar restoring hostile to the
|
||||
player if the game was restored with the player in the
|
||||
country. Also closed possible avenue of gross cheating -
|
||||
someone in wizard mode could reset any game status bit,
|
||||
including the wizard bit, thus re-enableing their score...
|
||||
11 Feb 94.
|
||||
|
||||
0.80 Major changes, including merging the DJGPP and mainstream
|
||||
versions. Also saved games - I changed levels so only the
|
||||
seed and the changes made to the level are saved - the space
|
||||
saving achieved means that saving the entire dungeon is now
|
||||
feasable. Many other bugs fixed
|
||||
16 June 94.
|
||||
|
||||
0.80.1 Patch 1, fixing a few careless bugs in 0.80 - help files were
|
||||
changed in name and not all references to the old name updated,
|
||||
files were created that didn't adhere to MSDOS's stupid 8.3
|
||||
filename limit. Also fixed setoptions so it didn't crash
|
||||
when called from the character creation routines.
|
||||
28 June 94.
|
||||
|
||||
0.80.2 Patch 2: more bugfixes, mostly involving bugs with multiple
|
||||
items - there were several cases where conform_lost_object/s
|
||||
was called on an item that was then given to a monster or
|
||||
put in a safe, causing strange effects like piles of 0 size.
|
||||
|
210
map.c
Normal file
210
map.c
Normal file
@ -0,0 +1,210 @@
|
||||
/* Copyright 2000 William D. Tanksley Jr., licensed under the terms of the
|
||||
* Omega license as part of Omega. */
|
||||
#include "glob.h"
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
|
||||
#define MAP_VERSION 2
|
||||
#define MAP_HEADER_SIZE 3
|
||||
#define MAP_ITEM_SIZE 9
|
||||
|
||||
/* I plan to eventually make this code handle ALL map loading, since map
|
||||
* loading is largely similar. However, to keep from biting off more than
|
||||
* I can chew, I'm going to start by doing just a little bit at a time.
|
||||
*
|
||||
* For starters, I'm just going to have this load the map, and that's all. */
|
||||
struct symbolMapping
|
||||
{
|
||||
/* Which L_* to assign this character to. */
|
||||
int locationFunction;
|
||||
/* What argument (if any) to give to the function which constructs that
|
||||
* location. */
|
||||
int argument;
|
||||
};
|
||||
|
||||
struct map_type
|
||||
{
|
||||
int length, width, depth, offset;
|
||||
char *sites;
|
||||
#if 0
|
||||
struct symbolMapping symbols[128-32]; /* Only printable characters.
|
||||
* This does assume ASCII. */
|
||||
#endif
|
||||
};
|
||||
|
||||
void error(char *explanation, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, explanation);
|
||||
vfprintf (stderr, explanation, ap);
|
||||
va_end (ap);
|
||||
abort();
|
||||
}
|
||||
|
||||
int fgetint(FILE *f)
|
||||
{
|
||||
int x;
|
||||
assert(sizeof(int) == 4); /* This assumption is explicit here, but it's
|
||||
* also elsewhere. */
|
||||
x = fgetc(f) &0x000000FF;
|
||||
x|= (fgetc(f) << 8) &0x0000FF00;
|
||||
x|= (fgetc(f) <<16) &0x00FF0000;
|
||||
x|= (fgetc(f) <<24) &0xFF000000;
|
||||
|
||||
if ( feof(f) )
|
||||
error("Unexpected end of file while parsing binary file.");
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
int fgetshort(FILE *f)
|
||||
{
|
||||
int x;
|
||||
assert(sizeof(int) == 4); /* This assumption is explicit here, but it's
|
||||
* also elsewhere. */
|
||||
x = fgetc(f) &0x000000FF;
|
||||
x|= (fgetc(f) << 8) &0x0000FF00;
|
||||
|
||||
if ( feof(f) )
|
||||
error("Unexpected end of file while parsing binary file.");
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
void decode(char **data, int *length)
|
||||
{
|
||||
/* just testing... Place a sophisticated BWT here. */
|
||||
}
|
||||
|
||||
int map_getWidth(map *m)
|
||||
{
|
||||
return m->width;
|
||||
}
|
||||
|
||||
int map_getLength(map *m)
|
||||
{
|
||||
return m->length;
|
||||
}
|
||||
|
||||
int map_getDepth(map *m)
|
||||
{
|
||||
return m->depth;
|
||||
}
|
||||
|
||||
/* Read in the indicated sublevel of the current map. Called from
|
||||
* map_setLevel. */
|
||||
void map_read(map *m, FILE *in, int subLevel)
|
||||
{
|
||||
int size;
|
||||
|
||||
if ( subLevel > m->depth || subLevel < 0 )
|
||||
error("map has only %d levels; game requested level %d.\n",
|
||||
m->depth, subLevel);
|
||||
|
||||
/* Seek to the location of the data (as previously calculated). */
|
||||
fseek(in,m->offset,SEEK_SET);
|
||||
|
||||
do {
|
||||
/* Read in the size of the next submap, and if it wasn't the one
|
||||
* we're looking for, skip past it. */
|
||||
size = fgetshort(in);
|
||||
if ( subLevel )
|
||||
fseek(in, size, SEEK_CUR);
|
||||
} while ( subLevel-- );
|
||||
|
||||
/* We now know that we're looking at the right map, and we know its size. */
|
||||
/* Read the encoding of the level into a buffer. */
|
||||
m->sites = malloc(size);
|
||||
fread(m->sites,size,1,in);
|
||||
|
||||
/* Decode the level. */
|
||||
decode(&m->sites,&size);
|
||||
|
||||
if ( size != m->length*m->width )
|
||||
error("Map had invalid size: expected %d, got %d.\n",
|
||||
m->length*m->width, size);
|
||||
}
|
||||
|
||||
/* Read the map info out of the header of the mapfile, and load it into
|
||||
* the map. */
|
||||
void map_readDimensions(map *m, FILE *in, enum map_identifier map)
|
||||
{
|
||||
int version, maps, items, this_map;
|
||||
|
||||
version = fgetc(in); /* The file version */
|
||||
if ( version != MAP_VERSION )
|
||||
error("Mapfile version mismatch: expected %d, got %d.\n",
|
||||
MAP_VERSION, version);
|
||||
|
||||
maps = fgetshort(in); /* The number of maps it's supposed to contain */
|
||||
|
||||
items = 0;
|
||||
do {
|
||||
this_map = fgetshort(in);
|
||||
m->width = fgetc(in); m->length = fgetc(in); m->depth = fgetc(in);
|
||||
m->offset = fgetint(in);
|
||||
items++;
|
||||
} while (this_map != map && items < maps);
|
||||
|
||||
if ( (items == maps) && (this_map != map) )
|
||||
error("Map #%d was not found in mapfile.\n", map );
|
||||
|
||||
/* The offset stored in the file was the offset from the end of the table of
|
||||
* contents. Fix that to be an absolute offset. */
|
||||
m->offset += MAP_HEADER_SIZE + maps*MAP_ITEM_SIZE;
|
||||
}
|
||||
|
||||
map *map_open(enum map_identifier mapNumber)
|
||||
{
|
||||
map *m = malloc( sizeof(map) );
|
||||
FILE *fd;
|
||||
|
||||
strcpy(Str3,Omegalib);
|
||||
strcat(Str3,"maps.dat");
|
||||
fd = checkfopen(Str3,"rb");
|
||||
|
||||
map_readDimensions(m,fd,mapNumber);
|
||||
|
||||
fclose(fd);
|
||||
return m;
|
||||
}
|
||||
|
||||
void map_setLevel(map *m, int levelNumber)
|
||||
{
|
||||
FILE *fd;
|
||||
|
||||
strcpy(Str3,Omegalib);
|
||||
strcat(Str3,"maps.dat");
|
||||
fd = checkfopen(Str3,"rb");
|
||||
|
||||
map_read(m,fd,levelNumber);
|
||||
|
||||
fclose(fd);
|
||||
}
|
||||
|
||||
void map_close(map *m)
|
||||
{
|
||||
free(m->sites);
|
||||
free(m);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* Using the mappings given in this map structure, build an Omega
|
||||
* level, using appropriate terrain. */
|
||||
void map_buildLevel(map *m, Level *lev)
|
||||
{
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
char map_getSiteChar(map *m, int i, int j)
|
||||
{
|
||||
assert(i < m->width);
|
||||
assert(j < m->length);
|
||||
assert(m->sites[j*m->width + i]);
|
||||
return m->sites[j*m->width + i];
|
||||
}
|
||||
|
328
minit.h
Normal file
328
minit.h
Normal file
@ -0,0 +1,328 @@
|
||||
/* omega, (C) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* minit.h */
|
||||
/* This file defines and initializes the Monsters Array */
|
||||
|
||||
/* the struct monster (from defs.h) looks like:
|
||||
|
||||
struct monster {
|
||||
struct objectlist *possessions;
|
||||
unsigned char attacked;
|
||||
int aux1,aux2,x,y,click;
|
||||
int id,hp,hit,ac,dmg,sense,wakeup,level,speed;
|
||||
unsigned char sleep,treasure;
|
||||
long xpv;
|
||||
int corpseweight,corpsevalue,transformid,startthing;
|
||||
unsigned char uniqueness;
|
||||
int talkf,movef,meleef,strikef,specialf;
|
||||
long status,immunity;
|
||||
Symbol monchar;
|
||||
char *monstring,*corpsestr,*meleestr;
|
||||
};
|
||||
|
||||
*/
|
||||
|
||||
struct monster Monsters[NUMMONSTERS] = {
|
||||
{ NULL,0,0,0,0,0,0,ML0+0,1,1,10,2,4,1,0,1,50,0,1,1,1,-1,-1,COMMON,M_TALK_STUPID,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|FLYING|POISONOUS,0,'h'|CLR(YELLOW),"hornet","dead hornet","AXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML0+1,30,0,0,0,10,10,0,5,100,2,15,1000,0,-1,-1,COMMON,M_TALK_MP,M_MOVE_FOLLOW,M_MELEE_MP,M_NO_OP,M_SP_MP,MOBILE|NEEDY,0,'@'|CLR(RED),"mendicant priest","dead mendicant priest","BX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML0+2,15,0,0,0,10,10,0,7,0,3,5,1000,0,-1,-1,COMMON,M_TALK_IM,M_MOVE_FOLLOW,M_NO_OP,M_NO_OP,M_SP_ESCAPE,MOBILE,0,'@'|CLR(RED),"itinerant merchant","dead itinerant merchant","BX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML0+3,150,20,20,25,10,1,0,3,50,0,150,1000,0,-1,WEAPONID+5,COMMON,M_TALK_GUARD,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_SP_WHISTLEBLOWER,MOBILE,0,'G'|CLR(RED),"guardsman","dead guardsman","A?A?A?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML0+4,5,5,5,5,5,5,0,5,5,0,5,1000,0,-1,-1,COMMON,M_TALK_MAN,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,AWAKE|HOSTILE,0,'@'|CLR(RED),"Log NPC","dead NPC","A?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML0+5,5,5,5,1,2,1,0,5,25,0,2,200,10,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_RANDOM,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|SWIMMING|EDIBLE,0,'s'|CLR(WHITE),"sheep","side of mutton","ALBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML0+6,16,6,6,1,2,1,0,6,0,0,6,200,0,-1,-1,COMMON,M_TALK_MERCHANT,M_NO_OP,M_MELEE_NORMAL,M_NO_OP,M_SP_MERCHANT,MOBILE,0,'@'|CLR(RED),"merchant","dead merchant","A?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML0+7,10,5,5,5,5,5,0,5,25,1,5,1800,0,-1,-1,COMMON,M_TALK_MAN,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|WANDERING,0,'@'|CLR(RED),"0th level NPC","dead 0th level NPC","AXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML0+8,5,5,5,5,5,5,0,5,5,0,5,1000,0,-1,-1,UNIQUE_MADE,M_TALK_MAN,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,AWAKE|HOSTILE,0,'@'|CLR(RED),"Hiscore NPC","dead NPC","A?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+0,25,12,5,15,3,3,1,8,100,0,10,100,0,-1,WEAPONID+17,COMMON,M_TALK_STUPID,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|POISONOUS,pow2(FLAME)|pow2(COLD)|pow2(ELECTRICITY),'g'|CLR(BROWN),"grunt","dead grunt","ACAC" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+1,1,10,5,2,10,10,1,4,0,0,3,1,5,POTIONID+5,-1,COMMON,M_TALK_STUPID,M_MOVE_FLUTTER,M_MELEE_SLEEP,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|FLYING,0,'t'|CLR(PURPLE),"tse-tse fly","dead tse-tse fly","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+2,1,0,0,0,10,10,1,10,0,1,5,2,50,SCROLLID+21,-1,COMMON,M_TALK_STUPID,M_MOVE_FLUTTER,M_NO_OP,M_NO_OP,M_SP_SUMMON,0,0,'f'|CLR(PURPLE),"fnord","fnord's antennae","" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+3,5,5,3,5,5,2,1,3,30,0,5,10,0,-1,-1,COMMON,M_TALK_STUPID,M_MOVE_FLUTTER,M_MELEE_DISEASE,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|SWIMMING,0,'r'|CLR(BROWN),"sewer rat","dead sewer rat","ALAL" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+4,12,0,0,0,10,10,1,10,0,0,1,1,0,-1,-1,COMMON,M_TALK_STUPID,M_NO_OP,M_NO_OP,M_NO_OP,M_SP_AGGRAVATE,0,pow2(FLAME),'f'|CLR(CYAN),"aggravator fungus","aggravator fungus spores","" },
|
||||
|
||||
/* WDT: this one used to blink. I HATE BLINKING. */
|
||||
{ NULL,0,0,0,0,0,0,ML1+5,50,0,5,0,3,3,1,24,100,2,20,20,25,SCROLLID+5,-1,COMMON,M_TALK_STUPID,M_NO_OP,M_NO_OP,M_NO_OP,M_MOVE_TELEPORT,MOBILE,0,'b'|CLR(BRIGHT_WHITE)/*|CLR(FG_BLINK)*/,"blipper","blipper organ","BX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+6,8,10,8,8,10,2,1,5,0,1,10,500,0,-1,WEAPONID+0,COMMON,M_TALK_GREEDY,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|GREEDY,0,'g'|CLR(GREEN),"goblin","dead goblin","AXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+7,10,10,10,10,4,4,1,9,50,1,25,5,10,SCROLLID+19,-1,COMMON,M_TALK_SILENT,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_SP_ILLUSION,MOBILE|HOSTILE|POISONOUS,pow2(SLEEP),'p'|CLR(RED),"phantasticon","phantasticon's eyes","AXAXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+8,5,10,10,15,10,3,1,12,100,0,15,25,0,-1,-1,COMMON,M_TALK_ROBOT,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE,pow2(ELECTRICITY)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'R'|CLR(GREY),"household robot","household robot battery","ACBC" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+9,1,5,5,5,10,10,1,8,50,0,1,250,0,-1,-1,COMMON,M_TALK_STUPID,M_MOVE_SCAREDY,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE,0,'g'|CLR(WHITE),"pencil-necked geek","dead pencil-necked geek","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+10,6,8,5,6,4,3,1,4,50,0,6,30,0,-1,-1,COMMON,M_TALK_MIMSY,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|FLYING|EDIBLE,0,'b'|CLR(GREEN),"borogrove","borogrove wings","AXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+11,3,0,15,1,4,4,1,2,50,0,1,20,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|FLYING|EDIBLE,0,'q'|CLR(BROWN),"quail","quail en brochet","" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+12,13,10,5,5,2,1,1,4,50,0,3,20,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|SWIMMING|EDIBLE,0,'b'|CLR(BROWN),"badger","badger ribs","ALAL" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+13,7,15,10,10,10,5,1,2,50,0,10,20,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|FLYING|EDIBLE,0,'h'|CLR(BROWN),"hawk","buffalo style hawk wings","AH" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+14,23,5,10,5,10,10,1,2,50,0,5,500,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|SWIMMING|EDIBLE,0,'d'|CLR(BROWN),"deer","venison","AXBXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+15,30,10,5,10,4,2,1,5,50,0,5,500,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|EDIBLE,0,'c'|CLR(BROWN),"camel","hump au jus","AXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+16,20,0,5,5,4,2,1,4,50,0,3,400,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|SWIMMING|EDIBLE,0,'a'|CLR(BROWN),"anteater","roast loin of anteater","AL" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+17,3,0,7,1,4,4,1,3,50,0,1,20,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|SWIMMING|EDIBLE,0,'r'|CLR(BROWN),"rabbit","bunnyburgers","AL" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+18,3,0,18,1,4,4,1,2,50,0,1,20,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_NO_OP,M_NO_OP,M_NO_OP,MOBILE|ONLYSWIM|EDIBLE,0,'t'|CLR(CYAN),"trout","filet of trout","" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+19,1,0,0,0,4,4,1,4,50,0,1,20,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_NO_OP,M_NO_OP,M_NO_OP,MOBILE|ONLYSWIM|EDIBLE,0,'b'|CLR(CYAN),"striped bass","bass filets","" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+20,5,10,10,12,10,2,1,3,50,0,5,20,0,-1,-1,COMMON,M_TALK_PARROT,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HUNGRY|FLYING|EDIBLE,0,'p'|CLR(PURPLE),"parrot","grilled breast of parrot","AH" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML1+21,10,10,5,5,10,2,1,4,20,0,8,20,0,-1,-1,COMMON,M_TALK_HYENA,M_MOVE_ANIMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|SWIMMING|EDIBLE,0,'h'|CLR(BROWN),"hyena","hyena ribs","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+0,20,16,10,15,10,3,2,3,50,1,40,1000,0,-1,WEAPONID+1,COMMON,M_TALK_NINJA,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_SP_SURPRISE,MOBILE|HOSTILE|M_INVISIBLE,0,'n'|CLR(GREY),"apprentice ninja","dead ninja","A?A?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+1,30,15,10,5,10,10,2,6,0,0,35,250,100,-1,-1,COMMON,M_TALK_TITTER,M_MOVE_FLUTTER,M_MELEE_NG,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|FLYING|POISONOUS,0,'n'|CLR(GREY),"night gaunt","dead night gaunt","ACAC" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+2,32,0,10,0,10,10,2,2,0,3,20,1000,0,-1,-1,COMMON,M_TALK_THIEF,M_MOVE_SMART,M_NO_OP,M_NO_OP,M_SP_THIEF,MOBILE|HOSTILE|GREEDY,0,'@'|CLR(RED),"sneak-thief","dead sneak-thief","AXB?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+3,25,0,0,0,10,10,2,5,0,0,10,1,20,POTIONID+16,-1,COMMON,M_NO_OP,M_MOVE_RANDOM,M_NO_OP,M_NO_OP,M_SP_EXPLODE,MOBILE|FLYING,pow2(SLEEP),'e'|CLR(GREEN),"floating eye","dead floating eye","" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+4,30,10,10,10,6,3,2,4,0,0,25,10,0,-1,-1,COMMON,M_TALK_SLITHY,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE,0,'t'|CLR(GREEN),"tove","dead tove","ALBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+5,32,15,10,5,5,3,2,8,0,1,30,50,30,POTIONID+10,-1,COMMON,M_NO_OP,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_STRIKE_MISSILE,M_NO_OP,MOBILE|HOSTILE|M_INVISIBLE,0,'n'|CLR(GREY),"transparent nasty","dead transparent nasty","ACAC" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+6,32,0,10,0,5,10,2,20,0,0,30,1,0,-1,-1,COMMON,M_TALK_HINT,M_MOVE_SPIRIT,M_NO_OP,M_NO_OP,M_SP_GHOST,MOBILE|WANDERING|INTANGIBLE,pow2(NORMAL_DAMAGE)|pow2(FEAR)|pow2(SLEEP),'g'|CLR(GREY),"ghost","ghost ectoplasm","" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+7,20,5,10,5,5,3,2,8,0,2,40,1,100,-1,-1,COMMON,M_TALK_EVIL,M_MOVE_SCAREDY,M_MELEE_NORMAL,M_NO_OP,M_SP_SPELL,MOBILE|HOSTILE,pow2(COLD),'e'|CLR(RED),"enchanter","dead enchanter","AXBXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+8,7,0,0,0,10,3,2,12,0,0,40,1,10,SCROLLID+22,-1,COMMON,M_NO_OP,M_NO_OP,M_NO_OP,M_NO_OP,M_SP_BLACKOUT,AWAKE|HOSTILE|POISONOUS,0,'f'|CLR(GREY),"murk fungus","murk cloud particles","" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+9,25,20,12,10,10,3,2,4,0,1,30,1,-1,-1,WEAPONID+12,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_NORMAL,M_STRIKE_MISSILE,M_NO_OP,MOBILE|HOSTILE|GREEDY,pow2(FEAR),'G'|CLR(GREEN),"goblin chieftain","dead goblin chieftain","A?A?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+10,40,15,5,15,8,3,2,4,10,0,35,50,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|SWIMMING|EDIBLE,pow2(FEAR)|pow2(SLEEP),'w'|CLR(BROWN),"wolf","wolf cutlets","AXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+11,20,15,15,10,3,3,2,3,10,0,30,50,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_NORMAL,M_MELEE_POISON,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|POISONOUS,pow2(FEAR)|pow2(SLEEP),'a'|CLR(RED),"giant soldier ant","ant mandibles","AXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+12,100,25,25,50,3,3,2,12,10,0,50,500,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HUNGRY|SWIMMING|EDIBLE,0,'e'|CLR(GREY),"elephant","trunk steak","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML2+13,50,20,5,20,6,3,2,4,10,0,40,500,0,-1,-1,COMMON,M_TALK_HORSE,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HUNGRY|SWIMMING|EDIBLE,0,'h'|CLR(BROWN),"horse","steaming horsemeat","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+0,35,15,5,30,4,1,3,4,50,0,75,50,50,RINGID+4,-1,COMMON,M_TALK_STUPID,M_MOVE_FLUTTER,M_MELEE_FIRE,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|GREEDY,pow2(FLAME),'s'|CLR(LIGHT_RED),"salamander","salamander scales","AXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+1,100,10,10,20,5,2,3,8,50,0,50,10,50,RINGID+3,-1,COMMON,M_TALK_STUPID,M_MOVE_NORMAL,M_MELEE_NORMAL,M_STRIKE_BLIND,M_NO_OP,MOBILE|HOSTILE|HUNGRY|GREEDY,0,'C'|CLR(GREEN),"catoblepas","catoblepas' eyes","AXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+2,15,18,15,15,3,3,3,4,0,2,80,25,50,STICKID+10,-1,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_COLD,M_NO_OP,M_SP_DEMON,MOBILE|HOSTILE,pow2(COLD)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'f'|CLR(LIGHT_BLUE),"lesser frost demon","lesser frost demon's heart","A?A?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+3,10,20,0,50,5,1,3,20,0,0,60,10,0,-1,-1,COMMON,M_NO_OP,M_MOVE_FOLLOW,M_MELEE_NORMAL,M_NO_OP,M_SP_ACID_CLOUD,MOBILE|FLYING,pow2(POISON)|pow2(SLEEP),'a'|CLR(YELLOW),"acid cloud","acid pool","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+4,1,20,0,0,5,5,2,10,100,0,90,10,0,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_SPIRIT,M_MELEE_SPIRIT,M_NO_OP,M_SP_SURPRISE,MOBILE|HOSTILE|FLYING|INTANGIBLE|M_INVISIBLE,pow2(NORMAL_DAMAGE)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'p'|CLR(GREY),"phantom","hardly anything at all","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+5,32,18,10,32,5,20,3,5,100,3,500,100,0,-1,WEAPONID+36,UNIQUE_MADE,M_TALK_GREEDY,M_MOVE_SMART,M_MELEE_NORMAL,M_STRIKE_MISSILE,M_NO_OP,MOBILE|HOSTILE|GREEDY,0,'K'|CLR(LIGHT_GREEN),"The Goblin King","The Head of the Goblin King","A?A?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+6,42,16,10,10,8,4,3,3,0,0,75,500,1,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|FLYING|EDIBLE,pow2(FEAR)|pow2(SLEEP),'P'|CLR(PURPLE),"pterodactyl","pterodactyl patee","AH" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+7,25,10,10,10,5,5,3,6,0,2,40,500,-1,-1,-1,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_SP_SPELL,MOBILE|HOSTILE|GREEDY,0,'G'|CLR(GREEN),"goblin shaman","dead goblin shaman","AXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+8,60,20,10,25,5,1,3,3,0,0,50,50,-1,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|SWIMMING|EDIBLE,0,'l'|CLR(YELLOW),"lion","lion souflee","AXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+9,30,15,10,15,5,1,3,5,0,2,75,50,-1,-1,WEAPONID+27,COMMON,M_TALK_GREEDY,M_MOVE_SMART,M_MELEE_NORMAL,M_STRIKE_MISSILE,M_NO_OP,MOBILE|HOSTILE|GREEDY,0,'b'|CLR(RED),"brigand","dead brigand","AXAXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+10,70,25,20,40,3,1,3,10,80,0,55,500,-1,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_ANIMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HUNGRY|SWIMMING|EDIBLE,pow2(FEAR),'b'|CLR(BROWN),"bear","bear's sirloin tips","AXAXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+11,10,25,10,20,3,1,3,3,40,0,45,30,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_NORMAL,M_MELEE_POISON,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|POISONOUS,0,'m'|CLR(RED),"mamba","mamba filet","AXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+12,40,15,10,30,3,1,3,7,0,1,40,20,0,-1,-1,COMMON,M_NO_OP,M_MOVE_NORMAL,M_MELEE_POISON,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|ONLYSWIM|POISONOUS,pow2(POISON),'M'|CLR(BLUE),"man o' war","deliquescing tentacles","AXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+13,40,5,10,10,5,2,3,5,0,1,100,20,0,-1,-1,COMMON,M_TALK_MAN,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_SP_WERE,MOBILE,0,'@'|CLR(RED),"were-human","dead were-human","AXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML3+14,4,0,0,1,5,2,3,5,0,1,50,20,0,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_SPIRIT,M_MELEE_SPIRIT,M_NO_OP,M_NO_OP,MOBILE|HOSTILE,pow2(COLD)|pow2(ELECTRICITY)|pow2(POISON)|pow2(ACID)|pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(OTHER_MAGIC)|pow2(THEFT)|pow2(GAZE)|pow2(INFECTION),'T'|CLR(GREY),"thought-form","a velleity","ACACACACAC" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+0,100,15,12,25,6,2,4,6,25,2,150,300,20,STICKID+11,-1,COMMON,M_TALK_HUNGRY,M_MOVE_NORMAL,M_MELEE_NORMAL,M_STRIKE_MISSILE,M_NO_OP,MOBILE|HOSTILE|HUNGRY|FLYING,0,'M'|CLR(YELLOW),"manticore","manticore spikes","AXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+1,50,12,10,10,10,10,4,2,50,0,100,300,10,POTIONID+6,-1,COMMON,M_TALK_HUNGRY,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY,0,'T'|CLR(BROWN),"tasmanian devil","dead tasmanian devil","AXAXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+2,100,15,15,50,5,2,4,7,100,0,100,100,0,-1,-1,COMMON,M_TALK_ROBOT,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_SP_POISON_CLOUD,MOBILE|HOSTILE,pow2(ELECTRICITY)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'a'|CLR(GREY),"automatum minor","automatum minor battery","ACBC" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+3,75,30,10,15,5,1,4,12,75,0,125,50,20,POTIONID+17,-1,COMMON,M_TALK_SILENT,M_MOVE_NORMAL,M_MELEE_DISEASE,M_NO_OP,M_SP_SURPRISE,MOBILE|HOSTILE|HUNGRY|M_INVISIBLE|SWIMMING,pow2(FLAME)|pow2(ELECTRICITY)|pow2(POISON),'s'|CLR(GREEN),"denebian slime devil","denebian slime","AL" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+4,50,18,12,25,5,1,4,3,75,0,125,500,0,-1,-1,COMMON,M_TALK_BURBLE,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|FLYING|EDIBLE,pow2(POISON),'j'|CLR(PURPLE),"jub-jub bird","jube-jubes","AHAH" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+5,50,15,5,20,4,1,4,7,0,0,150,500,0,-1,-1,COMMON,M_TALK_EVIL,M_MOVE_NORMAL,M_MELEE_POISON,M_NO_OP,M_SP_SURPRISE,MOBILE|HOSTILE|HUNGRY|M_INVISIBLE|POISONOUS,pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'h'|CLR(GREY),"haunt","dessicated corpse","ACAC" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+6,50,20,10,10,4,4,4,5,0,1,150,1,200,-1,-1,COMMON,M_TALK_DEMONLOVER,M_MOVE_SMART,M_NO_OP,M_NO_OP,M_SP_DEMONLOVER,MOBILE|NEEDY|POISONOUS,pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'!'|CLR(RED),"incubus/succubus","(null)","(null)" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+7,50,0,10,0,4,4,4,6,0,0,50,1,0,-1,-1,COMMON,M_TALK_SEDUCTOR,M_MOVE_SMART,M_NO_OP,M_NO_OP,M_SP_SEDUCTOR,MOBILE|NEEDY,0,'!'|CLR(RED),"satyr or nymph","(null)","(null)" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+8,80,25,20,30,4,1,4,8,50,0,100,300,100,-1,-1,COMMON,M_NO_OP,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|ONLYSWIM,0,'c'|CLR(GREEN),"giant crocodile","crocodile hide","ALALBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+9,40,30,0,10,4,4,4,12,0,0,120,30,50,POTIONID+5,-1,COMMON,M_TALK_STUPID,M_MOVE_NORMAL,M_MELEE_SLEEP,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY,pow2(FEAR)|pow2(SLEEP),'t'|CLR(BROWN),"torpor beast","a valium gland","AXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+10,40,20,10,15,8,8,4,2,0,0,120,300,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_LEASH,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE,pow2(FEAR)|pow2(SLEEP),'d'|CLR(BROWN),"doberman death-hound","dead doberman death-hound","LXLXLX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+11,40,10,10,10,8,8,4,1,0,0,100,0,0,-1,-1,COMMON,M_NO_OP,M_MOVE_SPIRIT,M_MELEE_COLD,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|INTANGIBLE,pow2(FLAME)|pow2(FEAR)|pow2(SLEEP),'F'|CLR(GREY),"astral fuzzy","nothing much","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+12,30,40,40,20,8,8,4,5,0,2,120,0,0,-1,-1,COMMON,M_TALK_SERVANT,M_MOVE_SMART,M_MELEE_NORMAL,M_STRIKE_MISSILE,M_SP_SERVANT,MOBILE,pow2(FEAR)|pow2(SLEEP),'l'|CLR(BLUE),"servant of law","dead servant","L?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+13,40,25,20,10,8,8,4,5,0,2,120,500,0,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_SMART,M_MELEE_NORMAL,M_STRIKE_MISSILE,M_SP_SERVANT,MOBILE,pow2(FEAR)|pow2(SLEEP),'c'|CLR(RED),"servant of chaos","dead servant","AXAXAXAX?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+14,40,15,0,10,3,0,4,10,0,0,50,1,0,-1,-1,COMMON,M_NO_OP,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_SP_SWARM,MOBILE|HOSTILE|FLYING,pow2(NORMAL_DAMAGE)|pow2(FEAR)|pow2(SLEEP),'s'|CLR(YELLOW),"swarm","dead swarm members","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+15,40,10,20,10,8,8,4,4,0,2,100,50,0,-1,-1,COMMON,M_TALK_SCREAM,M_MOVE_NORMAL,M_MELEE_SPIRIT,M_STRIKE_SONIC,M_NO_OP,MOBILE|HOSTILE|FLYING,pow2(FEAR)|pow2(SLEEP),'b'|CLR(GREY),"ban sidhe","dead ban sidhe","LX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+16,50,20,20,20,3,1,4,6,60,3,100,1,0,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_SPIRIT,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|INTANGIBLE,pow2(NORMAL_DAMAGE),'e'|CLR(GREEN),"etheric grue","dead etheric grue","LHAHLH" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML4+17,40,20,13,30,8,4,4,5,0,1,100,500,100,-1,-1,COMMON,M_TALK_NINJA,M_MOVE_NORMAL,M_MELEE_POISON,M_STRIKE_MISSILE,M_SP_SURPRISE,MOBILE|HOSTILE|M_INVISIBLE,pow2(POISON)|pow2(SLEEP),'n'|CLR(GREY),"ninja (genin)","dead ninja","A?A?R?R" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+0,50,20,15,40,10,2,5,3,90,4,180,500,50,RINGID+4,-1,COMMON,M_TALK_GREEDY,M_MOVE_NORMAL,M_MELEE_DRAGON,M_STRIKE_FBOLT,M_NO_OP,MOBILE|HOSTILE|HUNGRY|GREEDY|FLYING|EDIBLE,pow2(FLAME),'d'|CLR(LIGHT_RED),"dragonette","dragon steak","AXAXBXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+1,50,15,10,40,10,2,5,12,40,0,150,100,200,STICKID+3,-1,COMMON,M_TALK_STUPID,M_MOVE_FLUTTER,M_MELEE_ELEC,M_STRIKE_LBALL,M_NO_OP,MOBILE|HOSTILE,pow2(ELECTRICITY),'t'|CLR(LIGHT_BLUE),"tesla monster","tesla monster whip","AXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+2,100,20,12,20,4,2,5,4,80,2,150,100,150,RINGID+6,-1,COMMON,M_TALK_GREEDY,M_MOVE_NORMAL,M_MELEE_POISON,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|GREEDY|FLYING|POISONOUS,pow2(FLAME),'W'|CLR(LIGHT_RED),"wyvern","wyvern's sting","AXAXBXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+3,50,15,10,20,10,2,5,2,50,0,250,400,0,-1,-1,COMMON,M_TALK_HUNGRY,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_SP_FLUTTER,MOBILE|HOSTILE|HUNGRY|FLYING,pow2(FEAR),'c'|CLR(BROWN),"radeligian cateagle","dead radeligian cateagle","AXAXAXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+4,75,20,20,20,5,5,5,3,50,3,200,50,200,STICKID+4,-1,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_COLD,M_STRIKE_SNOWBALL,M_SP_DEMON,MOBILE|HOSTILE|POISONOUS,pow2(COLD)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'f'|CLR(WHITE),"frost demon","frost demon's heart","A?A?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+5,75,20,20,20,5,2,5,6,50,0,200,10,200,CLOAKID+1,-1,COMMON,M_TALK_EVIL,M_MOVE_SPIRIT,M_MELEE_SPIRIT,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|FLYING,pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'S'|CLR(GREY),"spectre","spectre's veil","A?A?A?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+6,50,12,13,10,5,5,5,5,0,4,205,10,500,-1,SCROLLID+1,COMMON,M_TALK_EVIL,M_MOVE_SCAREDY,M_MELEE_NORMAL,M_NO_OP,M_SP_SPELL,MOBILE|HOSTILE,pow2(FLAME)|pow2(COLD)|pow2(ELECTRICITY),'n'|CLR(RED),"necromancer","dead necromancer","A?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+7,40,18,18,20,5,5,5,7,50,2,175,2,10,SCROLLID+22,-1,COMMON,M_TALK_EVIL,M_MOVE_SPIRIT,M_MELEE_SPIRIT,M_NO_OP,M_SP_BLACKOUT,MOBILE|HOSTILE|INTANGIBLE,pow2(NORMAL_DAMAGE),'S'|CLR(GREY),"shadow spirit","shadowstuff","ACACAC" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+8,80,22,8,30,3,3,5,12,50,2,275,20,0,-1,-1,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_GRAPPLE,M_NO_OP,M_SP_BOG,MOBILE|HOSTILE|ONLYSWIM|POISONOUS,pow2(NORMAL_DAMAGE),'B'|CLR(GREEN),"bog thing","swamp slime","AXAXB?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+9,40,25,0,0,20,3,5,6,0,2,175,20,0,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_SPIRIT,M_MELEE_SPIRIT,M_NO_OP,M_SP_AV,MOBILE|HOSTILE|INTANGIBLE,pow2(NORMAL_DAMAGE)|pow2(FEAR)|pow2(SLEEP),'V'|CLR(GREY),"astral vampire","dead astral vampire","R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+10,100,40,0,60,3,1,5,10,75,0,175,2000,0,-1,-1,COMMON,M_NO_OP,M_MOVE_NORMAL,M_MELEE_FIRE,M_NO_OP,M_SP_LW,MOBILE|HOSTILE|SWIMMING|POISONOUS,pow2(FLAME),'W'|CLR(LIGHT_RED),"lava worm","dead lava worm","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+11,1,0,0,0,30,30,5,20,0,0,100,0,0,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_RANDOM,M_NO_OP,M_NO_OP,M_SP_MB,MOBILE|HOSTILE|INTANGIBLE,0,'m'|CLR(PURPLE),"manaburst","feeling of warmth","BX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+12,120,25,20,20,6,6,5,4,0,1,150,2000,0,-1,WEAPONID+8,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_FIRE,M_MELEE_POISON,M_SP_DEMON,MOBILE|HOSTILE|POISONOUS,pow2(FLAME)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'d'|CLR(LIGHT_RED),"outer circle demon","dead outer circle demon","L?R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML5+13,40,15,10,30,8,8,5,6,0,1,100,20,0,-1,-1,COMMON,M_NO_OP,M_MOVE_SMART,M_MELEE_SPIRIT,M_NO_OP,M_SP_MIRROR,MOBILE|HOSTILE,pow2(FLAME)|pow2(COLD)|pow2(ELECTRICITY),'m'|CLR(GREY),"mirrorshade","some broken glass","AXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+0,125,30,0,50,10,2,6,4,100,0,250,1,200,STICKID+7,-1,COMMON,M_TALK_SILENT,M_MOVE_NORMAL,M_MELEE_FIRE,M_STRIKE_FBALL,M_NO_OP,MOBILE|HOSTILE|FLYING,pow2(FLAME)|pow2(POISON)|pow2(ACID)|pow2(SLEEP),'F'|CLRS(WHITE,RED),"fire elemental","essence of fire elemental","AXAXAXRXRX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+1,125,25,0,20,10,2,6,2,100,0,250,1,200,CLOAKID+2,-1,COMMON,M_TALK_SILENT,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_SP_WHIRL,MOBILE|HOSTILE|FLYING|INTANGIBLE,pow2(ELECTRICITY)|pow2(POISON)|pow2(ACID)|pow2(SLEEP),'A'|CLRS(WHITE,BLUE),"air elemental","essence of air elemental","AXAXAXAXBXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+2,100,15,10,30,5,1,6,6,100,0,250,1,200,STICKID+14,-1,COMMON,M_TALK_SILENT,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|ONLYSWIM,pow2(COLD)|pow2(SLEEP),'W'|CLRS(WHITE,BLUE),"water elemental","essence of water elemental","AXAXBXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+3,200,20,25,100,5,1,6,15,100,0,250,1,200,CLOAKID+4,-1,COMMON,M_TALK_SILENT,M_MOVE_SPIRIT,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE,pow2(POISON)|pow2(SLEEP),'E'|CLRS(WHITE,BROWN),"earth elemental","essence of earth elemental","AXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+4,100,20,20,50,3,1,6,2,50,1,250,1000,100,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE,pow2(SLEEP),'b'|CLRS(YELLOW,BROWN),"bandersnatch","bandersnatch hide","AXAXAXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+5,100,15,20,50,5,1,6,3,50,5,300,100,1000,-1,-1,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_SPIRIT,M_NO_OP,M_SP_SPELL,MOBILE|HOSTILE,pow2(FLAME)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'L'|CLRS(BLACK,WHITE),"lich","lich's skeleton","A?A?A?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+6,100,20,20,30,5,3,6,5,30,3,300,10,500,-1,WEAPONID+21,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_SP_SPELL,MOBILE|HOSTILE|SWIMMING,pow2(SLEEP),'T'|CLRS(LIGHT_GREEN,BLUE),"triton","dead triton","A?A?A?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+7,100,0,20,0,10,3,6,3,0,5,200,10,0,-1,THINGID+2,COMMON,M_TALK_THIEF,M_MOVE_SMART,M_NO_OP,M_NO_OP,M_SP_THIEF,MOBILE|HOSTILE|GREEDY|SWIMMING,0,'@'|CLR(RED),"human","dead master thief","A?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+8,200,50,50,80,3,1,6,8,0,0,300,100000,0,-1,-1,COMMON,M_TALK_ANIMAL,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|SWIMMING,pow2(FEAR)|pow2(SLEEP),'T'|CLRS(GREEN,BROWN),"triceratops","dead triceratops","LX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+9,100,20,20,20,10,2,6,3,50,4,250,10,0,-1,WEAPONID+5,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_NORMAL,M_STRIKE_FBOLT,M_SP_ILLUSION,MOBILE|HOSTILE,pow2(FLAME)|pow2(FEAR)|pow2(SLEEP),'R'|CLRS(YELLOW,WHITE),"rakshasa","dead rakshasa","L?L?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+10,100,40,20,30,5,1,6,7,90,4,250,10,500,-1,-1,COMMON,M_TALK_EVIL,M_MOVE_NORMAL,M_MELEE_POISON,M_STRIKE_FBALL,M_SP_DEMON,MOBILE|HOSTILE|SWIMMING,pow2(FLAME)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'S'|CLRS(GREEN,RED),"demon serpent","demon serpent's jewel","L?L?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+11,120,30,20,20,10,10,6,4,0,1,250,10,0,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_SP_ANGEL,MOBILE|FLYING,pow2(FEAR)|pow2(SLEEP),'a'|CLRS(YELLOW,WHITE),"angel","angel's gown","L?R?RX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML6+12,100,25,15,40,9,4,6,4,0,1,200,100,100,-1,-1,COMMON,M_TALK_NINJA,M_MOVE_NORMAL,M_MELEE_POISON,M_STRIKE_MISSILE,M_SP_SURPRISE,MOBILE|HOSTILE|M_INVISIBLE,pow2(POISON)|pow2(SLEEP),'n'|CLRS(BLACK,WHITE),"ninja (chunin)","dead ninja","A?A?R?R?R" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+0,300,30,5,120,3,3,7,15,100,0,400,500,50,RINGID+2,-1,COMMON,M_TALK_STUPID,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_SP_HUGE,MOBILE|HOSTILE|SWIMMING,pow2(ELECTRICITY),'B'|CLRS(BLACK,BROWN),"behemoth","behemoth's gonads","AHBXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+1,250,40,20,20,10,5,7,5,0,0,500,100,2000,-1,WEAPONID+24,COMMON,M_TALK_EVIL,M_MOVE_SPIRIT,M_MELEE_SPIRIT,M_NO_OP,M_SP_SPELL,MOBILE|HOSTILE|FLYING,pow2(COLD)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'N'|CLRS(BLACK,WHITE),"nazgul","nazgul's husk","A?A?A?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+2,100,100,30,50,10,3,7,2,50,0,400,100,500,RINGID+6,-1,COMMON,M_TALK_SILENT,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_MOVE_SCAREDY,MOBILE|SWIMMING,pow2(POISON)|pow2(FEAR),'U'|CLRS(BLACK,WHITE),"unicorn","unicorn's horn","ACACB?B?B?B?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+3,150,30,20,50,10,3,7,3,50,0,400,100,0,-1,-1,COMMON,M_NO_OP,M_MOVE_NORMAL,M_MELEE_DISEASE,M_NO_OP,M_SP_SURPRISE,MOBILE|HOSTILE|HUNGRY|M_INVISIBLE|SWIMMING,pow2(FEAR),'r'|CLRS(BLACK,BROWN),"rodent of unusual size","dead R.O.U.S.","AXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+4,100,20,25,30,10,2,7,5,50,3,400,0,0,-1,-1,COMMON,M_NO_OP,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_SP_ILLUSION,MOBILE|HOSTILE|GREEDY,pow2(OTHER_MAGIC),'F'|CLRS(BLACK,WHITE),"illusory fiend","not much of anything","AXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+5,250,40,30,20,10,1,7,5,100,8,500,1500,2000,-1,WEAPONID+34,UNIQUE_MADE,M_TALK_EVIL,M_MOVE_NORMAL,M_MELEE_NORMAL,M_MELEE_COLD,M_SP_WYRM,MOBILE|HOSTILE|SWIMMING,pow2(COLD)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'W'|CLRS(GREY,RED),"Great Wyrm","The head of the Great Wyrm","AXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+6,150,30,30,20,10,1,7,1,100,8,350,1500,0,-1,WEAPONID+33,COMMON,M_NO_OP,M_MOVE_SMART,M_MELEE_FIRE,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|FLYING,pow2(FLAME)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'F'|CLRS(GREY,RED),"flame devil","dead flame devil","A?A?R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+7,150,50,10,20,1,0,7,1,100,4,400,1500,0,-1,-1,COMMON,M_NO_OP,M_NO_OP,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,HOSTILE|HUNGRY,0,OPEN_DOOR,"lurker at the threshold","dead lurker","L?L?L?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+8,50,30,30,20,10,1,7,4,0,2,450,500,0,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_NORMAL,M_MELEE_SLEEP,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|FLYING,pow2(NORMAL_DAMAGE)|pow2(SLEEP),'S'|CLRS(YELLOW,BROWN),"sandman","mound of sand","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+9,50,40,10,10,10,10,7,2,0,5,350,50,0,-1,-1,COMMON,M_NO_OP,M_MOVE_SMART,M_MELEE_SLEEP,M_NO_OP,M_SP_MIRROR,MOBILE|HOSTILE|FLYING,pow2(OTHER_MAGIC),'m'|CLRS(RED,WHITE),"mirror master","shards of glass","AXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+10,150,30,30,20,10,1,7,4,90,2,450,500,0,-1,-1,COMMON,M_TALK_HUNGRY,M_MOVE_NORMAL,M_MELEE_POISON,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|FLYING,pow2(POISON)|pow2(FEAR),'G'|CLRS(GREY,GREEN),"elder etheric grue","dead elder etheric grue","AXAXAXL?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+11,150,50,40,60,3,3,7,8,90,6,380,500,0,-1,-1,COMMON,M_TALK_HUNGRY,M_MOVE_NORMAL,M_MELEE_POISON,M_NO_OP,M_SP_ACID_CLOUD,MOBILE|HOSTILE|HUNGRY|SWIMMING,pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'S'|CLRS(GREY,GREEN),"loathly serpent","dead loathly serpent","AXAXAXL?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+12,100,10,30,20,8,3,7,3,20,2,460,500,0,-1,-1,COMMON,M_TALK_EVIL,M_MOVE_SCAREDY,M_MELEE_SPIRIT,M_NO_OP,M_SP_RAISE,MOBILE|HOSTILE,pow2(FEAR),'Z'|CLRS(BLACK,WHITE),"zombie overlord","extremely dead zombie overlord","L?R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+13,50,30,30,2,13,1,7,1,30,0,250,50,0,-1,-1,COMMON,M_TALK_STUPID,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_MOVE_FLUTTER,MOBILE|HOSTILE|FLYING,0,'r'|CLRS(GREY,BROWN),"ricochet","dead ricochet","L?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML7+14,240,35,30,40,8,8,7,3,0,3,300,3000,0,-1,-1,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_FIRE,M_MELEE_SLEEP,M_SP_DEMON,MOBILE|HOSTILE|POISONOUS,pow2(FLAME)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'D'|CLRS(GREY,RED),"inner circle demon","dead inner circle demon","L?L?R?R?R?RXRXRX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+0,1,0,100,0,6,2,8,3,0,0,50,100,0,-1,-1,COMMON,M_TALK_GF,M_MOVE_RANDOM,M_NO_OP,M_NO_OP,M_NO_OP,MOBILE|FLYING,pow2(FLAME)|pow2(COLD)|pow2(SLEEP),'f'|CLRS(YELLOW,WHITE),"fairy","good fairy dust","B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+1,100,50,50,20,10,10,8,3,0,0,500,3,0,-1,-1,COMMON,M_TALK_EF,M_MOVE_RANDOM,M_NO_OP,M_NO_OP,M_NO_OP,MOBILE|FLYING|POISONOUS,pow2(FLAME)|pow2(COLD)|pow2(SLEEP),'f'|CLRS(YELLOW,WHITE),"fairy","evil fairy dust","B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+2,500,30,50,100,5,2,8,3,100,0,500,1000,0,-1,WEAPONID+23,COMMON,M_TALK_ROBOT,M_MOVE_SMART,M_MELEE_NORMAL,M_STRIKE_LBALL,M_SP_POISON_CLOUD,MOBILE|HOSTILE,pow2(ELECTRICITY)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'A'|CLRS(GREY,WHITE),"automatum major","automatum major components","A?A?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+3,500,50,30,75,20,1,8,5,100,7,750,500,1000,ARMORID+12,-1,COMMON,M_TALK_GREEDY,M_MOVE_NORMAL,M_MELEE_DRAGON,M_STRIKE_FBOLT,M_NO_OP,MOBILE|HOSTILE|HUNGRY|GREEDY|FLYING,pow2(FLAME)|pow2(POISON)|pow2(SLEEP),'D'|CLRS(GREY,RED),"dragon","dragon scales","A?A?A?A?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+4,500,40,25,100,5,1,8,2,75,2,600,500,1000,WEAPONID+31,-1,COMMON,M_TALK_BURBLE,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY,pow2(POISON)|pow2(SLEEP),'J'|CLRS(BROWN,RED),"jabberwock","jabberwock's head","A?A?A?A?A?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+5,350,40,40,40,10,10,8,2,25,5,700,100,500,WEAPONID+24,-1,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_COLD,M_STRIKE_SNOWBALL,M_SP_DEMON,MOBILE|HOSTILE|HUNGRY,pow2(COLD)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'F'|CLRS(LIGHT_BLUE,WHITE),"frost demon lord","frost demon lord's sigil","A?A?A?R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+6,350,35,30,40,10,4,8,2,25,0,700,100,100,-1,-1,COMMON,M_NO_OP,M_MOVE_NORMAL,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|HUNGRY|ONLYSWIM,pow2(COLD)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'T'|CLRS(YELLOW,BLUE),"tigershark","tigershark pelt","AXAXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+7,250,40,25,50,10,4,8,3,0,2,800,100,100,-1,-1,COMMON,M_TALK_NINJA,M_MOVE_NORMAL,M_MELEE_POISON,M_STRIKE_MISSILE,M_SP_SURPRISE,MOBILE|HOSTILE|M_INVISIBLE,pow2(POISON)|pow2(SLEEP),'n'|CLRS(BLACK,WHITE),"ninja (jonin)","dead ninja","A?A?R?R?R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+8,250,30,40,30,10,4,8,3,0,3,500,10,75,RINGID+0,-1,COMMON,M_TALK_EVIL,M_MOVE_SPIRIT,M_MELEE_POISON,M_SP_SPELL,M_SP_BLACKOUT,MOBILE|HOSTILE|INTANGIBLE|M_INVISIBLE,pow2(NORMAL_DAMAGE)|pow2(POISON)|pow2(SLEEP),'S'|CLRS(BLACK,WHITE),"shadow slayer","shadow matrix","A?A?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+9,250,30,30,30,10,4,8,6,0,3,700,10,75,-1,WEAPONID+13,COMMON,M_TALK_SILENT,M_MOVE_SMART,M_MELEE_NORMAL,M_STRIKE_MISSILE,M_SP_SPELL,MOBILE|HOSTILE,pow2(SLEEP),'@'|CLR(RED),"militant priest","dead militant priest","A?A?A?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+10,150,25,40,30,10,4,8,5,0,3,500,10,75,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_SMART,M_MELEE_SLEEP,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|M_INVISIBLE,pow2(SLEEP),'C'|CLRS(GREY,BROWN),"coma beast","dead coma beast","AXAXAXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML8+11,250,50,40,30,10,10,8,3,0,3,500,10,0,-1,-1,COMMON,M_TALK_SILENT,M_MOVE_SMART,M_MELEE_NORMAL,M_STRIKE_FBOLT,M_SP_ANGEL,MOBILE|FLYING,pow2(FLAME)|pow2(FEAR)|pow2(SLEEP),'A'|CLRS(YELLOW,WHITE),"high angel","high angel's robes","L?R?RXRX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML9+0,750,80,50,200,10,2,9,8,90,5,1000,500,2000,-1,WEAPONID+38,COMMON,M_TALK_GREEDY,M_MOVE_NORMAL,M_MELEE_NORMAL,M_STRIKE_MISSILE,M_SP_HUGE,MOBILE|HOSTILE|HUNGRY|GREEDY,pow2(COLD)|pow2(FEAR),'J'|CLRS(GREY,BROWN),"jotun","jotun's head","AHAHB?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML9+1,1000,50,30,40,20,2,9,4,40,0,750,100,200,CLOAKID+2,-1,COMMON,M_TALK_SILENT,M_MOVE_FLUTTER,M_MELEE_NORMAL,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|FLYING|M_INVISIBLE,pow2(ELECTRICITY),'i'|CLRS(BLACK,WHITE),"invisible slayer","dead slayer","AXAXAX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML9+2,700,50,32,50,5,2,9,3,80,4,1000,100,50,RINGID+6,-1,COMMON,M_TALK_GREEDY,M_MOVE_NORMAL,M_MELEE_POISON,M_NO_OP,M_NO_OP,MOBILE|HOSTILE|GREEDY|FLYING,pow2(FLAME)|pow2(POISON),'W'|CLRS(GREEN,RED),"king wyvern","king wyvern's sting","AXAXAXBXBX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML9+3,500,30,50,30,10,2,9,4,50,0,500,40,500,WEAPONID+33,-1,COMMON,M_NO_OP,M_MOVE_RANDOM,M_MELEE_NORMAL,M_NO_OP,M_SP_EXPLODE,MOBILE|HOSTILE|HUNGRY|FLYING|POISONOUS,pow2(FLAME),'d'|CLRS(BLACK,WHITE),"deathstar","deathstar's eye","BX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML9+4,250,20,25,25,5,5,9,4,50,4,1500,50,3000,-1,-1,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_NORMAL,M_SP_SPELL,M_SP_SPELL,MOBILE,pow2(FLAME)|pow2(COLD)|pow2(ELECTRICITY),'T'|CLRS(YELLOW,WHITE),"high thaumaturgist","dead thaumaturgist","A?B?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML9+5,750,70,50,50,10,1,9,2,50,0,1000,1,200,CLOAKID+1,-1,COMMON,M_TALK_EVIL,M_MOVE_SPIRIT,M_MELEE_SPIRIT,M_MELEE_SPIRIT,M_SP_SURPRISE,MOBILE|HOSTILE|FLYING|M_INVISIBLE,pow2(POISON)|pow2(FEAR)|pow2(SLEEP),'V'|CLRS(BLACK,RED),"vampire lord","vampire dust","A?A?A?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML9+6,1000,100,50,50,20,20,9,2,100,5,1500,15,3000,-1,WEAPONID+34,COMMON,M_TALK_SILENT,M_MOVE_SMART,M_MELEE_NORMAL,M_MELEE_SLEEP,M_SP_ANGEL,MOBILE|FLYING,pow2(FLAME)|pow2(COLD)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP)|pow2(OTHER_MAGIC),'A'|CLRS(YELLOW,WHITE),"archangel","archangel's diadem","L?R?R?R?R?R?R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML9+7,800,80,40,80,12,12,9,2,0,5,1200,4500,3000,-1,WEAPONID+24,COMMON,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_NORMAL,M_MELEE_NORMAL,M_SP_DEMON,MOBILE|HOSTILE|FLYING|POISONOUS,pow2(FLAME)|pow2(POISON)|pow2(FEAR)|pow2(SLEEP)|pow2(OTHER_MAGIC),'D'|CLRS(BLACK,RED),"demon prince","dead demon prince","LLLCLHRLRCRHRLRCRH" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+0,100,10,10,1,100,100,100,10,0,0,0,0,1,-1,WEAPONID+39,UNIQUE_MADE,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_DEATH,M_NO_OP,M_SP_DEATH,MOBILE|HOSTILE,pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(OTHER_MAGIC),'D'|CLRS(BLACK,WHITE),"Death","No way can you be seeing this!","AX" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+1,1000,0,20,0,3,3,10,5,50,0,10000,1000,250,STICKID+13,-1,UNIQUE_MADE,M_TALK_SILENT,M_MOVE_RANDOM,M_NO_OP,M_NO_OP,M_SP_EATER,MOBILE,pow2(FLAME)|pow2(COLD)|pow2(ELECTRICITY)|pow2(POISON)|pow2(ACID)|pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(OTHER_MAGIC)|pow2(THEFT)|pow2(GAZE)|pow2(INFECTION),'E'|CLRS(BLACK,WHITE),"The Eater of Magic","The Heart of the Eater of Magic","B?B?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+2,500,50,50,50,5,3,10,5,50,0,10000,1000,2000,-1,WEAPONID+34,UNIQUE_MADE,M_TALK_LB,M_MOVE_SMART,M_MELEE_NORMAL,M_NO_OP,M_SP_LAWBRINGER,MOBILE,pow2(NORMAL_DAMAGE),'L'|CLRS(BRIGHT_WHITE,BLUE),"The LawBringer","The LawBringer's Crown","A?A?B?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+3,2000,100,100,100,10,1,10,1,100,10,10000,1000,2000,ARMORID+12,-1,UNIQUE_MADE,M_TALK_EVIL,M_MOVE_NORMAL,M_MELEE_DRAGON,M_STRIKE_FBOLT,M_SP_DRAGONLORD,MOBILE|HOSTILE|FLYING,pow2(FLAME)|pow2(COLD)|pow2(ELECTRICITY)|pow2(ACID),'D'|CLRS(BRIGHT_WHITE,RED),"The Dragon Lord","The Dragon Lord's Hide","A?A?A?A?A?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+4,3000,200,100,200,20,20,10,2,0,7,20000,1000,3000,-1,ARTIFACTID+23,UNIQUE_MADE,M_TALK_EVIL,M_MOVE_SPIRIT,M_MELEE_SPIRIT,M_MELEE_NORMAL,M_SP_DEMON,MOBILE|HOSTILE|INTANGIBLE|M_INVISIBLE,pow2(FLAME)|pow2(COLD)|pow2(ELECTRICITY)|pow2(POISON)|pow2(ACID)|pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(OTHER_MAGIC)|pow2(THEFT)|pow2(GAZE)|pow2(INFECTION),'D'|CLRS(GREY,RED),"The Demon Emperor","The Demon Emperor's Regalia","L?L?L?L?L?R?R?R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+5,2000,200,100,200,5,1,10,12,0,0,5000,10000,1,-1,ARTIFACTID+4,UNIQUE_MADE,M_TALK_SILENT,M_MOVE_SPIRIT,M_MELEE_NORMAL,M_MELEE_NORMAL,M_SP_DE,MOBILE|INTANGIBLE,pow2(FLAME)|pow2(COLD)|pow2(POISON)|pow2(ACID)|pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(OTHER_MAGIC)|pow2(THEFT)|pow2(GAZE)|pow2(INFECTION),'E'|CLRS(BROWN,WHITE),"The Elemental Lord of Earth","some dirt","A?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+6,1000,100,50,50,20,1,10,1,100,0,5000,0,1,-1,ARTIFACTID+3,UNIQUE_MADE,M_TALK_SILENT,M_MOVE_SPIRIT,M_MELEE_NORMAL,M_STRIKE_LBALL,M_SP_WHIRL,MOBILE|FLYING|INTANGIBLE|M_INVISIBLE,pow2(FLAME)|pow2(COLD)|pow2(ELECTRICITY)|pow2(POISON)|pow2(ACID)|pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(THEFT)|pow2(GAZE)|pow2(INFECTION),'A'|CLRS(LIGHT_BLUE,WHITE),"The Elemental Lord of Air","some air","A?A?A?A?A?A?A?A?A?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+7,1500,100,100,100,5,1,10,5,100,0,5000,10,1,-1,ARTIFACTID+1,UNIQUE_MADE,M_TALK_SILENT,M_MOVE_NORMAL,M_MELEE_NORMAL,M_STRIKE_SNOWBALL,M_NO_OP,MOBILE|ONLYSWIM,pow2(COLD)|pow2(ELECTRICITY)|pow2(POISON)|pow2(ACID)|pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(OTHER_MAGIC)|pow2(THEFT)|pow2(GAZE)|pow2(INFECTION),'W'|CLRS(BLUE,WHITE),"The Elemental Lord of Water","some water","A?A?A?B?B?B?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+8,1500,200,100,300,10,1,10,3,100,0,5000,1000,1,-1,ARTIFACTID+2,UNIQUE_MADE,M_TALK_SILENT,M_MOVE_NORMAL,M_MELEE_FIRE,M_STRIKE_FBALL,M_NO_OP,MOBILE,pow2(FLAME)|pow2(ELECTRICITY)|pow2(POISON)|pow2(ACID)|pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(OTHER_MAGIC)|pow2(THEFT)|pow2(GAZE)|pow2(INFECTION),'F'|CLRS(LIGHT_RED,WHITE),"The Elemental Lord of Fire","a spark","A?A?A?R?R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+9,1000,200,200,200,20,20,10,2,0,10,10000,10000,1,-1,ARTIFACTID+0,UNIQUE_MADE,M_TALK_EVIL,M_MOVE_SMART,M_MELEE_MASTER,M_STRIKE_MASTER,M_SP_MASTER,MOBILE|FLYING|SWIMMING,pow2(NORMAL_DAMAGE)|pow2(COLD)|pow2(ELECTRICITY)|pow2(POISON)|pow2(ACID)|pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(OTHER_MAGIC)|pow2(THEFT)|pow2(GAZE)|pow2(INFECTION),'M'|CLRS(PURPLE,WHITE),"The Elemental Master","A burning mound of bubbling mud","A?A?A?A?R?R?R?R?" },
|
||||
|
||||
{ NULL,0,0,0,0,0,0,ML10+10,1150,90,90,48,10,20,10,2,0,7,6000,40,40,-1,ARTIFACTID+25,UNIQUE_MADE,M_TALK_MAHARAJA,M_MOVE_SMART,M_MELEE_NORMAL,M_MELEE_NORMAL,M_SP_DEMON,MOBILE|HOSTILE,pow2(FLAME)|pow2(COLD)|pow2(ELECTRICITY)|pow2(ACID)|pow2(FEAR)|pow2(SLEEP)|pow2(NEGENERGY)|pow2(THEFT)|pow2(INFECTION),'D'|CLRS(GREY,RED),"The Maharaja","The Maharaja's Skull","L?L?B?B?R?R?R?" }
|
||||
|
||||
};
|
304
mmelee.c
Normal file
304
mmelee.c
Normal file
@ -0,0 +1,304 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* mmelee */
|
||||
/* various functions to do with monster melee */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
void m_hit(pmt m, int dtype)
|
||||
{
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str3,"a ");
|
||||
strcat(Str3,m->monstring);
|
||||
}
|
||||
else strcpy(Str3,m->monstring);
|
||||
if ((Player.status[DISPLACED] > 0) && (random_range(2) == 1))
|
||||
mprint("The attack was displaced!");
|
||||
else p_damage(random_range(m->dmg),dtype,Str3);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* execute monster attacks versus player */
|
||||
void tacmonster(pmt m)
|
||||
{
|
||||
int i=0;
|
||||
drawvision(Player.x,Player.y);
|
||||
transcribe_monster_actions(m);
|
||||
while ((i < strlen(m->meleestr)) && (m->hp > 0)) {
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str4,"The ");
|
||||
strcat(Str4,m->monstring);
|
||||
}
|
||||
else strcpy(Str4,m->monstring);
|
||||
if (m->meleestr[i] == 'A') {
|
||||
strcat(Str4," attacks ");
|
||||
strcat(Str4,actionlocstr(m->meleestr[i+1]));
|
||||
if (Verbosity == VERBOSE) mprint(Str4);
|
||||
monster_melee(m,m->meleestr[i+1],0);
|
||||
}
|
||||
else if (m->meleestr[i] == 'L') {
|
||||
strcat(Str4," lunges ");
|
||||
strcat(Str4,actionlocstr(m->meleestr[i+1]));
|
||||
if (Verbosity == VERBOSE) mprint(Str4);
|
||||
monster_melee(m,m->meleestr[i+1],m->level);
|
||||
}
|
||||
i+=2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void monster_melee(pmt m, char hitloc, int bonus)
|
||||
{
|
||||
if (player_on_sanctuary())
|
||||
print1("The aegis of your deity protects you!");
|
||||
else {
|
||||
/* being attacked wakes you up/stops fast move */
|
||||
resetgamestatus(FAST_MOVE);
|
||||
|
||||
/* It's lawful to wait to be attacked */
|
||||
if (m->attacked==0) Player.alignment++;
|
||||
m->attacked++;
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
if (monster_hit(m,hitloc,bonus))
|
||||
switch(m->meleef) {
|
||||
case M_NO_OP:
|
||||
strcat(Str2," touches you.");
|
||||
mprint(Str2);
|
||||
break;
|
||||
case M_MELEE_NORMAL:
|
||||
strcat(Str2," hits you.");
|
||||
mprint(Str2);
|
||||
m_hit(m,NORMAL_DAMAGE);
|
||||
break;
|
||||
case M_MELEE_NG:
|
||||
strcat(Str2," hits you.");
|
||||
mprint(Str2);
|
||||
m_hit(m,NORMAL_DAMAGE);
|
||||
if (random_range(5)==3) m_sp_ng(m);
|
||||
break;
|
||||
case M_MELEE_FIRE:
|
||||
strcat(Str2," blasts you with fire.");
|
||||
mprint(Str2);
|
||||
m_hit(m,FLAME);
|
||||
break;
|
||||
case M_MELEE_DRAGON:
|
||||
strcat(Str2," hits you and blasts you with fire.");
|
||||
mprint(Str2);
|
||||
m_hit(m,NORMAL_DAMAGE);
|
||||
m_hit(m,FLAME);
|
||||
break;
|
||||
case M_MELEE_ELEC:
|
||||
strcat(Str2," lashes you with electricity.");
|
||||
mprint(Str2);
|
||||
m_hit(m,ELECTRICITY);
|
||||
break;
|
||||
case M_MELEE_COLD:
|
||||
strcat(Str2," freezes you with cold.");
|
||||
mprint(Str2);
|
||||
m_hit(m,ELECTRICITY);
|
||||
break;
|
||||
case M_MELEE_POISON:
|
||||
strcat(Str2," hits you.");
|
||||
mprint(Str2);
|
||||
m_hit(m,NORMAL_DAMAGE);
|
||||
if (random_range(10) < m->level) {
|
||||
mprint("You've been poisoned!");
|
||||
p_poison(m->dmg);
|
||||
}
|
||||
break;
|
||||
case M_MELEE_GRAPPLE:
|
||||
strcat(Str2," grabs you.");
|
||||
mprint(Str2);
|
||||
m_hit(m,NORMAL_DAMAGE);
|
||||
Player.status[IMMOBILE]++;
|
||||
break;
|
||||
case M_MELEE_SPIRIT:
|
||||
strcat(Str2," touches you.");
|
||||
mprint(Str2);
|
||||
m_hit(m,NORMAL_DAMAGE);
|
||||
drain_life(m->level);
|
||||
break;
|
||||
case M_MELEE_DISEASE:
|
||||
strcat(Str2," hits you.");
|
||||
mprint(Str2);
|
||||
m_hit(m,NORMAL_DAMAGE);
|
||||
if (random_range(10) < m->level) {
|
||||
mprint("You've been infected!");
|
||||
disease(m->level);
|
||||
}
|
||||
break;
|
||||
case M_MELEE_SLEEP:
|
||||
strcat(Str2," hit you.");
|
||||
mprint(Str2);
|
||||
m_hit(m,NORMAL_DAMAGE);
|
||||
if (random_range(10) < m->level) {
|
||||
mprint("You feel drowsy");
|
||||
sleep_player(m->level);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else {
|
||||
if (random_range(10)) strcat(Str2," missed you.");
|
||||
else {
|
||||
if (Verbosity == TERSE) {
|
||||
switch(random_range(10)) {
|
||||
case 0:
|
||||
strcat(Str2," blundered severely.");
|
||||
m_damage(m,m->dmg,UNSTOPPABLE); break;
|
||||
case 1:
|
||||
strcat(Str2," tripped while attacking.");m_dropstuff(m);break;
|
||||
case 2:
|
||||
strcat(Str2," seems seriously confused.");
|
||||
m->speed = min(30,m->speed*2); break;
|
||||
default:
|
||||
strcat(Str2," missed you.");
|
||||
}
|
||||
}
|
||||
switch(random_range(10)) {
|
||||
case 0: strcat(Str2," flailed stupidly at you."); break;
|
||||
case 1: strcat(Str2," made you laugh."); break;
|
||||
case 2: strcat(Str2," blundered severely.");
|
||||
m_damage(m,m->dmg,UNSTOPPABLE); break;
|
||||
case 3: strcat(Str2," tripped while attacking.");m_dropstuff(m);break;
|
||||
case 4: strcat(Str2," seems seriously confused.");
|
||||
m->speed = min(30,m->speed*2); break;
|
||||
case 5: strcat(Str2," is seriously ashamed."); break;
|
||||
case 6: strcat(Str2," made a boo-boo."); break;
|
||||
case 7: strcat(Str2," blundered."); break;
|
||||
case 8: strcat(Str2," cries out in anger and frustration."); break;
|
||||
case 9: strcat(Str2," curses your ancestry."); break;
|
||||
}
|
||||
}
|
||||
mprint(Str2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* checks to see if player hits with hitmod vs. monster m at location hitloc */
|
||||
int monster_hit(pmt m, char hitloc, int bonus)
|
||||
{
|
||||
int i=0,blocks=FALSE,goodblocks=0,hit,riposte=FALSE;
|
||||
while (i<strlen(Player.meleestr)) {
|
||||
if ((Player.meleestr[i] == 'B') || (Player.meleestr[i] == 'R')) {
|
||||
blocks = TRUE;
|
||||
if (hitloc == Player.meleestr[i+1]) {
|
||||
goodblocks++;
|
||||
if (Player.meleestr[i] == 'R') riposte = TRUE;
|
||||
}
|
||||
}
|
||||
i+=2;
|
||||
}
|
||||
if (! blocks) goodblocks = -1;
|
||||
hit = hitp(m->hit+bonus,Player.defense+goodblocks*10);
|
||||
if ((! hit) && (goodblocks > 0)) {
|
||||
if (Verbosity == VERBOSE) mprint("You blocked it!");
|
||||
if (riposte) {
|
||||
if (Verbosity != TERSE) mprint("You got a riposte!");
|
||||
if (hitp(Player.hit,m->ac)) {
|
||||
mprint("You hit!");
|
||||
weapon_use(0,Player.possessions[O_WEAPON_HAND],m);
|
||||
}
|
||||
else mprint("You missed.");
|
||||
}
|
||||
}
|
||||
return(hit);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* decide monster actions in tactical combat mode */
|
||||
/* if monster is skilled, it can try see the player's attacks coming and
|
||||
try to block appropriately. */
|
||||
|
||||
void transcribe_monster_actions(pmt m)
|
||||
{
|
||||
int i;
|
||||
char attack_loc,block_loc;
|
||||
static char mmstr[80];
|
||||
|
||||
int p_blocks[3];
|
||||
int p_attacks[3];
|
||||
|
||||
for(i=0;i<3;i++)p_blocks[i] = p_attacks[i] = 0;
|
||||
|
||||
/* Find which area player blocks and attacks least in */
|
||||
i = 0;
|
||||
while (i<strlen(Player.meleestr)) {
|
||||
if ((Player.meleestr[i] == 'B') ||
|
||||
(Player.meleestr[i] == 'R')) {
|
||||
if (Player.meleestr[i+1] == 'H') p_blocks[0]++;
|
||||
if (Player.meleestr[i+1] == 'C') p_blocks[1]++;
|
||||
if (Player.meleestr[i+1] == 'L') p_blocks[2]++;
|
||||
}
|
||||
else if ((Player.meleestr[i] == 'A') ||
|
||||
(Player.meleestr[i] == 'L')) {
|
||||
if (Player.meleestr[i+1] == 'H') p_attacks[0]++;
|
||||
if (Player.meleestr[i+1] == 'C') p_attacks[1]++;
|
||||
if (Player.meleestr[i+1] == 'L') p_attacks[2]++;
|
||||
}
|
||||
i+=2;
|
||||
}
|
||||
|
||||
if ((p_blocks[2] <= p_blocks[1]) &&
|
||||
(p_blocks[2] <= p_blocks[0]))
|
||||
attack_loc = 'L';
|
||||
else if ((p_blocks[1] <= p_blocks[2]) &&
|
||||
(p_blocks[1] <= p_blocks[0]))
|
||||
attack_loc = 'C'; /* DG 12/31/98 */
|
||||
else attack_loc = 'H';
|
||||
if ((p_attacks[2] <= p_attacks[1]) &&
|
||||
(p_attacks[2] <= p_attacks[0]))
|
||||
block_loc = 'L';
|
||||
else if ((p_attacks[1] <= p_attacks[2]) &&
|
||||
(p_attacks[1] <= p_attacks[0]))
|
||||
block_loc = 'C';
|
||||
else block_loc = 'H';
|
||||
|
||||
m->meleestr = mmstr;
|
||||
|
||||
if (m->id != NPC)
|
||||
strcpy(m->meleestr,Monsters[m->id].meleestr);
|
||||
else {
|
||||
strcpy(m->meleestr,"");
|
||||
for(i=0;i<m->level;i+=2)
|
||||
strcat(m->meleestr,"L?R?");
|
||||
}
|
||||
|
||||
i = 0;
|
||||
while (i<strlen(m->meleestr)) {
|
||||
if ((m->meleestr[i] == 'A') || (m->meleestr[i] == 'L')) {
|
||||
if (m->meleestr[i+1] == '?') {
|
||||
if (m->level+random_range(30) > Player.level+random_range(20))
|
||||
m->meleestr[i+1] = attack_loc;
|
||||
else m->meleestr[i+1] = random_loc();
|
||||
}
|
||||
else if (m->meleestr[i+1] == 'X') m->meleestr[i+1] = random_loc();
|
||||
}
|
||||
else if ((m->meleestr[i] == 'B') || (m->meleestr[i] == 'R')) {
|
||||
if (m->meleestr[i+1] == '?') {
|
||||
if (m->level+random_range(30) > Player.level+random_range(20))
|
||||
m->meleestr[i+1] = block_loc;
|
||||
else m->meleestr[i+1] = random_loc();
|
||||
}
|
||||
else if (m->meleestr[i+1] == 'X') m->meleestr[i+1] = random_loc();
|
||||
}
|
||||
i+=2;
|
||||
}
|
||||
}
|
||||
|
||||
char random_loc(void)
|
||||
{
|
||||
switch(random_range(3)) {
|
||||
case 0:return('H');
|
||||
case 1:return('C');
|
||||
default:return('L');
|
||||
}
|
||||
}
|
267
mmove.c
Normal file
267
mmove.c
Normal file
@ -0,0 +1,267 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* mmove.c */
|
||||
/* monster move functions */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
/* like m_normal_move, but can open doors */
|
||||
void m_smart_move(pmt m)
|
||||
{
|
||||
m_simple_move(m);
|
||||
}
|
||||
|
||||
/* not very smart, but not altogether stupid movement */
|
||||
void m_normal_move(pmt m)
|
||||
{
|
||||
m_simple_move(m);
|
||||
}
|
||||
|
||||
|
||||
/* used by both m_normal_move and m_smart_move */
|
||||
void m_simple_move(pmt m)
|
||||
{
|
||||
int dx = sign(Player.x - m->x);
|
||||
int dy = sign(Player.y - m->y);
|
||||
|
||||
erase_monster(m);
|
||||
if (m->hp < Monsters[m->id].hp/4) {
|
||||
dx = - dx;
|
||||
dy = - dy;
|
||||
m->movef = M_MOVE_SCAREDY;
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
if (m->possessions != NULL) {
|
||||
strcat(Str2," drops its treasure and flees!");
|
||||
m_dropstuff(m);
|
||||
}
|
||||
else strcat(Str2," flees!");
|
||||
mprint(Str2);
|
||||
m->speed = min(2,m->speed-1);
|
||||
}
|
||||
if ((! m_statusp(m,HOSTILE) && !m_statusp(m, NEEDY)) ||
|
||||
(Player.status[INVISIBLE] > 0)) m_random_move(m);
|
||||
else {
|
||||
if (m_unblocked(m,m->x+dx,m->y+dy))
|
||||
movemonster(m,m->x+dx,m->y+dy);
|
||||
else if (dx == 0) {
|
||||
if (m_unblocked(m,m->x+1,m->y+dy))
|
||||
movemonster(m,m->x+1,m->y+dy);
|
||||
else if (m_unblocked(m,m->x-1,m->y+dy))
|
||||
movemonster(m,m->x-1,m->y+dy);
|
||||
}
|
||||
|
||||
else if (dy == 0) {
|
||||
if (m_unblocked(m,m->x+dx,m->y+1))
|
||||
movemonster(m,m->x+dx,m->y+1);
|
||||
else if (m_unblocked(m,m->x+dx,m->y-1))
|
||||
movemonster(m,m->x+dx,m->y-1);
|
||||
}
|
||||
|
||||
else {
|
||||
if (m_unblocked(m,m->x+dx,m->y))
|
||||
movemonster(m,m->x+dx,m->y);
|
||||
else if (m_unblocked(m,m->x,m->y+dy))
|
||||
movemonster(m,m->x,m->y+dy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_move_animal(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE))
|
||||
m_normal_move(m);
|
||||
else m_scaredy_move(m);
|
||||
}
|
||||
|
||||
|
||||
/* same as simple move except run in opposite direction */
|
||||
void m_scaredy_move(pmt m)
|
||||
{
|
||||
int dx = -sign(Player.x - m->x);
|
||||
int dy = -sign(Player.y - m->y);
|
||||
erase_monster(m);
|
||||
if (Player.status[INVISIBLE]) m_random_move(m);
|
||||
else {
|
||||
if (m_unblocked(m,m->x+dx,m->y+dy))
|
||||
movemonster(m,m->x+dx,m->y+dy);
|
||||
else if (dx == 0) {
|
||||
if (m_unblocked(m,m->x+1,m->y+dy))
|
||||
movemonster(m,m->x+1,m->y+dy);
|
||||
else if (m_unblocked(m,m->x-1,m->y+dy))
|
||||
movemonster(m,m->x-1,m->y+dy);
|
||||
}
|
||||
|
||||
else if (dy == 0) {
|
||||
if (m_unblocked(m,m->x+dx,m->y+1))
|
||||
movemonster(m,m->x+dx,m->y+1);
|
||||
else if (m_unblocked(m,m->x+dx,m->y-1))
|
||||
movemonster(m,m->x+dx,m->y-1);
|
||||
}
|
||||
|
||||
else {
|
||||
if (m_unblocked(m,m->x+dx,m->y))
|
||||
movemonster(m,m->x+dx,m->y);
|
||||
else if (m_unblocked(m,m->x,m->y+dy))
|
||||
movemonster(m,m->x,m->y+dy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* for spirits (and earth creatures) who can ignore blockages because
|
||||
either they are noncorporeal or they can move through stone */
|
||||
void m_spirit_move(pmt m)
|
||||
{
|
||||
int dx = sign(Player.x - m->x);
|
||||
int dy = sign(Player.y - m->y);
|
||||
erase_monster(m);
|
||||
if (m->hp < Monsters[m->id].hp/6) {
|
||||
dx = -dx;
|
||||
dy = -dy;
|
||||
}
|
||||
|
||||
if (Player.status[INVISIBLE] > 0 || !m_unblocked(m, m->x+dx, m->y+dy))
|
||||
m_random_move(m);
|
||||
else
|
||||
movemonster(m,m->x+dx,m->y+dy);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* fluttery dumb movement */
|
||||
void m_flutter_move(pmt m)
|
||||
{
|
||||
int trange,range = distance(m->x,m->y,Player.x,Player.y);
|
||||
int i,tx,ty,nx=m->x,ny=m->y;
|
||||
erase_monster(m);
|
||||
if (Player.status[INVISIBLE] > 0) m_random_move(m);
|
||||
else {
|
||||
for (i=0;i<8;i++) {
|
||||
tx = m->x+Dirs[0][i];
|
||||
ty = m->y+Dirs[1][i];
|
||||
trange = distance(tx,ty,Player.x,Player.y);
|
||||
if (m->hp < Monsters[m->id].hp/6) {
|
||||
if ((trange > range) && m_unblocked(m,tx,ty)) {
|
||||
range = trange;
|
||||
nx = tx;
|
||||
ny = ty;
|
||||
}
|
||||
}
|
||||
else if ((trange <= range) && m_unblocked(m,tx,ty)) {
|
||||
range = trange;
|
||||
nx = tx;
|
||||
ny = ty;
|
||||
}
|
||||
}
|
||||
movemonster(m,nx,ny);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_follow_move(pmt m)
|
||||
{
|
||||
if (! m_statusp(m,HOSTILE))
|
||||
m_normal_move(m);
|
||||
else m_scaredy_move(m);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* allows monsters to fall into pools, revealed traps, etc */
|
||||
void m_confused_move(pmt m)
|
||||
{
|
||||
int i,nx,ny,done=FALSE;
|
||||
erase_monster(m);
|
||||
for (i=0;((i<8)&&(! done));i++) {
|
||||
nx = m->x+random_range(3)-1;
|
||||
ny = m->y+random_range(3)-1;
|
||||
if (unblocked(nx,ny) &&
|
||||
((nx != Player.x) ||
|
||||
(ny != Player.y))) {
|
||||
done = TRUE;
|
||||
movemonster(m,nx,ny);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void m_random_move(pmt m)
|
||||
{
|
||||
int i,nx,ny,done=FALSE;
|
||||
erase_monster(m);
|
||||
for (i=0;((i<8)&&(! done));i++) {
|
||||
nx = m->x+random_range(3)-1;
|
||||
ny = m->y+random_range(3)-1;
|
||||
if (m_unblocked(m,nx,ny) &&
|
||||
((nx != Player.x) ||
|
||||
(ny != Player.y))) {
|
||||
done = TRUE;
|
||||
movemonster(m,nx,ny);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* monster removed from play */
|
||||
void m_vanish(pmt m)
|
||||
{
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," vanishes in the twinkling of an eye!");
|
||||
mprint(Str2);
|
||||
m_remove( m );/* signals "death" -- no credit to player, though */
|
||||
}
|
||||
|
||||
/* monster still in play */
|
||||
void m_teleport(pmt m)
|
||||
{
|
||||
erase_monster(m);
|
||||
if (m_statusp(m,AWAKE)) {
|
||||
Level->site[m->x][m->y].creature = NULL;
|
||||
putspot(m->x,m->y,getspot(m->x,m->y,FALSE));
|
||||
findspace(&(m->x),&(m->y),-1);
|
||||
Level->site[m->x][m->y].creature = m;
|
||||
}
|
||||
}
|
||||
|
||||
void m_move_leash(pmt m)
|
||||
{
|
||||
m_simple_move(m);
|
||||
if (m->aux1 == 0) {
|
||||
m->aux1 = m->x;
|
||||
m->aux2 = m->y;
|
||||
}
|
||||
else if (distance(m->x,m->y,m->aux1,m->aux2) > 5) {
|
||||
if (Level->site[m->aux1][m->aux2].creature != NULL) {
|
||||
if (los_p(Player.x,Player.y,m->aux1,m->aux2)) {
|
||||
/* some other monster is where the chain starts */
|
||||
if (Level->site[m->aux1][m->aux2].creature->uniqueness == COMMON) {
|
||||
strcpy(Str1, "The ");
|
||||
strcat(Str1, Level->site[m->aux1][m->aux2].creature->monstring);
|
||||
}
|
||||
else
|
||||
strcpy(Str1, Level->site[m->aux1][m->aux2].creature->monstring);
|
||||
strcat(Str1, " releases the dog's chain!");
|
||||
mprint(Str1);
|
||||
}
|
||||
m->movef = M_MOVE_NORMAL;
|
||||
/* otherwise, we'd lose either the dog or the other monster. */
|
||||
}
|
||||
else if (los_p(Player.x,Player.y,m->x,m->y)) {
|
||||
mprint("You see the dog jerked back by its chain!");
|
||||
plotspot(m->x, m->y, FALSE);
|
||||
}
|
||||
else mprint("You hear a strangled sort of yelp!");
|
||||
Level->site[m->x][m->y].creature = NULL;
|
||||
m->x = m->aux1;
|
||||
m->y = m->aux2;
|
||||
Level->site[m->x][m->y].creature = m;
|
||||
}
|
||||
}
|
362
movef.c
Normal file
362
movef.c
Normal file
@ -0,0 +1,362 @@
|
||||
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
|
||||
/* movef.c */
|
||||
/* the movefunctions switch functions, for player and monster*/
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
|
||||
void p_movefunction(int movef)
|
||||
{
|
||||
/* loc functs above traps should be activated whether levitating or not */
|
||||
drawvision(Player.x,Player.y);
|
||||
sign_print(Player.x,Player.y,FALSE);
|
||||
if (Player.status[SHADOWFORM])
|
||||
switch(movef) { /* player in shadow form is unable to do most things */
|
||||
case L_CHAOS:l_chaos(); break;
|
||||
case L_ABYSS:l_abyss(); break;
|
||||
case L_ARENA_EXIT:l_arena_exit(); break;
|
||||
case L_ENTER_COURT:l_enter_court(); break;
|
||||
case L_ESCALATOR:l_escalator(); break;
|
||||
case L_COLLEGE:l_college(); break;
|
||||
case L_SORCERORS:l_sorcerors(); break;
|
||||
case L_ALTAR:l_altar(); break;
|
||||
case L_TACTICAL_EXIT:l_tactical_exit(); break;
|
||||
case L_HOUSE_EXIT:l_house_exit(); break;
|
||||
case L_HOUSE: l_house(); break;
|
||||
case L_HOVEL: l_hovel(); break;
|
||||
case L_MANSION: l_mansion(); break;
|
||||
case L_COUNTRYSIDE:l_countryside(); break;
|
||||
case L_ORACLE:l_oracle(); break;
|
||||
case L_TEMPLE_WARNING:l_temple_warning(); break;
|
||||
case L_ENTER_CIRCLE:l_enter_circle(); break;
|
||||
case L_CIRCLE_LIBRARY:l_circle_library(); break;
|
||||
case L_TOME1: l_tome1(); break;
|
||||
case L_TOME2: l_tome2(); break;
|
||||
case L_ADEPT:l_adept(); break;
|
||||
case L_VOICE1:l_voice1();break;
|
||||
case L_VOICE2:l_voice2();break;
|
||||
case L_VOICE3:l_voice3();break;
|
||||
case L_VOID:l_void();break;
|
||||
case L_FIRE_STATION:l_fire_station();break;
|
||||
case L_EARTH_STATION:l_earth_station();break;
|
||||
case L_WATER_STATION:l_water_station();break;
|
||||
case L_AIR_STATION:l_air_station();break;
|
||||
case L_VOID_STATION:l_void_station();break;
|
||||
}
|
||||
else if ((! Player.status[LEVITATING]) ||
|
||||
gamestatusp(MOUNTED) ||
|
||||
(Cmd == '@') || /* @ command activates all effects under player */
|
||||
(movef < LEVITATION_AVOIDANCE)) {
|
||||
if (movef != L_NO_OP) {
|
||||
resetgamestatus(FAST_MOVE);
|
||||
dataprint();
|
||||
}
|
||||
switch(movef) {
|
||||
/* miscellaneous */
|
||||
case L_NO_OP:l_no_op(); break;
|
||||
case L_HEDGE:l_hedge(); break;
|
||||
case L_WATER:l_water(); break;
|
||||
case L_LIFT:l_lift(); break;
|
||||
case L_LAVA:l_lava(); break;
|
||||
case L_FIRE:l_fire(); break;
|
||||
case L_WHIRLWIND:l_whirlwind(); break;
|
||||
case L_RUBBLE:l_rubble(); break;
|
||||
case L_MAGIC_POOL:l_magic_pool(); break;
|
||||
case L_CHAOS:l_chaos(); break;
|
||||
case L_ABYSS:l_abyss(); break;
|
||||
|
||||
case L_PORTCULLIS_TRAP:l_portcullis_trap(); break;
|
||||
case L_RAISE_PORTCULLIS:l_raise_portcullis(); break;
|
||||
case L_DROP_EVERY_PORTCULLIS:l_drop_every_portcullis(); break;
|
||||
case L_ARENA_EXIT:l_arena_exit(); break;
|
||||
case L_TRIFID:l_trifid(); break;
|
||||
case L_ENTER_COURT:l_enter_court(); break;
|
||||
case L_ESCALATOR:l_escalator(); break;
|
||||
case L_THRONE:l_throne(); break;
|
||||
|
||||
case L_TRAP_DART:l_trap_dart(); break;
|
||||
case L_TRAP_SIREN:l_trap_siren(); break;
|
||||
case L_TRAP_PIT:l_trap_pit(); break;
|
||||
case L_TRAP_DOOR:l_trap_door(); break;
|
||||
case L_TRAP_SNARE:l_trap_snare(); break;
|
||||
case L_TRAP_BLADE:l_trap_blade(); break;
|
||||
case L_TRAP_FIRE:l_trap_fire(); break;
|
||||
case L_TRAP_TELEPORT:l_trap_teleport(); break;
|
||||
case L_TRAP_DISINTEGRATE:l_trap_disintegrate(); break;
|
||||
case L_TRAP_SLEEP_GAS:l_trap_sleepgas(); break;
|
||||
case L_TRAP_MANADRAIN:l_trap_manadrain(); break;
|
||||
case L_TRAP_ACID:l_trap_acid(); break;
|
||||
case L_TRAP_ABYSS:l_trap_abyss(); break;
|
||||
|
||||
/*door functions */
|
||||
case L_BANK:l_bank(); break;
|
||||
case L_ARMORER:l_armorer(); break;
|
||||
case L_CLUB:l_club(); break;
|
||||
case L_GYM:l_gym(); break;
|
||||
case L_BROTHEL:l_brothel(); break;
|
||||
case L_THIEVES_GUILD:l_thieves_guild(); break;
|
||||
case L_COLLEGE:l_college(); break;
|
||||
case L_HEALER:l_healer(); break;
|
||||
case L_STATUE_WAKE:l_statue_wake(); break;
|
||||
case L_CASINO:l_casino(); break;
|
||||
case L_COMMANDANT:l_commandant(); break;
|
||||
case L_DINER:l_diner(); break;
|
||||
case L_CRAP:l_crap(); break;
|
||||
case L_TAVERN:l_tavern(); break;
|
||||
case L_MERC_GUILD:l_merc_guild(); break;
|
||||
#ifdef INCLUDE_MONKS
|
||||
case L_MONASTERY:l_monastery(); break;
|
||||
#endif
|
||||
case L_ALCHEMIST:l_alchemist(); break;
|
||||
case L_SORCERORS:l_sorcerors(); break;
|
||||
case L_CASTLE:l_castle(); break;
|
||||
case L_ARENA:l_arena(); break;
|
||||
case L_VAULT:l_vault(); break;
|
||||
case L_DPW:l_dpw(); break;
|
||||
case L_LIBRARY:l_library(); break;
|
||||
case L_PAWN_SHOP:l_pawn_shop(); break;
|
||||
case L_CONDO:l_condo(); break;
|
||||
case L_TOURIST:l_tourist(); break;
|
||||
case L_ALTAR:l_altar(); break;
|
||||
case L_TACTICAL_EXIT:l_tactical_exit(); break;
|
||||
case L_HOUSE_EXIT:l_house_exit(); break;
|
||||
case L_SAFE: l_safe(); break;
|
||||
case L_HOUSE: l_house(); break;
|
||||
case L_HOVEL: l_hovel(); break;
|
||||
case L_MANSION: l_mansion(); break;
|
||||
case L_COUNTRYSIDE:l_countryside(); break;
|
||||
case L_ORACLE:l_oracle(); break;
|
||||
case L_ORDER:l_order(); break;
|
||||
case L_CARTOGRAPHER:l_cartographer(); break;
|
||||
|
||||
case L_TEMPLE_WARNING:l_temple_warning(); break;
|
||||
case L_ENTER_CIRCLE:l_enter_circle(); break;
|
||||
case L_CIRCLE_LIBRARY:l_circle_library(); break;
|
||||
case L_TOME1: l_tome1(); break;
|
||||
case L_TOME2: l_tome2(); break;
|
||||
|
||||
case L_CHARITY: l_charity(); break;
|
||||
|
||||
case L_CHAOSTONE:l_chaostone();break;
|
||||
case L_VOIDSTONE:l_voidstone();break;
|
||||
case L_BALANCESTONE:l_balancestone();break;
|
||||
case L_LAWSTONE:l_lawstone();break;
|
||||
case L_SACRIFICESTONE:l_sacrificestone(); break;
|
||||
case L_MINDSTONE:l_mindstone(); break;
|
||||
|
||||
/* challenge functions */
|
||||
case L_ADEPT:l_adept(); break;
|
||||
case L_VOICE1:l_voice1();break;
|
||||
case L_VOICE2:l_voice2();break;
|
||||
case L_VOICE3:l_voice3();break;
|
||||
case L_VOID:l_void();break;
|
||||
case L_FIRE_STATION:l_fire_station();break;
|
||||
case L_EARTH_STATION:l_earth_station();break;
|
||||
case L_WATER_STATION:l_water_station();break;
|
||||
case L_AIR_STATION:l_air_station();break;
|
||||
case L_VOID_STATION:l_void_station();break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* execute some move function for a monster */
|
||||
void m_movefunction(pmt m, int movef)
|
||||
{
|
||||
/* loc functs above traps should be activated whether levitating or not */
|
||||
if (! m_statusp(m,FLYING) && ! m_statusp(m, INTANGIBLE))
|
||||
switch(movef) {
|
||||
|
||||
/* miscellaneous */
|
||||
case L_NO_OP:m_no_op(m); break;
|
||||
case L_WATER:m_water(m); break;
|
||||
case L_LAVA:m_lava(m); break;
|
||||
case L_FIRE:m_fire(m); break;
|
||||
case L_MAGIC_POOL:m_water(m); break;
|
||||
case L_ABYSS: m_abyss(m); break;
|
||||
|
||||
case L_TRAP_DART:m_trap_dart(m); break;
|
||||
case L_TRAP_PIT:m_trap_pit(m); break;
|
||||
case L_TRAP_DOOR:m_trap_door(m); break;
|
||||
case L_TRAP_SNARE:m_trap_snare(m); break;
|
||||
case L_TRAP_BLADE:m_trap_blade(m); break;
|
||||
case L_TRAP_FIRE:m_trap_fire(m); break;
|
||||
case L_TRAP_TELEPORT:m_trap_teleport(m); break;
|
||||
case L_TRAP_DISINTEGRATE:m_trap_disintegrate(m); break;
|
||||
case L_TRAP_MANADRAIN:m_trap_manadrain(m); break;
|
||||
case L_TRAP_SLEEP_GAS:m_trap_sleepgas(m); break;
|
||||
case L_TRAP_ACID:m_trap_acid(m); break;
|
||||
case L_TRAP_ABYSS:m_trap_abyss(m);break;
|
||||
|
||||
case L_ALTAR:m_altar(m); break;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MSDOS_SUPPORTED_ANTIQUE
|
||||
/* ****Moved here from another file**** */
|
||||
/* if signp is true, always print message, otherwise do so only sometimes */
|
||||
void sign_print(int x, int y, int signp)
|
||||
{
|
||||
if ((Level->site[x][y].p_locf >= CITYSITEBASE) &&
|
||||
(Level->site[x][y].p_locf < CITYSITEBASE+NUMCITYSITES))
|
||||
CitySiteList[Level->site[x][y].p_locf - CITYSITEBASE][0] = TRUE;
|
||||
switch(Level->site[x][y].p_locf) {
|
||||
case L_CHARITY:
|
||||
print1("You notice a sign: The Rampart Orphanage And Hospice For The Needy.");
|
||||
break;
|
||||
case L_MANSION:
|
||||
print1("You notice a sign:");
|
||||
print2("This edifice protected by DeathWatch Devices, Ltd.");
|
||||
morewait();
|
||||
break;
|
||||
case L_GRANARY:
|
||||
print1("You notice a sign:");
|
||||
print2("Public Granary: Entrance Strictly Forbidden.");
|
||||
break;
|
||||
case L_PORTCULLIS:
|
||||
if (Level->site[x][y].locchar == FLOOR)
|
||||
print1("You see a groove in the floor and slots above you.");
|
||||
break;
|
||||
case L_STABLES:
|
||||
print1("You notice a sign:");
|
||||
print2("Village Stables");
|
||||
break;
|
||||
case L_COMMONS:
|
||||
print1("You notice a sign:");
|
||||
print2("Village Commons: No wolves allowed.");
|
||||
break;
|
||||
case L_MAZE:
|
||||
print1("You notice a sign:");
|
||||
print2("Hedge maze closed for trifid extermination.");
|
||||
break;
|
||||
case L_BANK:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("First Bank of Omega: Autoteller Carrel.");
|
||||
}
|
||||
break;
|
||||
case L_TEMPLE:
|
||||
print1("You see the ornate portico of the Rampart Pantheon");
|
||||
break;
|
||||
case L_ARMORER:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Julie's Armor of Proof and Weapons of Quality");
|
||||
}
|
||||
break;
|
||||
case L_CLUB:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Rampart Explorers' Club.");
|
||||
}
|
||||
break;
|
||||
case L_GYM:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("The Rampart Gymnasium, (affil. Rampart Coliseum).");
|
||||
}
|
||||
break;
|
||||
case L_HEALER:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Rampart Healers. Member RMA.");
|
||||
}
|
||||
break;
|
||||
case L_CASINO:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Rampart Mithril Nugget Casino.");
|
||||
}
|
||||
break;
|
||||
case L_SEWER:
|
||||
print1("A sewer entrance. You don't want to go down THERE, do you?");
|
||||
break;
|
||||
case L_COMMANDANT:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Commandant Sonder's Rampart-fried Lyzzard partes. Open 24 hrs.");
|
||||
}
|
||||
break;
|
||||
case L_DINER:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("The Rampart Diner. All you can eat, 25Au.");
|
||||
}
|
||||
break;
|
||||
case L_CRAP:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Les Crapeuleaux. (****)");
|
||||
}
|
||||
break;
|
||||
case L_TAVERN:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("The Centaur and Nymph -- J. Riley, prop.");
|
||||
}
|
||||
break;
|
||||
case L_ALCHEMIST:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Ambrosias' Potions et cie.");
|
||||
}
|
||||
break;
|
||||
case L_DPW:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Rampart Department of Public Works.");
|
||||
}
|
||||
break;
|
||||
case L_LIBRARY:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Rampart Public Library.");
|
||||
}
|
||||
break;
|
||||
case L_CONDO:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
if (gamestatusp(SOLD_CONDO))
|
||||
print2("Home Sweet Home");
|
||||
else print2("Luxury Condominium For Sale; Inquire Within");
|
||||
}
|
||||
break;
|
||||
case L_PAWN_SHOP:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Knight's Pawn Shop.");
|
||||
}
|
||||
break;
|
||||
case L_CEMETARY:
|
||||
print1("You notice a sign:");
|
||||
print2("Rampart City Cemetary. Closed -- Full.");
|
||||
break;
|
||||
case L_GARDEN:
|
||||
print1("You notice a sign:");
|
||||
print2("Rampart Botanical Gardens---Do not deface statues.");
|
||||
break;
|
||||
case L_JAIL:
|
||||
print1("You notice a sign:");
|
||||
print2("Rampart City Gaol -- always room for more.");
|
||||
break;
|
||||
#ifdef INCLUDE_MONKS
|
||||
case L_MONASTERY:
|
||||
print1("You notice a sign:");
|
||||
print2("Tholian Monastery. Truthseekers Welcome.");
|
||||
break;
|
||||
#endif
|
||||
case L_ORACLE:
|
||||
print1("You notice a sign:");
|
||||
print2("The Oracle of the Cyan Flames");
|
||||
morewait();
|
||||
break;
|
||||
case L_PAWN_SHOP:
|
||||
if (signp) {
|
||||
print1("You notice a sign:");
|
||||
print2("Knight's Pawn Shop.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
746
mspec.c
Normal file
746
mspec.c
Normal file
@ -0,0 +1,746 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* mspec.c */
|
||||
/* monster special functions */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
void m_sp_mp(pmt m)
|
||||
{
|
||||
if (m->attacked && (random_range(3) == 1)) {
|
||||
mprint("You feel cursed!");
|
||||
p_damage(10,UNSTOPPABLE,"a mendicant priest's curse");
|
||||
m_vanish(m);
|
||||
}
|
||||
else if (! m_statusp(m,NEEDY)) {
|
||||
mprint("The mendicant priest makes a mystical gesture....");
|
||||
mprint("You feel impressed...");
|
||||
Player.alignment += 5;
|
||||
if (Player.alignment > 20)
|
||||
Player.hp = max(Player.hp,Player.maxhp);
|
||||
m_vanish(m);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_ng(pmt m)
|
||||
{
|
||||
if (distance(m->x,m->y,Player.x,Player.y) < 2)
|
||||
if ((random_range(5) == 1) || (Player.status[VULNERABLE]>0)) {
|
||||
mprint("The night gaunt grabs you and carries you off!");
|
||||
mprint("Its leathery wings flap and flap, and it giggles insanely.");
|
||||
mprint("It tickles you cunningly to render you incapable of escape.");
|
||||
mprint("Finally, it deposits you in a strange place.");
|
||||
p_teleport(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m_sp_poison_cloud(pmt m)
|
||||
{
|
||||
if (distance(m->x,m->y,Player.x,Player.y) < 3) {
|
||||
mprint("A cloud of poison gas surrounds you!");
|
||||
if (Player.status[BREATHING] > 0)
|
||||
mprint("You can breathe freely, however.");
|
||||
else p_poison(7);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_explode(pmt m)
|
||||
{
|
||||
if ((distance(Player.x,Player.y,m->x,m->y)<2) &&
|
||||
(m-> hp > 0) &&
|
||||
(m->hp < Monsters[m->id].hp))
|
||||
fball(m->x,m->y,m->x,m->y,m->hp);
|
||||
}
|
||||
|
||||
|
||||
void m_sp_demon (pmt m)
|
||||
{
|
||||
int mid;
|
||||
|
||||
if (random_range(2))
|
||||
{
|
||||
if ((m->id != INCUBUS) /* succubi don't give fear */
|
||||
&& los_p(m->x, m->y, Player.x, Player.y)
|
||||
&& (random_range(30) > (Player.level + 10))
|
||||
&& (0 == Player.status[AFRAID]))
|
||||
{
|
||||
mprint("You are stricken with fear!");
|
||||
if (!p_immune(FEAR))
|
||||
Player.status[AFRAID] += m->level;
|
||||
else
|
||||
mprint("You master your reptile brain and stand fast.");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sp_spell(m);
|
||||
}
|
||||
}
|
||||
|
||||
if ((m->hp < (m->level * 5)) && (m->hp > 1))
|
||||
{
|
||||
mprint("The demon uses its waning lifeforce to summon help!");
|
||||
m->hp = 1;
|
||||
switch(m->level)
|
||||
{
|
||||
case 3: mid = NIGHT_GAUNT; break;
|
||||
case 4:
|
||||
case 5: mid = L_FDEMON; break; /* lesser frost demon */
|
||||
case 6: mid = FROST_DEMON; break;
|
||||
case 7: mid = OUTER_DEMON; break; /* outer circle demon */
|
||||
case 8: mid = DEMON_SERP; break; /* demon serpent */
|
||||
case 9: mid = INNER_DEMON; break; /* inner circle demon */
|
||||
default: mid = 0; assert(FALSE); /* bomb on error */
|
||||
}
|
||||
|
||||
summon(-1, mid);
|
||||
summon(-1, mid);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_acid_cloud(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE) &&
|
||||
(distance(m->x,m->y,Player.x,Player.y) < 3))
|
||||
acid_cloud();
|
||||
}
|
||||
|
||||
|
||||
void m_sp_escape(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE))
|
||||
m_vanish(m);
|
||||
}
|
||||
|
||||
|
||||
void m_sp_ghost(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
mprint("The ghost moans horribly....");
|
||||
p_damage(1,FEAR,"a ghost-inspired heart attack");
|
||||
mprint("You've been terrorized!");
|
||||
if (! p_immune(FEAR)) Player.status[AFRAID] += m->level;
|
||||
else mprint("You master your reptile brain and stand fast.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* random spell cast by monster */
|
||||
void m_sp_spell(pmt m)
|
||||
{
|
||||
char action[80];
|
||||
if (m_statusp(m,HOSTILE) && los_p(Player.x,Player.y,m->x,m->y)) {
|
||||
if (m->uniqueness == COMMON) strcpy(action,"The ");
|
||||
else strcpy(action,"");
|
||||
strcat(action,m->monstring);
|
||||
strcat(action," casts a spell...");
|
||||
mprint(action);
|
||||
if (! magic_resist(m->level)) switch (random_range(m->level+7)) {
|
||||
case 0:
|
||||
nbolt(m->x,m->y,Player.x,Player.y,m->hit,10);
|
||||
break;
|
||||
case 1:
|
||||
mprint("It seems stronger...");
|
||||
m->hp += random_range(m->level*m->level);
|
||||
break;
|
||||
case 2:
|
||||
haste(-1);
|
||||
break;
|
||||
case 3:
|
||||
cure(-1);
|
||||
break;
|
||||
case 4:
|
||||
/* WDT: I'd like to make this (and "case 5" below) dependant on
|
||||
* the monster's IQ in some way -- dumb but powerful monsters
|
||||
* deserve what they get :). No rush. */
|
||||
if (m_immunityp(m, ELECTRICITY) ||
|
||||
distance(m->x,m->y,Player.x,Player.y) > 2)
|
||||
lball(m->x,m->y,Player.x,Player.y,20);
|
||||
else
|
||||
lbolt(m->x,m->y,Player.x,Player.y,m->hit,20);
|
||||
break;
|
||||
case 5:
|
||||
if (m_immunityp(m, COLD) ||
|
||||
distance(m->x,m->y,Player.x,Player.y) > 2)
|
||||
snowball(m->x,m->y,Player.x,Player.y,30);
|
||||
else
|
||||
icebolt(m->x,m->y,Player.x,Player.y,m->hit,30);
|
||||
break;
|
||||
case 6:
|
||||
enchant(-1);
|
||||
break;
|
||||
case 7:
|
||||
bless(0-m->level);
|
||||
break;
|
||||
case 8:
|
||||
p_poison(m->level);
|
||||
break;
|
||||
case 9:
|
||||
sleep_player(m->level/2);
|
||||
break;
|
||||
case 10:
|
||||
fbolt(m->x,m->y,Player.x,Player.y,m->hit*3,50);
|
||||
break;
|
||||
case 11:
|
||||
acquire(0-m->level);
|
||||
break;
|
||||
case 12:
|
||||
dispel(-1);
|
||||
break;
|
||||
case 13:
|
||||
disrupt(Player.x,Player.y,50);
|
||||
break;
|
||||
case 14:
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"a ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
level_drain(m->level,Str2);
|
||||
break;
|
||||
case 15:
|
||||
case 16:
|
||||
disintegrate(Player.x,Player.y);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* monsters with this have some way to hide, camouflage, etc until they
|
||||
attack */
|
||||
void m_sp_surprise(pmt m)
|
||||
{
|
||||
if (m->attacked) {
|
||||
if (m_statusp(m,HOSTILE) &&
|
||||
(! Player.status[TRUESIGHT]) &&
|
||||
m_statusp(m,M_INVISIBLE)) {
|
||||
m->monchar = Monsters[m->id].monchar;
|
||||
if (! Player.status[ALERT]) {
|
||||
switch(random_range(4)) {
|
||||
case 0:
|
||||
mprint("You are surprised by a sudden treacherous attack!");
|
||||
break;
|
||||
case 1:
|
||||
mprint("You are shocked out of your reverie by the scream of battle!");
|
||||
break;
|
||||
case 2:
|
||||
mprint("Suddenly, from out of the shadows, a surprise attack!");
|
||||
break;
|
||||
case 3:
|
||||
mprint("A shriek of hatred causes you to momentarily freeze up!");
|
||||
break;
|
||||
}
|
||||
morewait();
|
||||
setgamestatus(SKIP_PLAYER);
|
||||
m_status_reset(m,M_INVISIBLE);
|
||||
}
|
||||
else {
|
||||
mprint("You alertly sense the presence of an attacker!");
|
||||
m_status_reset(m,M_INVISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void m_sp_whistleblower(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
alert_guards();
|
||||
m->specialf = M_MELEE_NORMAL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_seductor(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," runs away screaming for help....");
|
||||
mprint(Str2);
|
||||
m_vanish(m);
|
||||
summon(-1,-1);
|
||||
summon(-1,-1);
|
||||
summon(-1,-1);
|
||||
}
|
||||
else if (distance(Player.x,Player.y,m->x,m->y) < 2)
|
||||
m_talk_seductor(m);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void m_sp_demonlover(pmt m)
|
||||
{
|
||||
if (distance(Player.x,Player.y,m->x,m->y) < 2)
|
||||
m_talk_demonlover(m);
|
||||
}
|
||||
|
||||
void m_sp_eater(pmt m)
|
||||
{
|
||||
if (Player.rank[COLLEGE]) m_status_set(m,HOSTILE);
|
||||
if (m_statusp(m,HOSTILE))
|
||||
if (los_p(m->x,m->y,Player.x,Player.y)) {
|
||||
mprint("A strange numbing sensation comes over you...");
|
||||
morewait();
|
||||
Player.mana = Player.mana / 2;
|
||||
if (random_range(4)) enchant(-1);
|
||||
else dispel(-1);
|
||||
Player.pow--;
|
||||
if (--Player.pow < 1) p_death("the Eater of Magic");
|
||||
}
|
||||
if (m->hp < 10) {
|
||||
mprint("The Eater explodes in a burst of mana!");
|
||||
manastorm(m->x,m->y,1000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_dragonlord(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
if (distance(m->x,m->y,Player.x,Player.y)<2) {
|
||||
if (! Player.status[IMMOBILE]) {
|
||||
mprint("A gust of wind from the Dragonlord's wings knocks you down!");
|
||||
p_damage(25,NORMAL_DAMAGE,"a gust of wind");
|
||||
setgamestatus(SKIP_PLAYER);
|
||||
Player.status[IMMOBILE]+=2;
|
||||
}
|
||||
else if (! Constriction) {
|
||||
mprint("The Dragonlord grabs you with his tail!");
|
||||
Constriction = 25;
|
||||
Player.status[IMMOBILE]+=1;
|
||||
}
|
||||
else if (random_range(2)) {
|
||||
mprint("The coils squeeze tighter and tighter...");
|
||||
p_damage(Constriction,NORMAL_DAMAGE,"the Dragonlord");
|
||||
Player.status[IMMOBILE]+=1;
|
||||
Constriction *=2;
|
||||
}
|
||||
else {
|
||||
mprint("The Dragonlord hurls you to the ground!");
|
||||
p_damage(2*Constriction,NORMAL_DAMAGE,"the Dragonlord");
|
||||
Constriction = 0;
|
||||
}
|
||||
m_sp_spell(m);
|
||||
}
|
||||
else {
|
||||
Constriction = 0;
|
||||
if (view_los_p(m->x,m->y,Player.x,Player.y)) {
|
||||
if ((! Player.immunity[FEAR]) && (! Player.status[AFRAID])) {
|
||||
mprint("You are awestruck at the sight of the Dragonlord.");
|
||||
Player.status[AFRAID]+=5;
|
||||
}
|
||||
if (random_range(3)) {
|
||||
m_sp_spell(m);
|
||||
m_sp_spell(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (distance(m->x,m->y,Player.x,Player.y)<2)
|
||||
mprint("You are extremely impressed at the sight of the Dragonlord.");
|
||||
}
|
||||
|
||||
|
||||
void m_sp_blackout(pmt m)
|
||||
{
|
||||
if ((distance(m->x,m->y,Player.x,Player.y) < 4) &&
|
||||
(Player.status[BLINDED] == 0)) {
|
||||
mprint("The fungus emits a burst of black spores. You've been blinded!");
|
||||
if (Player.status[TRUESIGHT] > 0) mprint("The blindness quickly passes.");
|
||||
else Player.status[BLINDED]+=4;
|
||||
}
|
||||
if (loc_statusp(m->x,m->y,LIT)) {
|
||||
mprint("The fungus chirps.... ");
|
||||
mprint("The area is plunged into darkness.");
|
||||
torch_check();torch_check();torch_check();
|
||||
torch_check();torch_check();torch_check();
|
||||
spreadroomdark(m->x,m->y,Level->site[m->x][m->y].roomnumber);
|
||||
levelrefresh();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_bogthing(pmt m)
|
||||
{
|
||||
if (Player.status[IMMOBILE] &&
|
||||
(distance(Player.x,Player.y,m->x,m->y) < 2)) {
|
||||
if (! Player.status[AFRAID]) {
|
||||
mprint("As the bogthing touches you, you feel a frisson of terror....");
|
||||
if (Player.immunity[FEAR]) mprint("which you shake off.");
|
||||
else Player.status[AFRAID]+=2;
|
||||
}
|
||||
else {
|
||||
mprint("The bogthing's touch causes you scream in agony!");
|
||||
p_damage(50,UNSTOPPABLE,"fright");
|
||||
mprint("Your struggles grow steadily weaker....");
|
||||
Player.con--;
|
||||
Player.str--;
|
||||
if ((Player.con < 3) || (Player.str < 3))
|
||||
p_death("congestive heart failure");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_were(pmt m)
|
||||
{
|
||||
int mid;
|
||||
if (m_statusp(m,HOSTILE) || (Phase == 6)) {
|
||||
do mid = random_range(ML9-NML_0)+ML1;
|
||||
/* log npc, 0th level npc, high score npc or were-creature */
|
||||
while (mid == NPC || mid == ZERO_NPC ||
|
||||
mid == HISCORE_NPC || mid == WEREHUMAN ||
|
||||
(Monsters[mid].uniqueness != COMMON) ||
|
||||
(! m_statusp(&(Monsters[mid]),MOBILE)) ||
|
||||
(! m_statusp(&(Monsters[mid]),HOSTILE))
|
||||
);
|
||||
m->id = Monsters[mid].id;
|
||||
m->hp += Monsters[mid].hp;
|
||||
m->status |= Monsters[mid].status;
|
||||
m->ac = Monsters[mid].ac;
|
||||
m->dmg = Monsters[mid].dmg;
|
||||
m->speed = Monsters[mid].speed;
|
||||
m->immunity |= Monsters[mid].immunity;
|
||||
m->xpv += Monsters[mid].xpv;
|
||||
m->corpseweight = Monsters[mid].corpseweight;
|
||||
m->monchar = Monsters[mid].monchar;
|
||||
m->talkf = Monsters[mid].talkf;
|
||||
m->meleef = Monsters[mid].meleef;
|
||||
m->strikef = Monsters[mid].strikef;
|
||||
m->specialf = Monsters[mid].specialf;
|
||||
strcpy(Str1,"were-");
|
||||
strcat(Str1,Monsters[mid].monstring);
|
||||
strcpy(Str2,"dead were-");
|
||||
strcat(Str2,Monsters[mid].monstring);
|
||||
m->monstring = salloc(Str1);
|
||||
m->corpsestr = salloc(Str2);
|
||||
m_status_set( m, ALLOC );
|
||||
m->immunity |= pow2(NORMAL_DAMAGE); /* WDT: not +=, rather |=. */
|
||||
if (los_p(m->x,m->y,Player.x,Player.y))
|
||||
mprint("You witness a hideous transformation!");
|
||||
else mprint("You hear a distant howl.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_servant(pmt m)
|
||||
{
|
||||
if ((m->id == SERV_LAW) && (Player.alignment < 0))
|
||||
m_status_set(m,HOSTILE);
|
||||
else if ((m->id == SERV_CHAOS) && (Player.alignment > 0))
|
||||
m_status_set(m,HOSTILE);
|
||||
}
|
||||
|
||||
|
||||
void m_sp_av(pmt m)
|
||||
{
|
||||
if (Player.mana > 0) {
|
||||
mprint("You feel a sudden loss of mana!");
|
||||
Player.mana -= (max(0,10-distance(m->x,m->y,Player.x,Player.y)));
|
||||
dataprint();
|
||||
}
|
||||
}
|
||||
|
||||
void m_sp_lw(pmt m)
|
||||
{
|
||||
if (random_range(2)) {
|
||||
if (Level->site[m->x][m->y].locchar == FLOOR) {
|
||||
Level->site[m->x][m->y].locchar = LAVA;
|
||||
Level->site[m->x][m->y].p_locf = L_LAVA;
|
||||
lset(m->x, m->y, CHANGED);
|
||||
}
|
||||
else if (Level->site[m->x][m->y].locchar == WATER) {
|
||||
Level->site[m->x][m->y].locchar = FLOOR;
|
||||
Level->site[m->x][m->y].p_locf = L_NO_OP;
|
||||
lset(m->x, m->y, CHANGED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_angel(pmt m)
|
||||
{
|
||||
int mid,hostile = FALSE;
|
||||
switch(m->aux1) {
|
||||
case ATHENA:
|
||||
case ODIN:
|
||||
hostile = ((Player.patron == HECATE) || (Player.patron == SET));
|
||||
break;
|
||||
case SET:
|
||||
case HECATE:
|
||||
hostile = ((Player.patron == ODIN) || (Player.patron == ATHENA));
|
||||
break;
|
||||
case DESTINY:
|
||||
hostile = (Player.patron != DESTINY);
|
||||
break;
|
||||
}
|
||||
if (hostile)
|
||||
m_status_set(m,HOSTILE);
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
mprint("The angel summons a heavenly host!");
|
||||
switch(m->level) {
|
||||
case 9: mid = HIGH_ANGEL; break;
|
||||
case 8: mid = ANGEL; break;
|
||||
default:
|
||||
case 6: mid = PHANTOM; break;
|
||||
}
|
||||
summon(-1,mid);
|
||||
summon(-1,mid);
|
||||
summon(-1,mid);
|
||||
/* prevent angel from summoning infinitely */
|
||||
m->specialf = M_NO_OP;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Could completely fill up level */
|
||||
void m_sp_swarm(pmt m)
|
||||
{
|
||||
if (random_range(5)==1) {
|
||||
if (view_los_p(m->x,m->y,Player.x,Player.y))
|
||||
mprint("The swarm expands!");
|
||||
else mprint("You hear an aggravating humming noise.");
|
||||
summon(-1,SWARM);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* raise nearby corpses from the dead.... */
|
||||
void m_sp_raise(pmt m)
|
||||
{
|
||||
int x,y;
|
||||
pol t;
|
||||
for(x=m->x-2;x<=m->x+2;x++)
|
||||
for(y=m->y-2;y<=m->y+2;y++)
|
||||
if (inbounds(x,y))
|
||||
if (Level->site[x][y].things != NULL)
|
||||
if (Level->site[x][y].things->thing->id == CORPSEID) {
|
||||
mprint("The Zombie Overlord makes a mystical gesture...");
|
||||
summon(-1,Level->site[x][y].things->thing->charge);
|
||||
t = Level->site[x][y].things;
|
||||
Level->site[x][y].things = Level->site[x][y].things->next;
|
||||
free_obj( t->thing, TRUE );
|
||||
free((char *) t);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m_sp_mb(pmt m)
|
||||
{
|
||||
if (distance(m->x,m->y,Player.x,Player.y)==1) {
|
||||
mprint("The manaburst explodes!");
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
mprint("You get blasted!");
|
||||
p_damage(random_range(100),UNSTOPPABLE,"a manaburst");
|
||||
mprint("You feel cold all over!");
|
||||
Player.pow-=3;
|
||||
Player.iq--;
|
||||
Player.con--;
|
||||
Player.str-=2;
|
||||
Player.dex--;
|
||||
Player.agi--;
|
||||
dispel(-1);
|
||||
/* DAG -- need calc_melee/calcmana here, because of new stats */
|
||||
calc_melee();
|
||||
Player.maxmana = calcmana();
|
||||
Player.mana = min( Player.mana, Player.maxmana );
|
||||
}
|
||||
else {
|
||||
mprint("You feel toasty warm inside!");
|
||||
Player.pow++;
|
||||
Player.mana = max(Player.mana,calcmana());
|
||||
Player.hp = max(Player.hp,++Player.maxhp);
|
||||
}
|
||||
/* DAG -- to fix the explode but not die manaburst bug */
|
||||
m_remove( m );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_mirror(pmt m)
|
||||
{
|
||||
int i,x,y;
|
||||
if (view_los_p(m->x,m->y,Player.x,Player.y)) {
|
||||
if (random_range(20)+6 < m->level) {
|
||||
summon(-1,m->id);
|
||||
mprint("You hear the sound of a mirror shattering!");
|
||||
}
|
||||
else for(i=0;i<5;i++) {
|
||||
x = m->x + random_range(13)-6;
|
||||
y = m->y + random_range(13)-6;
|
||||
if (inbounds(x,y)) {
|
||||
Level->site[x][y].showchar = m->monchar;
|
||||
putspot(x,y,m->monchar);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m_illusion(pmt m)
|
||||
{
|
||||
int i = random_range(NUMMONSTERS);
|
||||
if (i==NPC || i==HISCORE_NPC || i==ZERO_NPC) i = m->id; /* can't imitate NPC */
|
||||
if (Player.status[TRUESIGHT]) {
|
||||
m->monchar = Monsters[m->id].monchar;
|
||||
m->monstring = Monsters[m->id].monstring;
|
||||
}
|
||||
else if (random_range(5) == 1) {
|
||||
m->monchar = Monsters[i].monchar;
|
||||
m->monstring = Monsters[i].monstring;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m_huge_sounds(pmt m)
|
||||
{
|
||||
if (m_statusp(m,AWAKE) &&
|
||||
(! los_p(m->x,m->y,Player.x,Player.y)) &&
|
||||
(random_range(10) == 1))
|
||||
mprint("The dungeon shakes!");
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m_thief_f(pmt m)
|
||||
{
|
||||
int i = stolen_item();
|
||||
if (random_range(3) == 1) {
|
||||
if (distance(Player.x,Player.y,m->x,m->y) < 2) {
|
||||
if (p_immune(THEFT) || (Player.level > (m->level*2)+random_range(20)))
|
||||
mprint("You feel secure.");
|
||||
else {
|
||||
if (i == ABORT)
|
||||
mprint("You feel fortunate.");
|
||||
else if ((Player.possessions[i]->used) ||
|
||||
(Player.dex < m->level*random_range(10))) {
|
||||
mprint("You feel a sharp tug.... You hold on!");
|
||||
}
|
||||
else {
|
||||
mprint("You feel uneasy for a moment.");
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," suddenly runs away for some reason.");
|
||||
mprint(Str2);
|
||||
m_teleport(m);
|
||||
m->movef = M_MOVE_SCAREDY;
|
||||
m->specialf = M_MOVE_SCAREDY;
|
||||
m_pickup(m,Player.possessions[i]);
|
||||
conform_unused_object(Player.possessions[i]);
|
||||
Player.possessions[i] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_summon(pmt m)
|
||||
{
|
||||
if ((distance(Player.x,Player.y,m->x,m->y) < 2) &&
|
||||
(random_range(3) == 1)) {
|
||||
summon(0,-1);
|
||||
summon(0,-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_aggravate(pmt m)
|
||||
{
|
||||
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," emits an irritating humming sound.");
|
||||
mprint(Str2);
|
||||
aggravate();
|
||||
m_status_reset(m,HOSTILE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m_sp_merchant(pmt m)
|
||||
{
|
||||
pml ml;
|
||||
if (m_statusp(m,HOSTILE))
|
||||
if (Current_Environment == E_VILLAGE) {
|
||||
mprint("The merchant screams: 'Help! Murder! Guards! Help!'");
|
||||
mprint("You hear the sound of police whistles and running feet.");
|
||||
for (ml=Level->mlist;ml!=NULL;ml=ml->next) {
|
||||
m_status_set(ml->m,AWAKE);
|
||||
m_status_set(ml->m,HOSTILE);
|
||||
}
|
||||
m->specialf = M_NO_OP;
|
||||
}
|
||||
}
|
||||
|
||||
/* The special function of the various people in the court of the archmage */
|
||||
/* and the sorcerors' circle */
|
||||
void m_sp_court(pmt m)
|
||||
{
|
||||
pml ml;
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
mprint("A storm of spells hits you!");
|
||||
for(ml=Level->mlist;ml!=NULL;ml=ml->next) {
|
||||
m_status_set(ml->m,HOSTILE);
|
||||
m_sp_spell(ml->m);
|
||||
if (ml->m->specialf == M_SP_COURT)
|
||||
ml->m->specialf = M_SP_SPELL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* The special function of the dragons in the dragons' lair */
|
||||
void m_sp_lair(pmt m)
|
||||
{
|
||||
pml ml;
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
mprint("You notice a number of dragons waking up....");
|
||||
mprint("You are struck by a quantity of firebolts.");
|
||||
morewait();
|
||||
for(ml=Level->mlist;ml!=NULL;ml=ml->next)
|
||||
if (ml->m->hp > 0 && ml->m->specialf == M_SP_LAIR) {
|
||||
m_status_set(ml->m,HOSTILE);
|
||||
fbolt(ml->m->x,ml->m->y,Player.x,Player.y,100,100);
|
||||
if (ml->m->id == DRAGON_LORD)
|
||||
ml->m->specialf = M_SP_DRAGONLORD;
|
||||
else
|
||||
ml->m->specialf = M_STRIKE_FBOLT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_sp_prime(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
mprint("The prime sorceror gestures and a pentacular gate opens!");
|
||||
mprint("You are surrounded by demons!");
|
||||
summon(-1,DEMON_PRINCE);
|
||||
summon(-1,DEMON_PRINCE);
|
||||
summon(-1,DEMON_PRINCE);
|
||||
summon(-1,DEMON_PRINCE);
|
||||
}
|
||||
m->specialf = M_SP_SPELL;
|
||||
}
|
73
mstrike.c
Normal file
73
mstrike.c
Normal file
@ -0,0 +1,73 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* mstrike.c */
|
||||
/* monster strike functions */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
void m_firebolt(pmt m)
|
||||
{
|
||||
fbolt(m->x,m->y,Player.x,Player.y,m->hit,m->dmg);
|
||||
}
|
||||
|
||||
void m_nbolt(pmt m)
|
||||
{
|
||||
nbolt(m->x,m->y,Player.x,Player.y,m->hit,m->dmg);
|
||||
}
|
||||
|
||||
|
||||
void m_lball(pmt m)
|
||||
{
|
||||
lball(m->x,m->y,Player.x,Player.y,m->dmg);
|
||||
}
|
||||
|
||||
void m_fireball(pmt m)
|
||||
{
|
||||
fball(m->x,m->y,Player.x,Player.y,m->dmg);
|
||||
}
|
||||
|
||||
|
||||
void m_snowball(pmt m)
|
||||
{
|
||||
snowball(m->x,m->y,Player.x,Player.y,m->dmg);
|
||||
}
|
||||
|
||||
void m_blind_strike(pmt m)
|
||||
{
|
||||
|
||||
pml ml;
|
||||
if ((Player.status[BLINDED] == 0) &&
|
||||
los_p(m->x,m->y,Player.x,Player.y) &&
|
||||
(distance(m->x,m->y,Player.x,Player.y) < 5)) {
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," gazes at you menacingly");
|
||||
mprint(Str2);
|
||||
if (! p_immune(GAZE)) {
|
||||
mprint("You've been blinded!");
|
||||
Player.status[BLINDED] = random_range(4)+1;
|
||||
for(ml=Level->mlist;ml!=NULL;ml=ml->next)
|
||||
plotspot(ml->m->x,ml->m->y,FALSE);
|
||||
}
|
||||
else mprint("You gaze steadily back....");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void m_strike_sonic(pmt m)
|
||||
{
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," screams at you!");
|
||||
mprint(Str2);
|
||||
p_damage(m->dmg,OTHER_MAGIC,"a sonic blast");
|
||||
}
|
||||
|
794
mtalk.c
Normal file
794
mtalk.c
Normal file
@ -0,0 +1,794 @@
|
||||
/* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
|
||||
/* mtalk.c */
|
||||
/* monster talk functions */
|
||||
|
||||
#include "glob.h"
|
||||
|
||||
|
||||
/* The druid's altar is in the northern forest */
|
||||
void m_talk_druid(pmt m)
|
||||
{
|
||||
int i;
|
||||
pml curr;
|
||||
|
||||
if (! m_statusp(m,HOSTILE)) {
|
||||
print1("The Archdruid raises a hand in greeting.");
|
||||
if (! gamestatusp(SPOKE_TO_DRUID)) {
|
||||
setgamestatus(SPOKE_TO_DRUID);
|
||||
morewait();
|
||||
print1("The Archdruid congratulates you on reaching his sanctum.");
|
||||
print2("You feel competent.");
|
||||
/* DAG gain_experience starts with a morewait as well... */
|
||||
/* morewait(); */
|
||||
gain_experience(300);
|
||||
if (Player.patron == DRUID) {
|
||||
print1("The Archdruid conveys to you the wisdom of nature....");
|
||||
print2("You feel like a sage.");
|
||||
morewait();
|
||||
for(i=0;i<NUMRANKS;i++) {
|
||||
if (Player.guildxp[i] > 0)
|
||||
Player.guildxp[i] += 300;
|
||||
}
|
||||
}
|
||||
}
|
||||
mprint("Do you request a ritual of neutralization? [yn] ");
|
||||
if (ynq() == 'y') {
|
||||
if (Phase/2 == 6 || Phase/2 == 0) { /* full or new moon */
|
||||
mprint("\"Unfortunately, I cannot perform a ritual of balance on");
|
||||
if (Phase/2 == 6)
|
||||
mprint("this lawful day.\"");
|
||||
else
|
||||
mprint("this chaotic day.\"");
|
||||
}
|
||||
else if (Phase/2 == 3 || Phase/2 == 9) { /* half moon */
|
||||
mprint("You take part in today's holy celebration of balance...");
|
||||
Player.alignment = 0;
|
||||
Player.mana = calcmana();
|
||||
if (Player.patron == DRUID)
|
||||
gain_experience(200); /* if a druid wants to spend 2 days */
|
||||
Time+=60; /* celebrating for 1600 xp, why not? */
|
||||
hourly_check();
|
||||
Time+=60;
|
||||
hourly_check();
|
||||
Time+=60;
|
||||
hourly_check();
|
||||
Time+=60;
|
||||
hourly_check();
|
||||
Time+=60;
|
||||
hourly_check();
|
||||
Time+=60;
|
||||
hourly_check();
|
||||
}
|
||||
else {
|
||||
mprint("The ArchDruid conducts a sacred rite of balance...");
|
||||
if (Player.patron == DRUID) {
|
||||
Player.alignment = 0;
|
||||
Player.mana = calcmana();
|
||||
}
|
||||
else
|
||||
Player.alignment -= Player.alignment*max(0, 10 - Player.level)/10;
|
||||
/* the higher level the character is, the more set in his/her ways */
|
||||
Time+=60;
|
||||
hourly_check();
|
||||
}
|
||||
dataprint();
|
||||
}
|
||||
}
|
||||
else {
|
||||
mprint("The ArchDruid looks at you and cries: 'Unclean! Unclean!'");
|
||||
disrupt(Player.x,Player.y,100);
|
||||
mprint("This seems to have satiated his desire for vengeance.");
|
||||
mprint("'Have you learned your lesson?' The ArchDruid asks. [yn] ");
|
||||
/* WDT: this didn't used to have a 'y'. I'm not sure what was
|
||||
* intended. */
|
||||
if (ynq() != 'n') {
|
||||
mprint("'I certainly hope so!' says the ArchDruid.");
|
||||
for (curr = Level->mlist; curr; curr = curr->next)
|
||||
m_status_reset(curr->m, HOSTILE);
|
||||
m_vanish(m);
|
||||
}
|
||||
else {
|
||||
mprint("'Idiot.' mutters the ArchDruid.");
|
||||
p_damage(500,UNSTOPPABLE,"the ArchDruid's Vengeance");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_talk_silent(pmt m)
|
||||
{
|
||||
#ifdef NEW_QUOTES
|
||||
int reply = random_range(8);
|
||||
#else
|
||||
int reply = random_range(4);
|
||||
#endif
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
switch (reply) {
|
||||
case 0:strcat(Str2," does not reply. "); break;
|
||||
case 1:strcat(Str2," shrugs silently. "); break;
|
||||
case 2:strcat(Str2," holds a finger to his mouth. "); break;
|
||||
case 3:strcat(Str2," glares at you but says nothing. "); break;
|
||||
case 4:strcat(Str2," is not going to answer you. "); break;
|
||||
case 5:strcat(Str2," has taken a vow of silence. "); break;
|
||||
case 6:strcat(Str2," attempts sign language. "); break;
|
||||
case 7:strcat(Str2," fails to respond."); break;
|
||||
}
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
void m_talk_stupid(pmt m)
|
||||
{
|
||||
|
||||
int reply = random_range(4);
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
switch (reply) {
|
||||
case 0:strcat(Str2," looks at you with mute incomprehension."); break;
|
||||
case 1:strcat(Str2," growls menacingly and ignores you."); break;
|
||||
case 2:strcat(Str2," does not seem to have heard you."); break;
|
||||
case 3:strcat(Str2," tries to pretend it didn't hear you."); break;
|
||||
}
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
void m_talk_greedy(pmt m)
|
||||
{
|
||||
|
||||
int reply = random_range(4);
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
switch (reply) {
|
||||
case 0:strcat(Str2," says: Give me a treasure.... ");break;
|
||||
case 1:strcat(Str2," says: Stand and deliver, knave! "); break;
|
||||
case 2:strcat(Str2," says: Your money or your life! "); break;
|
||||
case 3:strcat(Str2," says: Yield or Die! "); break;
|
||||
}
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
void m_talk_hungry(pmt m)
|
||||
{
|
||||
|
||||
int reply = random_range(4);
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
switch (reply) {
|
||||
case 0:strcat(Str2," says: I hunger, foolish adventurer! "); break;
|
||||
case 1:strcat(Str2," drools menacingly at you. "); break;
|
||||
case 2:strcat(Str2," says: You're invited to be lunch! "); break;
|
||||
case 3:strcat(Str2," says: Feeed Meee! "); break;
|
||||
}
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
|
||||
void m_talk_guard(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
print1("'Surrender in the name of the Law!'");
|
||||
print2("Do it? [yn] ");
|
||||
if (ynq2()=='y') {
|
||||
Player.alignment++;
|
||||
if (Current_Environment == E_CITY) {
|
||||
print1("Go directly to jail. Do not pass go, do not collect 200Au.");
|
||||
print2("You are taken to the city gaol.");
|
||||
morewait();
|
||||
send_to_jail();
|
||||
drawvision(Player.x,Player.y);
|
||||
}
|
||||
else {
|
||||
clearmsg();
|
||||
print1("Mollified, the guard disarms you and sends you away.");
|
||||
dispose_lost_objects(1,Player.possessions[O_WEAPON_HAND]);
|
||||
pacify_guards();
|
||||
}
|
||||
}
|
||||
else {
|
||||
clearmsg();
|
||||
print1("All right, you criminal scum, you asked for it!");
|
||||
}
|
||||
}
|
||||
else /* not hostile */
|
||||
{
|
||||
if ( (!CitySiteList[L_TOURIST-CITYSITEBASE][0]) &&
|
||||
(Current_Environment == E_CITY) )
|
||||
{
|
||||
print1("You should visit the tourist information booth and get their guidebook.");
|
||||
print2("The booth is located near the entrance to the city.");
|
||||
morewait();
|
||||
CitySiteList[L_TOURIST-CITYSITEBASE][0] = TRUE;
|
||||
}
|
||||
else
|
||||
if (Player.rank[ORDER]>0)
|
||||
print1("'Greetings comrade! May you always tread the paths of Law.'");
|
||||
#ifdef NEW_QUOTES
|
||||
else {
|
||||
if (random_range(2))
|
||||
print1("Move it right along, stranger!");
|
||||
else print1("Nothing to see here.");
|
||||
}
|
||||
#else
|
||||
else print1("Move it right along, stranger!");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_talk_mp(pmt m)
|
||||
{
|
||||
mprint("The mendicant priest asks you to spare some treasure for the needy");
|
||||
}
|
||||
|
||||
|
||||
void m_talk_titter(pmt m)
|
||||
{
|
||||
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," titters obscenely at you.");
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
|
||||
void m_talk_ninja(pmt m)
|
||||
{
|
||||
mprint("The black-garbed figure says apologetically:");
|
||||
mprint("'Situree simasita, wakarimasen.'");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void m_talk_thief(pmt m)
|
||||
{
|
||||
if (Player.rank[THIEVES]) {
|
||||
if (m->level == 2)
|
||||
m->monstring = "sneak thief";
|
||||
else m->monstring = "master thief";
|
||||
print1("The cloaked figure makes a gesture which you recognize...");
|
||||
print2("...the thieves' guild recognition signal!");
|
||||
print3("'Sorry, mate, thought you were a mark....'");
|
||||
morewait();
|
||||
m_vanish(m);
|
||||
}
|
||||
else m_talk_man(m);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m_talk_assassin(pmt m)
|
||||
{
|
||||
m->monstring = "master assassin";
|
||||
print1("The ominous figure does not reply, but hands you an embossed card:");
|
||||
print2("'Guild of Assassins Ops are forbidden to converse with targets.'");
|
||||
}
|
||||
|
||||
|
||||
void m_talk_im(pmt m)
|
||||
{
|
||||
pol tmp;
|
||||
|
||||
if (strcmp(m->monstring,"itinerant merchant") != 0) {
|
||||
m->monstring = "itinerant merchant";
|
||||
}
|
||||
if (m->possessions == NULL)
|
||||
mprint("The merchant says: Alas! I have nothing to sell!");
|
||||
else {
|
||||
m->possessions->thing->known = 2;
|
||||
clearmsg();
|
||||
mprint("I have a fine");
|
||||
mprint(itemid(m->possessions->thing));
|
||||
mprint("for only");
|
||||
mlongprint(max(10,4*true_item_value(m->possessions->thing)));
|
||||
mprint("Au.");
|
||||
mprint("Want it? [yn] ");
|
||||
if (ynq()=='y') {
|
||||
if (Player.cash < (max(10,4*true_item_value(m->possessions->thing)))) {
|
||||
if (Player.alignment > 10) {
|
||||
mprint("Well, I'll let you have it for what you've got.");
|
||||
Player.cash = 0;
|
||||
gain_item(m->possessions->thing);
|
||||
}
|
||||
else mprint("Beat it, you deadbeat!");
|
||||
}
|
||||
else {
|
||||
mprint("Here you are. Have a good day.");
|
||||
Player.cash -= max(10,(4*item_value(m->possessions->thing)));
|
||||
gain_item(m->possessions->thing);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mprint("Sorry I couldn't help you.");
|
||||
free_obj( m->possessions->thing, TRUE );
|
||||
}
|
||||
tmp = m->possessions;
|
||||
m->possessions = tmp->next;
|
||||
free( tmp );
|
||||
if (NULL != m->possessions)
|
||||
{
|
||||
mprint("Well then, I must be off. Good day.");
|
||||
m_vanish(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void m_talk_man(pmt m)
|
||||
{
|
||||
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
switch (random_range(5)) {
|
||||
case 0:strcat(Str2," asks you for the way home."); break;
|
||||
case 1:strcat(Str2," wishes you a pleasant day."); break;
|
||||
case 2:strcat(Str2," sneers at you contemptuously."); break;
|
||||
case 3:strcat(Str2," smiles and nods."); break;
|
||||
case 4:strcat(Str2," tells you a joke."); break;
|
||||
}
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
|
||||
void m_talk_evil(pmt m)
|
||||
{
|
||||
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
switch (random_range(14)) {
|
||||
case 0:strcat(Str2," says: 'THERE CAN BE ONLY ONE!'"); break;
|
||||
case 1:strcat(Str2," says: 'Prepare to die, Buckwheat!'"); break;
|
||||
case 2:strcat(Str2," says: 'Time to die!'"); break;
|
||||
case 3:strcat(Str2," says: 'There will be no mercy.'"); break;
|
||||
case 4:strcat(Str2," insults your mother-in-law."); break;
|
||||
case 5:strcat(Str2," says: 'Kurav tu ando mul!'"); break;
|
||||
case 6:strcat(Str2," says: '!va al infierno!'"); break;
|
||||
case 7:strcat(Str2," says: 'dame desu, nee.'"); break;
|
||||
case 8:strcat(Str2," spits on your rug and calls your cat a bastard.");
|
||||
break;
|
||||
case 9:strcat(Str2," snickers malevolently and draws a weapon."); break;
|
||||
case 10:strcat(Str2," sends 'rm -r *' to your shell!"); break;
|
||||
case 11:strcat(Str2," tweaks your nose and cackles evilly."); break;
|
||||
case 12:strcat(Str2," thumbs you in the eyes."); break;
|
||||
case 13:strcat(Str2," kicks you in the groin."); break;
|
||||
}
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
|
||||
void m_talk_robot(pmt m)
|
||||
{
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
switch (random_range(4)) {
|
||||
case 0:strcat(Str2," says: 'exterminate...Exterminate...EXTERMINATE!!!'");
|
||||
break;
|
||||
case 1:strcat(Str2," says: 'Kill ... Crush ... Destroy'");
|
||||
break;
|
||||
case 2:strcat(Str2," says: 'Danger -- Danger'");
|
||||
break;
|
||||
case 3:strcat(Str2," says: 'Yo Mama -- core dumped.'");
|
||||
break;
|
||||
}
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
void m_talk_slithy(pmt m)
|
||||
{
|
||||
mprint("It can't talk -- it's too slithy!");
|
||||
}
|
||||
|
||||
|
||||
void m_talk_mimsy(pmt m)
|
||||
{
|
||||
mprint("It can't talk -- it's too mimsy!");
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m_talk_burble(pmt m)
|
||||
{
|
||||
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," burbles hatefully at you.");
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
|
||||
void m_talk_beg(pmt m)
|
||||
{
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," asks you for alms.");
|
||||
mprint(Str2);
|
||||
}
|
||||
|
||||
|
||||
void m_talk_hint(pmt m)
|
||||
{
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
strcat(Str2," only sneers at you. ");
|
||||
mprint(Str2);
|
||||
}
|
||||
else {
|
||||
strcat(Str2," whispers in your ear: ");
|
||||
mprint(Str2);
|
||||
hint();
|
||||
m->talkf = M_TALK_SILENT;
|
||||
}
|
||||
}
|
||||
|
||||
void m_talk_gf(pmt m)
|
||||
{
|
||||
mprint("The good fairy glints: Would you like a wish?");
|
||||
if (ynq()=='y') {
|
||||
mprint("The good fairy glows: Are you sure?");
|
||||
if (ynq()=='y') {
|
||||
mprint("The good fairy radiates: Really really sure?");
|
||||
if (ynq()=='y') {
|
||||
mprint("The good fairy beams: I mean, like, sure as sure can be?");
|
||||
if (ynq()=='y') {
|
||||
mprint("The good fairy dazzles: You don't want a wish, right?");
|
||||
if (ynq()=='y') mprint("The good fairy laughs: I thought not.");
|
||||
else wish(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
mprint("In a flash of sweet-smelling light, the fairy vanishes....");
|
||||
Player.hp = max(Player.hp,Player.maxhp);
|
||||
Player.mana = max(Player.mana,calcmana());
|
||||
mprint("You feel mellow.");
|
||||
m_vanish(m);
|
||||
}
|
||||
|
||||
void m_talk_ef(pmt m)
|
||||
{
|
||||
mprint("The evil fairy roils: Eat my pixie dust!");
|
||||
mprint("She waves her black-glowing wand, which screams thinly....");
|
||||
m->movef=M_MOVE_SMART;
|
||||
m->meleef=M_MELEE_POISON;
|
||||
m->specialf=M_SP_THIEF;
|
||||
m_status_set(m,HOSTILE);
|
||||
acquire(-1);
|
||||
bless(-1);
|
||||
sleep_player(m->level/2);
|
||||
summon(-1,-1);
|
||||
summon(-1,-1);
|
||||
summon(-1,-1);
|
||||
summon(-1,-1);
|
||||
}
|
||||
|
||||
|
||||
void m_talk_seductor(pmt m)
|
||||
{
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
if (Player.preference == 'n')
|
||||
{
|
||||
strcat(Str2, " notices your disinterest and leaves with a pout.");
|
||||
mprint(Str2);
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat(Str2," beckons seductively...");
|
||||
mprint(Str2);
|
||||
mprint("Flee? [yn] ");
|
||||
if (ynq()=='y') {
|
||||
mprint("You feel stupid.");
|
||||
}
|
||||
else {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
strcat(Str2," shows you a good time....");
|
||||
mprint(Str2);
|
||||
gain_experience(500);
|
||||
Player.con++;
|
||||
}
|
||||
}
|
||||
m_vanish(m);
|
||||
}
|
||||
|
||||
|
||||
void m_talk_demonlover(pmt m)
|
||||
{
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
if (Player.preference == 'n')
|
||||
{
|
||||
strcat(Str2, " notices your disinterest and changes with a snarl...");
|
||||
mprint(Str2);
|
||||
morewait();
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat(Str2," beckons seductively...");
|
||||
mprint(Str2);
|
||||
mprint("Flee? [yn] ");
|
||||
if (ynq()=='y')
|
||||
mprint("You feel fortunate....");
|
||||
else {
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," shows you a good time....");
|
||||
mprint(Str2);
|
||||
morewait();
|
||||
mprint("You feel your life energies draining...");
|
||||
level_drain(random_range(3)+1,"a demon's kiss");
|
||||
morewait();
|
||||
}
|
||||
}
|
||||
m->talkf = M_TALK_EVIL;
|
||||
m->meleef = M_MELEE_SPIRIT;
|
||||
m->specialf = M_SP_DEMON;
|
||||
m_status_reset(m,NEEDY);
|
||||
m_status_set(m,HOSTILE);
|
||||
|
||||
if ((m->monchar&0xff) == 's') {
|
||||
m->monchar = 'I'|CLR(RED);
|
||||
m->monstring = "incubus";
|
||||
}
|
||||
else {
|
||||
m->monchar = 'S'|CLR(RED);
|
||||
m->monstring = "succubus";
|
||||
}
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
strcat(Str2," laughs insanely.");
|
||||
mprint(Str2);
|
||||
mprint("You now notice the fangs, claws, batwings...");
|
||||
}
|
||||
|
||||
|
||||
void m_talk_horse(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE))
|
||||
mprint("The horse neighs angrily at you.");
|
||||
else if (m_statusp(m,HUNGRY))
|
||||
mprint("The horse noses curiously at your pack.");
|
||||
else if (gamestatusp(MOUNTED))
|
||||
mprint("The horse and your steed don't seem to get along.");
|
||||
else if (Current_Environment == Current_Dungeon)
|
||||
mprint("The horse shies; maybe he doesn't like the dungeon air....");
|
||||
else {
|
||||
mprint("The horse lets you pat his nose. Want to ride him? [yn] ");
|
||||
if (ynq()=='y') {
|
||||
m_remove(m);
|
||||
setgamestatus(MOUNTED);
|
||||
calc_melee();
|
||||
mprint("You are now equitating!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void m_talk_hyena(pmt m)
|
||||
{
|
||||
mprint("The hyena only laughs at you...");
|
||||
}
|
||||
|
||||
void m_talk_parrot(pmt m)
|
||||
{
|
||||
mprint("Polly wanna cracker?");
|
||||
}
|
||||
|
||||
|
||||
void m_talk_servant(pmt m)
|
||||
{
|
||||
int target,x=Player.x,y=Player.y;
|
||||
if (m->id == SERV_LAW) {
|
||||
target = SERV_CHAOS;
|
||||
mprint("The Servant of Law pauses in thought for a moment.");
|
||||
mprint("You are asked: Are there any Servants of Chaos hereabouts? [yn] ");
|
||||
}
|
||||
else {
|
||||
target = SERV_LAW;
|
||||
mprint("The Servant of Chaos grins mischievously at you.");
|
||||
mprint("You are asked: Are there any Servants of Law hereabouts? [yn] ");
|
||||
}
|
||||
if (ynq()=='y') {
|
||||
print1("Show me.");
|
||||
show_screen();
|
||||
drawmonsters(TRUE);
|
||||
setspot(&x,&y);
|
||||
if (Level->site[x][y].creature != NULL) {
|
||||
if (Level->site[x][y].creature->id == target) {
|
||||
mprint("The Servant launches itself towards its enemy.");
|
||||
mprint("In a blaze of combat, the Servants annihilate each other!");
|
||||
gain_experience(m->xpv);
|
||||
m_death(Level->site[x][y].creature);
|
||||
Level->site[m->x][m->y].creature = NULL;
|
||||
m->x = x;
|
||||
m->y = y;
|
||||
Level->site[x][y].creature = m;
|
||||
m_death(Level->site[x][y].creature);
|
||||
}
|
||||
else mprint("Right. Tell me about it. Idiot!");
|
||||
}
|
||||
else mprint("Right. Tell me about it. Idiot!");
|
||||
}
|
||||
else mprint("The servant shrugs and turns away.");
|
||||
}
|
||||
|
||||
|
||||
void m_talk_animal(pmt m)
|
||||
{
|
||||
if (m->uniqueness == COMMON) {
|
||||
strcpy(Str2,"The ");
|
||||
strcat(Str2,m->monstring);
|
||||
}
|
||||
else strcpy(Str2,m->monstring);
|
||||
mprint(Str2);
|
||||
mprint("shows you a scholarly paper by Dolittle, D. Vet.");
|
||||
mprint("which demonstrates that animals don't have speech centers");
|
||||
mprint("complex enough to communicate in higher languages.");
|
||||
mprint("It giggles softly to itself and takes back the paper.");
|
||||
}
|
||||
|
||||
|
||||
void m_talk_scream(pmt m)
|
||||
{
|
||||
mprint("A thinly echoing scream reaches your ears....");
|
||||
morewait();
|
||||
mprint("You feel doomed....");
|
||||
morewait();
|
||||
mprint("A bird appears and flies three times widdershins around your head.");
|
||||
summon(-1,QUAIL);
|
||||
m->talkf = M_TALK_EVIL;
|
||||
}
|
||||
|
||||
|
||||
void m_talk_archmage(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
mprint("The Archmage ignores your attempt at conversation");
|
||||
mprint("and concentrates on his spellcasting....");
|
||||
}
|
||||
else if (Current_Environment == E_COURT) {
|
||||
mprint("The Archmage congratulates you on getting this far.");
|
||||
mprint("He invites you to attempt the Throne of High Magic");
|
||||
mprint("but warns you that it is important to wield the Sceptre");
|
||||
mprint("before sitting on the throne.");
|
||||
if (Level->site[m->x][m->y].p_locf == L_THRONE) {
|
||||
mprint("The Archmage smiles and makes an arcane gesture....");
|
||||
m_vanish(m);
|
||||
}
|
||||
}
|
||||
else {
|
||||
mprint("The Archmage tells you to find him again in his");
|
||||
mprint("Magical Court at the base of his castle in the mountains");
|
||||
mprint("of the far North-East; if you do he will give you some");
|
||||
mprint("important information.");
|
||||
}
|
||||
}
|
||||
|
||||
void m_talk_maharaja(pmt m)
|
||||
{
|
||||
if (m_statusp(m,HOSTILE)) {
|
||||
switch (random_range(4)) {
|
||||
case 0: mprint("The Maharaja says: 'So Mote it be!'");
|
||||
break;
|
||||
case 1: mprint("The Maharaja says: 'Let it be written!'");
|
||||
break;
|
||||
case 2: mprint("The Maharaja says: 'Let it be done!'");
|
||||
break;
|
||||
case 3: mprint("The Maharaja offers you goat-eyeball soup.'");
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (Current_Environment == E_PALACE) {
|
||||
mprint("The Maharaja insists that you leave. Or die.");
|
||||
}
|
||||
else {
|
||||
mprint("Where did I put those dungeons?");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_talk_merchant(pmt m)
|
||||
{
|
||||
if (! m_statusp(m,HOSTILE)) {
|
||||
if (Current_Environment == E_VILLAGE) {
|
||||
mprint("The merchant asks you if you want to buy a horse for 250GP.");
|
||||
mprint("Pay the merchant? [yn] ");
|
||||
if (ynq()=='y') {
|
||||
if (Player.cash < 250)
|
||||
mprint("The merchant says: 'Come back when you've got the cash!'");
|
||||
else {
|
||||
Player.cash -= 250;
|
||||
mprint("The merchant takes your money and tells you to select");
|
||||
mprint("any horse you want in the stables.");
|
||||
mprint("He says: 'You'll want to get to know him before trying to");
|
||||
mprint("ride him. By the way, food for the horse is not included.'");
|
||||
mprint("The merchant runs off toward the bank, cackling gleefully.");
|
||||
m_vanish(m);
|
||||
}
|
||||
}
|
||||
else mprint("The merchant tells you to stop wasting his time.");
|
||||
}
|
||||
else {
|
||||
mprint("The merchant tells you to visit his stables at his village");
|
||||
mprint("for a great deal on a horse.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
mprint("The merchant ignores you and screams:");
|
||||
mprint("'Help! Help! I'm being oppressed!'");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void m_talk_prime(pmt m)
|
||||
{
|
||||
if (!m_statusp(m,HOSTILE)) {
|
||||
if (Current_Environment == E_CIRCLE) {
|
||||
print1("The Prime nods brusquely at you, removes a gem from his");
|
||||
print2("sleeve, places it on the floor, and vanishes wordlessly.");
|
||||
morewait();
|
||||
m_dropstuff(m);
|
||||
m_vanish(m);
|
||||
}
|
||||
else {
|
||||
print1("The Prime makes an intricate gesture, which leaves behind");
|
||||
print2("glowing blue sparks... He winks mischievously at you....");
|
||||
if (Player.rank[CIRCLE] > 0) {
|
||||
morewait();
|
||||
print1("The blue sparks strike you! You feel enhanced!");
|
||||
print2("You feel more experienced....");
|
||||
Player.pow+=Player.rank[CIRCLE];
|
||||
Player.mana += calcmana();
|
||||
gain_experience(1000);
|
||||
m_vanish(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
else m_talk_evil(m);
|
||||
}
|
95
newrand.c
Normal file
95
newrand.c
Normal file
@ -0,0 +1,95 @@
|
||||
/* A C-program for MT19937: Integer version */
|
||||
/* genrand() generates one pseudorandom unsigned integer (32bit) */
|
||||
/* which is uniformly distributed among 0 to 2^32-1 for each */
|
||||
/* call. sgenrand(seed) set initial values to the working area */
|
||||
/* of 624 words. Before genrand(), sgenrand(seed) must be */
|
||||
/* called once. (seed is any 32-bit integer except for 0). */
|
||||
/* Coded by Takuji Nishimura, considering the suggestions by */
|
||||
/* Topher Cooper and Marc Rieffel in July-Aug. 1997. */
|
||||
|
||||
/* This library is free software; you can redistribute it and/or */
|
||||
/* modify it under the terms of the GNU Library General Public */
|
||||
/* License as published by the Free Software Foundation; either */
|
||||
/* version 2 of the License, or (at your option) any later */
|
||||
/* version. */
|
||||
/* This library is distributed in the hope that it will be useful, */
|
||||
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */
|
||||
/* See the GNU Library General Public License for more details. */
|
||||
/* You should have received a copy of the GNU Library General */
|
||||
/* Public License along with this library; if not, write to the */
|
||||
/* Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA */
|
||||
/* 02111-1307 USA */
|
||||
|
||||
/* Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. */
|
||||
/* When you use this, send an email to: matumoto@math.keio.ac.jp */
|
||||
/* with an appropriate reference to your work. */
|
||||
|
||||
/* Period parameters */
|
||||
#define N 624
|
||||
#define M 397
|
||||
#define MATRIX_A 0x9908b0df /* constant vector a */
|
||||
#define UPPER_MASK 0x80000000 /* most significant w-r bits */
|
||||
#define LOWER_MASK 0x7fffffff /* least significant r bits */
|
||||
|
||||
/* Tempering parameters */
|
||||
#define TEMPERING_MASK_B 0x9d2c5680
|
||||
#define TEMPERING_MASK_C 0xefc60000
|
||||
#define TEMPERING_SHIFT_U(y) (y >> 11)
|
||||
#define TEMPERING_SHIFT_S(y) (y << 7)
|
||||
#define TEMPERING_SHIFT_T(y) (y << 15)
|
||||
#define TEMPERING_SHIFT_L(y) (y >> 18)
|
||||
|
||||
static unsigned long mt[N]; /* the array for the state vector */
|
||||
static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */
|
||||
|
||||
/* initializing the array with a NONZERO seed */
|
||||
void
|
||||
sgenrand(seed)
|
||||
unsigned long seed;
|
||||
{
|
||||
/* setting initial seeds to mt[N] using */
|
||||
/* the generator Line 25 of Table 1 in */
|
||||
/* [KNUTH 1981, The Art of Computer Programming */
|
||||
/* Vol. 2 (2nd Ed.), pp102] */
|
||||
mt[0]= seed & 0xffffffff;
|
||||
for (mti=1; mti<N; mti++)
|
||||
mt[mti] = (69069 * mt[mti-1]) & 0xffffffff;
|
||||
}
|
||||
|
||||
unsigned long
|
||||
genrand()
|
||||
{
|
||||
unsigned long y;
|
||||
static unsigned long mag01[2]={0x0, MATRIX_A
|
||||
};
|
||||
/* mag01[x] = x * MATRIX_A for x=0,1 */
|
||||
|
||||
if (mti >= N) { /* generate N words at one time */
|
||||
int kk;
|
||||
|
||||
if (mti == N+1) /* if sgenrand() has not been called, */
|
||||
sgenrand(4357); /* a default initial seed is used */
|
||||
|
||||
for (kk=0;kk<N-M;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
for (;kk<N-1;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
|
||||
mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
|
||||
mti = 0;
|
||||
}
|
||||
|
||||
y = mt[mti++];
|
||||
y ^= TEMPERING_SHIFT_U(y);
|
||||
y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
|
||||
y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C;
|
||||
y ^= TEMPERING_SHIFT_L(y);
|
||||
|
||||
return y;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user