|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 60251 (0xeb5b)
Types: TextFile
Names: »patches04«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Umoria/patches04«
*** oldmoria/INSTALL Sun Oct 30 01:18:12 1988
--- newmoria/INSTALL Sun Oct 30 01:07:29 1988
***************
*** 23,26 ****
--- 23,32 ----
define NO_SIGNED_CHARS in config.h.
+ By default, scores from panic saved games are not stored into the
+ scoreboard. Some sites have a lot of trouble with HANGUP signals though.
+ If so, you can allow scores of panic saved games to be recorded by defining
+ SCORE_PANIC_SAVES. This is not recommended, as it enables some rather
+ devious cheating methods.
+
Moria may not compile properly on SYS III machines(?)
*** oldmoria/Int16bit.patch Sun Oct 30 01:17:48 1988
--- newmoria/Int16bit.patch Sun Oct 30 01:08:00 1988
***************
*** 393,397 ****
{
register int i;
! register int mask = 0x1;
! for (i = 0; i < sizeof(int)*8; i++) {
--- 393,397 ----
{
register int i;
! ! register int mask = 0x1;
! for (i = 0; i < sizeof(int)*8; i++) {
***************
*** 406,410 ****
{
register int i;
! register int mask = 0x1;
! for (i = 0; i < sizeof(*test)*8; i++) {
--- 406,410 ----
{
register int i;
! ! bitset_t mask = 0x1;
! for (i = 0; i < sizeof(*test)*8; i++) {
***************
*** 500,504 ****
int new_spell;
int test_array[32];
! ! bitset_t int spell_flag;
int learn;
register spell_type *s_ptr;
--- 500,504 ----
int new_spell;
int test_array[32];
! ! bitset_t spell_flag;
int learn;
register spell_type *s_ptr;
*** oldmoria/Moria_news Sun Oct 30 01:16:40 1988
--- newmoria/Moria_news Sun Oct 30 01:07:31 1988
***************
*** 9,13 ****
UNIX Port : James E. Wilson / UC Berkeley
- This is a beta release of umoria 4.87
-
Dungeon Master: This file may contain updates and news.
--- 9,11 ----
*** oldmoria/PROBLEMS Sun Oct 30 01:17:44 1988
--- newmoria/PROBLEMS Sun Oct 30 01:07:32 1988
***************
*** 466,469 ****
--- 466,527 ----
many files: change move_char(5) to move_light(char_row, char_col, char_row,
char_col), avoid problems with potential recursive calls to move_char()
+ sent out u487.p3 patch file
+ --------------------- 7/6
+ Int16bit.patch: change "bitset_t int" to "bitset_t"
+ config.h: NO_SIGNED_CHARS was missing trailing */
+ Moria_news: delete beta release comment
+ --------------------- 7/8
+ spells.c: fixed poly_monster, only worked when next to monster
+ --------------------- 8/9
+ save.c: printing of version changed from %lf to %.2lf
+ config.h: eliminated comment about dynix not needing BUGGY_CURSES
+ --------------------- 8/13
+ Int16bit.patch: mask in bit_pos() in misc1.c should be bitset_t, not int
+ --------------------- 8/15
+ misc2.c,spells.c: changed array decl for function parameters (e.g. vtype)
+ to pointers (e.g. char *)
+ --------------------- 8/24
+ help.c: change char for original mode shell_out command from $ to !
+ files.c: null terminate dun_line in after inner_loop; make filename, page_width
+ and page_height static to remember new default values
+ save.c: change references of st_atime to st_mtime, prevent automatic backup
+ programs from corrupting save files
+ -------------------- 9/21
+ creature.c: for drain charge attack (24), only succeed if there is comething
+ in the player's inventory
+ --------------------- 9/30
+ moria1.c: missing 'int' keyword added back in
+ --------------------- 10/10
+ moria1.c: sub3_move_light, change order of declarations since it caused a
+ problem on a 3B2
+ types.h: spl_type declared as array of 22 when should have been array of 32
+ ---------------------- 10/17
+ externs.h: t_level declared incorrectly
+ ---------------------- 10/29
+ *.c: fix all uses of divide operator, eliminate unnecessary floating point
+ operations, distinguish between round() and trunc()/div in VMS source
+ monsters.c: changed invisible stalker from 'E' to 'I'
+ spells.c: fixed td_destroy, so that when it destroys trap on chest, it also changes
+ name of chest to reflect this
+ moria2.c, spells.c: eliminated first extraneous space in " (Empty)" etc. strings
+ scrolls.c: fixed dangling pointer bug, was calling inven_destroy, and then using
+ pointer to destroyed object
+ files.c, death.c: add name of score file to "can't open" error messages
+ moria2.c: examine_book does not work if blind/no light/confused
+ treasure1.c, treasure2.c: add plurals to magic books, and pints of ale/wine
+ io.c: panic save if read EOF from stdin
+ main.c, save.c, signals.c: only panic save if character generation is complete,
+ eliminated variable generate
+ signals.c: flush input in control-C handler, move put_qio so "y/n?" message erased
+ dungeon.c: ^A (0) no longer asks if you want to quit, can be returned by an
+ interrupted getchar call
+ moria1.c: area_affect does not need to test find_flag, it is always true
+ treasure1.c: change potion of water to "crystal clear", so no conflict with
+ randomly named potions
+ config.h, death.c, save.c: added option SCORE_PANIC_SAVES for those who
+ find the non-scoring panic_save feature annoying
+ store2.c: add asterisk to call through function pointer, some compilers need this
+ constants.h, README, wizard.c: update patch level to 4, create PATCHLEVEL
+ define and print it out with version command
Working on:
***************
*** 480,507 ****
Things to be fixed:
!
! check plurals "~" in object names, esp. Pint in treasure2.c
! make get_panel run stops user customizable?
! objects in outside corners do not stop run
! moria1.c: area_affect does not need to check "if (find_flag)"
! carefully check everyplace that clears find_flag, there are a lot
! of unnecessary checks, perhaps even some recursive calls to move_char
! check setting of moria_flag in dungeon.c, esp. after restore_char ()
add "moria ^file" option to automatically do wizard restore,
do the umask calls in the program instead of forcing user to type them
! don't ask for quit on char '\0', should instead ignore it
! check for EOF when reading characters
! complaint that a hangup (kill -1) results in a game whose
! score will no longer be posted to the scoreboard
! resting should have small but finite chance of waking a monster
! perhaps check once every 10 turns against randint(6) > stealth
! cursor should be positioned somewhere before each inkey call
all npc spells should print descriptive message
allow rerolling after choose race/class
! remove "clear" from random potion names?
pad should take a char not a string
- print a number with the repeat_msg command
Message line overextending into second line should be erased
! identify staffs/wands as having zero charges, when they run out
``can't carry that much weight'' before ``that many items'' is wrong?
I like it the way it is now, though
--- 538,582 ----
Things to be fixed:
! suspend handler should save/restore local special characters,
! need routine to surround or replace suspend_handdler()
! these commands which take a dir should not work when confused,
! bash, tunnel, closeobject, jamdoor, openobject
add "moria ^file" option to automatically do wizard restore,
do the umask calls in the program instead of forcing user to type them
! some armor have negative to-hit values, should this be part of the name?
! mention this in the Moria.doc file
! add a pull-back map command like the PC version, display entire map on screen
! only showing important features, like stairs
! apply the new.16bit.patches to create a new Int16bit.patch file
! identify staffs/wands as having zero charges, when they run out
! list of spell books not cleared when get cast which spell? prompt
! wielding heavy wepaons, fix + to hit on screen?
! ptho subtracted in attak_blows() misc2.c, could probably subtract
! these point in moria1.c py_bonuses(), when calculate dis_th
! should one really be able to find a chest inside of another chest??
! received report that someone once lost a light source because of the
! wield/wear command, I don't see anything wrong though
! trap names are vague,
! have two names for each trap, a simple search discloses current vague name,
! setting it off, or a find/identify trap gives the long name
! use of reset_flag for free moves still a little inconsistent
! commands that only use objects in backpack (use,aim,quaff,eat,read_scroll,
! pray,cast,etc.) are free move if no action taken,
! other commands (bash,openobject,closeobject,jamdoor,etc.) always use move
! even if no action taken
! problems with mass polymorph wand? I once ended up surrounded by
! non existant mushrooms after many zaps. I think it is a race, i.e.
! scans monster list while adding and deleting elements.
! - this can also while cloning cubes
! - also, when compact_monsters deletes a monster, it does not update screen
! add scorefile editing functions, perhaps just have an ascii score file?
! should low level monsters be able to eat high level monsters?
! objects in outside corners do not stop run
all npc spells should print descriptive message
allow rerolling after choose race/class
! cursor should be positioned somewhere before each inkey call
pad should take a char not a string
Message line overextending into second line should be erased
! print a number with the repeat_msg command
``can't carry that much weight'' before ``that many items'' is wrong?
I like it the way it is now, though
***************
*** 509,512 ****
--- 584,589 ----
perhaps use only motion optimization stuff?
Dot tunneling command
+ resting should have small but finite chance of waking a monster
+ perhaps check once every 10 turns against randint(6) > stealth
encrypt info before writing it to the save file
perhaps xor with stat buffer
***************
*** 517,522 ****
of the vault_trap bug fixed 4/6
subval, missile_ctr could be short ints
- note that some armor can decrease to-hit values in docs,
- should these be displayed in name?
missing amulets, 1-4 strength, constitution, intelligence, dexterity
missing rings 5-6 gain wisdom, gain charisma
--- 594,597 ----
***************
*** 529,533 ****
perhaps some ifdefed code which does no-blocking I/O for them?
add death due to starvation
- wielding heavy wepaons, fix + to hit on screen?
don't let dragons breathe on first attack, AMHD is nasty
especially after the screen changes to the next panel
--- 604,607 ----
***************
*** 534,538 ****
checking both ((!m_ptr->ml) or (!see_invis && mon invis)) is probably
redundant when determining whether or not player can see a monster
- list of spell books not cleared when get cast which spell? prompt
should we call m_name if spell only applies to visible creatures?
many spells do not print desciptive comment, aggravate_monster for instance
--- 608,611 ----
***************
*** 562,567 ****
in general, loss of an ability should have many affects, non of which are
implemented, for example, lose of intelligence should cause a mage
! to lose spells
! cases of permanent slowness reported?
add user name to scoreboard?
also add points and experience to scoreboard
--- 635,640 ----
in general, loss of an ability should have many affects, non of which are
implemented, for example, lose of intelligence should cause a mage
! to lose spells, gain of int should cause mage to learn spells
! cases of permanent slowness reported, why does this happen?
add user name to scoreboard?
also add points and experience to scoreboard
***************
*** 570,574 ****
change turn to a long
store_open should be a long
- use of reset_flag for free moves still a little inconsistent
fix save files to include obj desc, then only need one random number
generator which can use table program
--- 643,646 ----
***************
*** 575,582 ****
replace magic numbers with constants
name objects if use did not identify them
- add a pull-back map command like the PC version, display entire map on screen
- only showing important features, like stairs
-
Very Hard things to add:
recenter character on screen?
--- 647,654 ----
replace magic numbers with constants
name objects if use did not identify them
+ light spells should work in corridors, what they light should be permanent
+ creeping coins should leaves coins as treasure
+ when creature steals and then dies, the stolen item should appear
Very Hard things to add:
recenter character on screen?
***************
*** 588,593 ****
--- 660,667 ----
'flavor' the levels, dragons on one level, undead on another, etc.
what's been discovered list
+ make get_panel run stops user customizable? via environment variable
use environment variables to specify rogue-like/original keys
use environment variable for default save file
+ use environment variables for files.c: page_height,page_width, filename
add option to restore files from default save filename
commands not close enough to rogue style
*** oldmoria/README Sun Oct 30 01:16:34 1988
--- newmoria/README Sun Oct 30 01:07:32 1988
***************
*** 1,4 ****
! This copy of umoria includes the first three patch files (upto u487.p3).
Please report problems to wilson@ji.Berkeley.EDU (ucbvax!ucbji!wilson).
--- 1,4 ----
! This copy of 4.87 umoria includes the first four patch files (upto u487.p4).
Please report problems to wilson@ji.Berkeley.EDU (ucbvax!ucbji!wilson).
*** oldmoria/config.h Sun Oct 30 01:16:45 1988
--- newmoria/config.h Sun Oct 30 01:07:32 1988
***************
*** 38,43 ****
/* if the screen does not look right (it will be obvious) then you have a buggy
version of curses, and you must define this */
! /* this must be defined for Ultrix systems, and for most 4.2BSD systems
! it is not needed for Dynix */
/* only need to recompile io.c */
/* #define BUGGY_CURSES */
--- 38,42 ----
/* if the screen does not look right (it will be obvious) then you have a buggy
version of curses, and you must define this */
! /* this must be defined for Ultrix systems, and for most 4.2BSD systems */
/* only need to recompile io.c */
/* #define BUGGY_CURSES */
***************
*** 45,49 ****
/* define this is your machine does not have signed characters:
this is needed for IBM PC-RT, 3B1, 3B2, 3B20, and perhaps others */
! /* #define NO_SIGNED_CHARS
/* this will slow down the game a bit, and therefore make it use up a little
--- 44,48 ----
/* define this is your machine does not have signed characters:
this is needed for IBM PC-RT, 3B1, 3B2, 3B20, and perhaps others */
! /* #define NO_SIGNED_CHARS */
/* this will slow down the game a bit, and therefore make it use up a little
***************
*** 52,55 ****
--- 51,61 ----
/* only need to recompile dungeon.c and create.c
/* #define SLOW */
+
+ /* if this is defined, scores from panic save files will be added to the
+ scoreboard, this is not recommended because it enables several rather
+ devious cheating methods, however, it is useful on systems where HANGUP
+ signals are common (i.e. lots of dialup users, unreliable terminal
+ multiplexors, etc.) */
+ /* #define SCORE_PANIC_SAVES */
/* system dependent defines follow, you should not need to change anything
*** oldmoria/constants.h Sun Oct 30 01:18:04 1988
--- newmoria/constants.h Sun Oct 30 01:07:33 1988
***************
*** 10,13 ****
--- 10,14 ----
/* Current version number of Moria */
#define CUR_VERSION 4.87
+ #define PATCH_LEVEL 4
#ifndef TRUE
*** oldmoria/creature.c Sun Oct 30 01:17:37 1988
--- newmoria/creature.c Sun Oct 30 01:07:34 1988
***************
*** 423,427 ****
case 24: /*Eat charges */
if (test_hit(15, (int)c_ptr->level, 0, p_ptr->pac+p_ptr->ptoac))
! flag = TRUE;
break;
case 99:
--- 423,428 ----
case 24: /*Eat charges */
if (test_hit(15, (int)c_ptr->level, 0, p_ptr->pac+p_ptr->ptoac))
! if (inven_ctr > 0) /* check to make sure an object exists */
! flag = TRUE;
break;
case 99:
***************
*** 1171,1175 ****
(void) strcat(cdesc, "breathes lightning.");
msg_print(cdesc);
! breath(1, char_row, char_col, (int)(m_ptr->hp/4.0), ddesc);
break;
case 21: /*Breath Gas */
--- 1172,1176 ----
(void) strcat(cdesc, "breathes lightning.");
msg_print(cdesc);
! breath(1, char_row, char_col, (m_ptr->hp / 4), ddesc);
break;
case 21: /*Breath Gas */
***************
*** 1176,1180 ****
(void) strcat(cdesc, "breathes gas.");
msg_print(cdesc);
! breath(2, char_row, char_col, (int)(m_ptr->hp/3.0), ddesc);
break;
case 22: /*Breath Acid */
--- 1177,1181 ----
(void) strcat(cdesc, "breathes gas.");
msg_print(cdesc);
! breath(2, char_row, char_col, (m_ptr->hp / 3), ddesc);
break;
case 22: /*Breath Acid */
***************
*** 1181,1185 ****
(void) strcat(cdesc, "breathes acid.");
msg_print(cdesc);
! breath(3, char_row, char_col, (int)(m_ptr->hp/3.0), ddesc);
break;
case 23: /*Breath Frost */
--- 1182,1186 ----
(void) strcat(cdesc, "breathes acid.");
msg_print(cdesc);
! breath(3, char_row, char_col, (m_ptr->hp / 3), ddesc);
break;
case 23: /*Breath Frost */
***************
*** 1186,1190 ****
(void) strcat(cdesc, "breathes frost.");
msg_print(cdesc);
! breath(4, char_row, char_col, (int)(m_ptr->hp/3.0), ddesc);
break;
case 24: /*Breath Fire */
--- 1187,1191 ----
(void) strcat(cdesc, "breathes frost.");
msg_print(cdesc);
! breath(4, char_row, char_col, (m_ptr->hp / 3), ddesc);
break;
case 24: /*Breath Fire */
***************
*** 1191,1195 ****
(void) strcat(cdesc, "breathes fire.");
msg_print(cdesc);
! breath(5, char_row, char_col, (int)(m_ptr->hp/3.0), ddesc);
break;
default:
--- 1192,1196 ----
(void) strcat(cdesc, "breathes fire.");
msg_print(cdesc);
! breath(5, char_row, char_col, (m_ptr->hp / 3), ddesc);
break;
default:
***************
*** 1350,1354 ****
else if (py.flags.rest < 1)
if (randint(10) > py.misc.stl)
! m_ptr->csleep -= (75.0/m_ptr->cdis);
if (m_ptr->stunned > 0)
m_ptr->stunned--;
--- 1351,1355 ----
else if (py.flags.rest < 1)
if (randint(10) > py.misc.stl)
! m_ptr->csleep -= (75 / m_ptr->cdis);
if (m_ptr->stunned > 0)
m_ptr->stunned--;
*** oldmoria/death.c Sun Oct 30 01:18:05 1988
--- newmoria/death.c Sun Oct 30 01:07:35 1988
***************
*** 133,140 ****
high_scores score;
char list[20][256];
if (1 > (fd = open(MORIA_TOP, O_RDONLY, 0644)))
{
! prt("Error opening top twenty file\n", 0, 0);
return ;
}
--- 133,142 ----
high_scores score;
char list[20][256];
+ char string[100];
if (1 > (fd = open(MORIA_TOP, O_RDONLY, 0644)))
{
! sprintf (string, "Error opening score file \"%s\"\n", MORIA_TOP);
! prt(string, 0, 0);
return ;
}
***************
*** 267,270 ****
--- 269,273 ----
exit_game();
+ #ifndef SCORE_PANIC_SAVES
if (panic_save == 1)
{
***************
*** 275,278 ****
--- 278,282 ----
exit_game();
}
+ #endif
myscore.points = (long)total_points();
*** oldmoria/dungeon.c Sun Oct 30 01:17:26 1988
--- newmoria/dungeon.c Sun Oct 30 01:07:53 1988
***************
*** 704,708 ****
if (randint(100) == 1)
{
! find_flag = FALSE; /* no need for move_char(5) */
teleport(40);
}
--- 704,708 ----
if (randint(100) == 1)
{
! find_flag = FALSE; /* no need for move_char(5) */
teleport(40);
}
***************
*** 753,757 ****
switch(*com_val)
{
! case 0: case 11: /*^K == exit */
flush();
if (get_com("Enter 'Q' to quit", &command))
--- 753,757 ----
switch(*com_val)
{
! case 11: /*^K == exit */
flush();
if (get_com("Enter 'Q' to quit", &command))
***************
*** 1084,1087 ****
--- 1084,1089 ----
restore_char(); /*^V == restore */
prt_stat_block();
+ /* force generation of new level, in case there is something wrong
+ with the old one */
moria_flag = TRUE;
break;
***************
*** 1147,1151 ****
switch(*com_val)
{
! case 0: case 'Q': /*Q == exit */
flush();
if (get_com("Do you really want to quit?", &command))
--- 1149,1153 ----
switch(*com_val)
{
! case 'Q': /*Q == exit */
flush();
if (get_com("Do you really want to quit?", &command))
***************
*** 1566,1569 ****
--- 1568,1573 ----
restore_char(); /*^V == restore */
prt_stat_block();
+ /* force generation of new level, in case there is something wrong
+ with the old one */
moria_flag = TRUE;
break;
*** oldmoria/eat.c Sun Oct 30 01:18:14 1988
--- newmoria/eat.c Sun Oct 30 01:07:35 1988
***************
*** 210,214 ****
{
m_ptr = &py.misc;
! m_ptr->exp += ((i_ptr->level/m_ptr->lev) + .5);
prt_experience();
}
--- 210,214 ----
{
m_ptr = &py.misc;
! m_ptr->exp += (((float) i_ptr->level / (float) m_ptr->lev) + 0.5);
prt_experience();
}
*** oldmoria/externs.h Sun Oct 30 01:18:15 1988
--- newmoria/externs.h Sun Oct 30 01:07:42 1988
***************
*** 12,16 ****
extern int missile_ctr; /* Counter for missiles */
extern int msg_flag; /* Set with first msg */
- extern int generate; /* Generate next level */
extern int death; /* True if died */
extern vtype died_from; /* What killed him */
--- 12,15 ----
***************
*** 93,97 ****
extern treasure_type object_list[MAX_OBJECTS];
extern int object_ident[MAX_OBJECTS];
! extern int t_level[MAX_OBJ_LEVEL];
extern treasure_type gold_list[MAX_GOLD];
extern treasure_type t_list[MAX_TALLOC];
--- 92,96 ----
extern treasure_type object_list[MAX_OBJECTS];
extern int object_ident[MAX_OBJECTS];
! extern int t_level[MAX_OBJ_LEVEL+1];
extern treasure_type gold_list[MAX_GOLD];
extern treasure_type t_list[MAX_TALLOC];
*** oldmoria/files.c Sun Oct 30 01:18:00 1988
--- newmoria/files.c Sun Oct 30 01:07:36 1988
***************
*** 33,37 ****
if (1 > (highscore_fd = open(MORIA_TOP, O_RDWR | O_CREAT, 0644)))
{
! (void) fputs("Can't open score file!\n", stderr);
exit(1);
}
--- 33,37 ----
if (1 > (highscore_fd = open(MORIA_TOP, O_RDWR | O_CREAT, 0644)))
{
! (void) fprintf (stderr, "Can't open score file \"%s\"\n", MORIA_TOP);
exit(1);
}
***************
*** 120,138 ****
register k, l;
register i7, i8;
! char dun_line[MAX_WIDTH];
char *dun_ptr;
! vtype filename1;
char tmp_str[80];
FILE *file1;
! int page_width = OUTPAGE_WIDTH;
! int page_height = OUTPAGE_HEIGHT;
/* this allows us to strcat each character in the inner loop,
instead of using the expensive sprintf */
! prt("File name: ", 0, 0);
! if (get_string(filename1, 0, 11, 64))
{
! if (strlen(filename1) == 0)
! (void) strcpy(filename1, "MORIAMAP.DAT");
if ((file1 = fopen(filename1, "w")) == NULL)
{
--- 120,140 ----
register k, l;
register i7, i8;
! char dun_line[MAX_WIDTH+1];
char *dun_ptr;
! static vtype filename1 = "MORIAMAP.DAT";
! vtype filename2;
char tmp_str[80];
FILE *file1;
! static int page_width = OUTPAGE_WIDTH;
! static int page_height = OUTPAGE_HEIGHT;
/* this allows us to strcat each character in the inner loop,
instead of using the expensive sprintf */
! (void) sprintf (tmp_str, "File name [%s]: ", filename1);
! prt(tmp_str, 0, 0);
! if (get_string(filename2, 0, strlen(tmp_str), 64))
{
! if (strlen(filename2) > 0)
! (void) strcpy(filename1, filename2);
if ((file1 = fopen(filename1, "w")) == NULL)
{
***************
*** 209,212 ****
--- 211,215 ----
}
*dun_ptr++ = '\n';
+ *dun_ptr++ = '\0';
(void) fputs(dun_line, file1);
}
*** oldmoria/generate.c Sun Oct 30 01:17:53 1988
--- newmoria/generate.c Sun Oct 30 01:07:37 1988
***************
*** 140,145 ****
/* Choose starting point and direction */
! y = (cur_height/2.0) + 11 - randint(23);
! x = (cur_width/2.0) + 16 - randint(33);
dir = randint(8); /* Number 1-4, 6-9 */
--- 140,145 ----
/* Choose starting point and direction */
! y = (cur_height / 2) + 11 - randint(23);
! x = (cur_width / 2) + 16 - randint(33);
dir = randint(8); /* Number 1-4, 6-9 */
*** oldmoria/help.c Sun Oct 30 01:17:33 1988
--- newmoria/help.c Sun Oct 30 01:07:38 1988
***************
*** 133,137 ****
prt("e Equipment list. | ^X Save character and quit.",
14, 0);
! prt("f Fire/Throw an item. | $ Shell out of game.", 15, 0);
/* prt("h Help on key commands. |", 16, 0); */
prt("i Inventory list. | < Go up an up-staircase.", 17, 0);
--- 133,137 ----
prt("e Equipment list. | ^X Save character and quit.",
14, 0);
! prt("f Fire/Throw an item. | ! Shell out of game.", 15, 0);
/* prt("h Help on key commands. |", 16, 0); */
prt("i Inventory list. | < Go up an up-staircase.", 17, 0);
*** oldmoria/io.c Sun Oct 30 01:17:17 1988
--- newmoria/io.c Sun Oct 30 01:07:38 1988
***************
*** 3,6 ****
--- 3,7 ----
#include <sys/ioctl.h>
#include <sys/file.h>
+ #include <signal.h>
#include "constants.h"
***************
*** 231,236 ****
char *ch;
{
put_qio(); /* Dump IO buffer */
! *ch = getch();
msg_flag = FALSE;
}
--- 232,251 ----
char *ch;
{
+ int i;
+
put_qio(); /* Dump IO buffer */
! i = getch();
! if ((i == EOF) && (feof (stdin)))
! {
! prt ("Read end of file!!!!!", 22, 0);
! refresh ();
! /* fake a call to the signal handler routines to do a panic save */
! #ifdef USG
! signal_save_core (-1);
! #else
! signal_save_core (-1, -1, (struct sigcontext *)0);
! #endif
! }
! *ch = i;
msg_flag = FALSE;
}
*** oldmoria/main.c Sun Oct 30 01:18:08 1988
--- newmoria/main.c Sun Oct 30 01:07:39 1988
***************
*** 134,138 ****
if ((argc > 1) && strlen(argv[argc-1]))
{ /* Retrieve character */
! generate = get_char(argv[argc-1]);
change_name();
magic_init();
--- 134,138 ----
if ((argc > 1) && strlen(argv[argc-1]))
{ /* Retrieve character */
! get_char(argv[argc-1]);
change_name();
magic_init();
***************
*** 154,158 ****
py.misc.cmana = (double)py.misc.mana;
magic_init();
! generate = TRUE;
}
--- 154,162 ----
py.misc.cmana = (double)py.misc.mana;
magic_init();
! generate_cave();
! /* prevent ^c quit from entering score into scoreboard,
! and prevent signal from creating panic save until this point,
! all info needed for save file is now valid */
! character_generated = 1;
}
***************
*** 164,175 ****
clear_screen(0, 0);
prt_stat_block();
- /* prevent ^c quit from entering score into scoreboard until this point */
- character_generated = 1;
/* Loop till dead, or exit */
while(!death) {
- if (generate) generate_cave(); /* New level */
dungeon(); /* Dungeon logic */
! generate = TRUE;
}
upon_death(); /* Character gets buried */
--- 168,176 ----
clear_screen(0, 0);
prt_stat_block();
/* Loop till dead, or exit */
while(!death) {
dungeon(); /* Dungeon logic */
! generate_cave (); /* New level */
}
upon_death(); /* Character gets buried */
*** oldmoria/misc1.c Sun Oct 30 01:17:20 1988
--- newmoria/misc1.c Sun Oct 30 01:07:30 1988
***************
*** 740,744 ****
mon_ptr->csleep = 0;
else
! mon_ptr->csleep = (c_list[z].sleep/5.0) + randint(c_list[z].sleep);
}
else
--- 740,744 ----
mon_ptr->csleep = 0;
else
! mon_ptr->csleep = (c_list[z].sleep / 5) + randint(c_list[z].sleep);
}
else
***************
*** 1074,1078 ****
/* abs may be a macro, don't call it with randnor as a parameter */
tmp = randnor(0, stand_dev);
! x = (abs(tmp)/10.0) + base;
if (x < base)
return(base);
--- 1074,1078 ----
/* abs may be a macro, don't call it with randnor as a parameter */
tmp = randnor(0, stand_dev);
! x = (abs(tmp) / 10) + base;
if (x < base)
return(base);
*** oldmoria/misc2.c Sun Oct 30 01:17:07 1988
--- newmoria/misc2.c Sun Oct 30 01:07:40 1988
***************
*** 291,295 ****
popt(&cur_pos);
! i = ((randint(dun_level+2)+2)/2.0) - 1;
if (randint(OBJ_GREAT) == 1)
i += randint(dun_level+1);
--- 291,295 ----
popt(&cur_pos);
! i = ((randint(dun_level+2)+2) / 2) - 1;
if (randint(OBJ_GREAT) == 1)
i += randint(dun_level+1);
***************
*** 439,443 ****
/* Print character stat in given row, column -RAK- */
prt_stat(stat_name, stat, row, column)
! vtype stat_name;
byteint stat;
int row, column;
--- 439,443 ----
/* Print character stat in given row, column -RAK- */
prt_stat(stat_name, stat, row, column)
! char *stat_name;
byteint stat;
int row, column;
***************
*** 456,460 ****
/* the longest title is 13 characters, so only pad to 13 */
prt_field(info, row, column)
! vtype info;
int row, column;
{
--- 456,460 ----
/* the longest title is 13 characters, so only pad to 13 */
prt_field(info, row, column)
! char *info;
int row, column;
{
***************
*** 465,469 ****
/* Print number with header at given row, column -RAK- */
prt_num(header, num, row, column)
! vtype header;
int num, row, column;
{
--- 465,469 ----
/* Print number with header at given row, column -RAK- */
prt_num(header, num, row, column)
! char *header;
int num, row, column;
{
***************
*** 1367,1371 ****
/* Print list of spells -RAK- */
print_new_spells(spell, num, redraw)
! spl_type spell;
register int num;
int *redraw;
--- 1367,1371 ----
/* Print list of spells -RAK- */
print_new_spells(spell, num, redraw)
! spl_rec *spell;
register int num;
int *redraw;
***************
*** 1392,1399 ****
/* Returns spell pointer -RAK- */
int get_spell(spell, num, sn, sc, prompt, redraw)
! spl_type spell;
register int num;
register int *sn, *sc;
! vtype prompt;
int *redraw;
{
--- 1392,1399 ----
/* Returns spell pointer -RAK- */
int get_spell(spell, num, sn, sc, prompt, redraw)
! spl_rec *spell;
register int num;
register int *sn, *sc;
! char *prompt;
int *redraw;
{
***************
*** 1844,1848 ****
else if (p_ptr->cdex < 118) blows = 5;
else blows = 6;
! adj_weight = ((p_ptr->cstr*10)/weight);
if (adj_weight < 2) blows = 1;
else if (adj_weight < 3) blows = (blows/3.0) + 1;
--- 1844,1848 ----
else if (p_ptr->cdex < 118) blows = 5;
else blows = 6;
! adj_weight = ((p_ptr->cstr*10) / weight);
if (adj_weight < 2) blows = 1;
else if (adj_weight < 3) blows = (blows/3.0) + 1;
*** oldmoria/monsters.c Sun Oct 30 01:16:38 1988
--- newmoria/monsters.c Sun Oct 30 01:07:49 1988
***************
*** 610,614 ****
20, 48, 1, 'T', "14d8" , "1 1 1d8|1 1 1d8|1 2 1d6|1 2 1d6", 32},
{"Invisible Stalker" ,0x00030022,0x00000000,0x0000, 200, 200,
! 20, 46, 3, 'E', "19d8" , "1 1 1d6" , 32},
{"Giant Hunter Ant" ,0x00000002,0x00000000,0x0002, 10, 150,
16, 40, 1, 'a', "12d8" , "1 2 4d8" , 32},
--- 610,614 ----
20, 48, 1, 'T', "14d8" , "1 1 1d8|1 1 1d8|1 2 1d6|1 2 1d6", 32},
{"Invisible Stalker" ,0x00030022,0x00000000,0x0000, 200, 200,
! 20, 46, 3, 'I', "19d8" , "1 1 1d6" , 32},
{"Giant Hunter Ant" ,0x00000002,0x00000000,0x0002, 10, 150,
16, 40, 1, 'a', "12d8" , "1 2 4d8" , 32},
*** oldmoria/moria1.c Sun Oct 30 01:17:01 1988
--- newmoria/moria1.c Sun Oct 30 01:07:54 1988
***************
*** 1375,1380 ****
/* When blinded, move only the player symbol... */
sub3_move_light(y1, x1, y2, x2)
! register int x1, y1;
! int x2, y2;
{
register int i, j;
--- 1375,1380 ----
/* When blinded, move only the player symbol... */
sub3_move_light(y1, x1, y2, x2)
! register int y1, x1;
! int y2, x2;
{
register int i, j;
***************
*** 1393,1397 ****
/* With no light, movement becomes involved... */
sub4_move_light(y1, x1, y2, x2)
! register y1, x1;
int y2, x2;
{
--- 1393,1397 ----
/* With no light, movement becomes involved... */
sub4_move_light(y1, x1, y2, x2)
! register int y1, x1;
int y2, x2;
{
***************
*** 1645,1651 ****
p_ptr = &py.flags;
if (p_ptr->confused+p_ptr->blind > 0)
! chance = chance / 10.0;
else if (no_light())
! chance = chance / 5.0;
for (i = (y - 1); i <= (y + 1); i++)
for (j = (x - 1); j <= (x + 1); j++)
--- 1645,1651 ----
p_ptr = &py.flags;
if (p_ptr->confused+p_ptr->blind > 0)
! chance = chance / 10;
else if (no_light())
! chance = chance / 5;
for (i = (y - 1); i <= (y + 1); i++)
for (j = (x - 1); j <= (x + 1); j++)
***************
*** 1724,1728 ****
}
}
! if ((find_flag) && (py.flags.blind < 1))
{
switch(dir)
--- 1724,1728 ----
}
}
! if (py.flags.blind < 1)
{
switch(dir)
***************
*** 1784,1799 ****
/* Objects player can see*/
/* Including doors */
! if (find_flag)
! if (player_light)
! {
! if (c_ptr->tptr != 0)
! if ((t_list[c_ptr->tptr].tval != 101) &&
! (t_list[c_ptr->tptr].tval != 109))
! {
! find_flag = FALSE; /* no need to call move_light */
! return;
! }
! }
! else if ((c_ptr->tl) || (c_ptr->pl) || (c_ptr->fm))
if (c_ptr->tptr != 0)
if ((t_list[c_ptr->tptr].tval != 101) &&
--- 1784,1789 ----
/* Objects player can see*/
/* Including doors */
! if (player_light)
! {
if (c_ptr->tptr != 0)
if ((t_list[c_ptr->tptr].tval != 101) &&
***************
*** 1803,1818 ****
return;
}
! /* Creatures */
! if (find_flag)
! if ((c_ptr->tl) || (c_ptr->pl) || (player_light))
! if (c_ptr->cptr > 1)
{
! m_ptr = &m_list[c_ptr->cptr];
! if (m_ptr->ml)
! {
! find_flag = FALSE; /* no need to call move_light */
! return;
! }
}
}
}
--- 1793,1816 ----
return;
}
! }
! else if ((c_ptr->tl) || (c_ptr->pl) || (c_ptr->fm))
! if (c_ptr->tptr != 0)
! if ((t_list[c_ptr->tptr].tval != 101) &&
! (t_list[c_ptr->tptr].tval != 109))
{
! find_flag = FALSE; /* no need to call move_light */
! return;
}
+ /* Creatures */
+ if ((c_ptr->tl) || (c_ptr->pl) || (player_light))
+ if (c_ptr->cptr > 1)
+ {
+ m_ptr = &m_list[c_ptr->cptr];
+ if (m_ptr->ml)
+ {
+ find_flag = FALSE; /* no need to call move_light */
+ return;
+ }
+ }
}
}
*** oldmoria/moria2.c Sun Oct 30 01:16:49 1988
--- newmoria/moria2.c Sun Oct 30 01:07:42 1988
***************
*** 352,355 ****
--- 352,361 ----
if (!find_range(90, 91, &i, &k))
msg_print("You are not carrying any books.");
+ else if (py.flags.blind > 0)
+ msg_print("You can't see to read your spell book!");
+ else if (no_light())
+ msg_print("You have no light to read by.");
+ else if (py.flags.confused > 0)
+ msg_print("You are too confused...");
else if (get_item(&item_val, "Which Book?", &redraw, i, k))
{
***************
*** 739,743 ****
c_ptr = &c_list[m_ptr->mptr];
p_ptr = &py.misc;
! acc_tmp = c_ptr->mexp*((c_ptr->level+0.1)/p_ptr->lev);
i = (int)(acc_tmp);
acc_exp += (acc_tmp - i);
--- 745,749 ----
c_ptr = &c_list[m_ptr->mptr];
p_ptr = &py.misc;
! acc_tmp = c_ptr->mexp * ((float) c_ptr->level / (float) p_ptr->lev);
i = (int)(acc_tmp);
acc_exp += (acc_tmp - i);
***************
*** 1126,1130 ****
if (tmp_str != 0)
tmp_str[0] = '\0';
! (void) strcat(t_ptr->name, " (Empty)");
known2(t_ptr->name);
t_ptr->cost = 0;
--- 1132,1136 ----
if (tmp_str != 0)
tmp_str[0] = '\0';
! (void) strcat(t_ptr->name, "(Empty)");
known2(t_ptr->name);
t_ptr->cost = 0;
***************
*** 1150,1154 ****
else
msg_print("I do not see anything you can open there.");
! }
}
--- 1156,1160 ----
else
msg_print("I do not see anything you can open there.");
! }
}
***************
*** 1380,1388 ****
tot = t1 + t2 + t3 + t4;
if (py.flags.blind > 0)
! tot = tot / 5.0;
else if (no_light())
! tot = tot / 2.0;
if (py.flags.confused > 0)
! tot = tot / 3.0;
i = t_list[c_ptr->tptr].tval;
t5 = t_list[c_ptr->tptr].level;
--- 1386,1394 ----
tot = t1 + t2 + t3 + t4;
if (py.flags.blind > 0)
! tot = tot / 5;
else if (no_light())
! tot = tot / 2;
if (py.flags.confused > 0)
! tot = tot / 3;
i = t_list[c_ptr->tptr].tval;
t5 = t_list[c_ptr->tptr].level;
***************
*** 1424,1430 ****
tmp_str[0] = '\0';
if (0x00000001 & i_ptr->flags)
! (void) strcat(i_ptr->name, " (Locked)");
else
! (void) strcat(i_ptr->name, " (Disarmed)");
msg_print("You have disarmed the chest.");
known2(i_ptr->name);
--- 1430,1436 ----
tmp_str[0] = '\0';
if (0x00000001 & i_ptr->flags)
! (void) strcat(i_ptr->name, "(Locked)");
else
! (void) strcat(i_ptr->name, "(Disarmed)");
msg_print("You have disarmed the chest.");
known2(i_ptr->name);
***************
*** 1888,1895 ****
i_ptr->tval = 1;
p_ptr = &py;
! p_ptr->misc.bth = ((p_ptr->stats.cstr+
! p_ptr->misc.wt)/6.0);
p_ptr->misc.ptohit = 0;
! p_ptr->misc.ptodam = (p_ptr->misc.wt/75.0) + 1;
if (py_attack(y, x))
{
--- 1894,1900 ----
i_ptr->tval = 1;
p_ptr = &py;
! p_ptr->misc.bth = ((p_ptr->stats.cstr + p_ptr->misc.wt) / 6);
p_ptr->misc.ptohit = 0;
! p_ptr->misc.ptodam = (p_ptr->misc.wt / 75) + 1;
if (py_attack(y, x))
{
*** oldmoria/potions.c Sun Oct 30 01:17:27 1988
--- newmoria/potions.c Sun Oct 30 01:07:42 1988
***************
*** 253,257 ****
msg_print("You feel your memories fade...");
/* avoid randint(0) call */
! l = (py.misc.exp/5.0);
if (l == 0)
lose_exp(1);
--- 253,257 ----
msg_print("You feel your memories fade...");
/* avoid randint(0) call */
! l = (py.misc.exp / 5);
if (l == 0)
lose_exp(1);
***************
*** 360,364 ****
{
m_ptr = &py.misc;
! m_ptr->exp += (int)(i_ptr->level/m_ptr->lev + 0.5);
prt_experience();
}
--- 360,364 ----
{
m_ptr = &py.misc;
! m_ptr->exp += (((float) i_ptr->level / (float) m_ptr->lev) + 0.5);
prt_experience();
}
*** oldmoria/save.c Sun Oct 30 01:17:39 1988
--- newmoria/save.c Sun Oct 30 01:07:43 1988
***************
*** 311,315 ****
else if (flag)
{
! (void) sprintf(temp,"Character saved. [Moria Version %lf]",CUR_VERSION);
prt(temp, 0, 0);
if (exit)
--- 311,315 ----
else if (flag)
{
! (void) sprintf(temp,"Character saved. [Moria Version %.2lf]\n",CUR_VERSION);
prt(temp, 0, 0);
if (exit)
***************
*** 471,475 ****
controlz();
! if (buf.st_atime >= buf2.st_atime + 5)
{
(void) sprintf(temp, "File %s has been touched, sorry.", fnam);
--- 471,475 ----
controlz();
! if (buf.st_mtime >= buf2.st_mtime + 5)
{
(void) sprintf(temp, "File %s has been touched, sorry.", fnam);
***************
*** 495,499 ****
else
{
! age = (long)buf2.st_atime - (long)buf.st_atime; /* age in seconds */
age = (age / 86400) + 1; /* age in days */
for (i = 0; i < age; i++)
--- 495,499 ----
else
{
! age = (long)buf2.st_atime - (long)buf.st_mtime; /* age in seconds */
age = (age / 86400) + 1; /* age in days */
for (i = 0; i < age; i++)
***************
*** 508,511 ****
--- 508,517 ----
}
+ /* prevent ^c quit from entering score into scoreboard,
+ and prevent signal from creating panic save until this point,
+ old save file has just been deleted */
+ character_generated = 1;
+
+ #ifndef SCORE_PANIC_SAVES
if (panic_save == 1)
{
***************
*** 515,518 ****
--- 521,525 ----
msg_print (" ");
}
+ #endif
/* reidentify objects */
***************
*** 531,535 ****
death = 1;
}
-
- return(FALSE);
}
--- 538,540 ----
*** oldmoria/scrolls.c Sun Oct 30 01:18:02 1988
--- newmoria/scrolls.c Sun Oct 30 01:07:44 1988
***************
*** 480,491 ****
if (!first)
{
- desc_remain(item_val);
- inven_destroy(item_val);
if (i_ptr->flags != 0)
{
m_ptr = &py.misc;
! m_ptr->exp += (i_ptr->level/m_ptr->lev);
prt_experience();
}
}
}
--- 480,492 ----
if (!first)
{
if (i_ptr->flags != 0)
{
m_ptr = &py.misc;
! m_ptr->exp += (((float) i_ptr->level / (float) m_ptr->lev)
! + 0.5);
prt_experience();
}
+ desc_remain(item_val);
+ inven_destroy(item_val);
}
}
*** oldmoria/signals.c Sun Oct 30 01:17:02 1988
--- newmoria/signals.c Sun Oct 30 01:07:44 1988
***************
*** 14,18 ****
extern int total_winner;
- extern int moria_flag;
extern int search_flag;
--- 14,17 ----
***************
*** 74,78 ****
error_sig = sig;
error_code = 0;
! if (!character_saved)
{
prt("OH NO!!!!!!!!!! Attempting panic save.", 23, 0);
--- 73,77 ----
error_sig = sig;
error_code = 0;
! if (!character_saved && character_generated)
{
prt("OH NO!!!!!!!!!! Attempting panic save.", 23, 0);
***************
*** 110,114 ****
error_sig = sig;
error_code = code;
! if (!character_saved)
{
prt("OH NO!!!!!!!!!! Attempting panic save.", 23, 0);
--- 109,113 ----
error_sig = sig;
error_code = code;
! if (!character_saved && character_generated)
{
prt("OH NO!!!!!!!!!! Attempting panic save.", 23, 0);
***************
*** 147,151 ****
error_sig = sig;
error_code = 0;
! if (!character_saved)
save_char(FALSE, TRUE);
exit_game();
--- 146,150 ----
error_sig = sig;
error_code = 0;
! if (!character_saved && character_generated)
save_char(FALSE, TRUE);
exit_game();
***************
*** 163,167 ****
error_sig = sig;
error_code = code;
! if (!character_saved)
save_char(FALSE, TRUE);
exit_game();
--- 162,166 ----
error_sig = sig;
error_code = code;
! if (!character_saved && character_generated)
save_char(FALSE, TRUE);
exit_game();
***************
*** 186,189 ****
--- 185,190 ----
return;
}
+ /* flush input just in case */
+ flush ();
if (get_com("Do you really want to quit?", &command))
switch(command)
***************
*** 204,209 ****
{
put_buffer(" -more-", MSG_LINE, 0);
- put_qio();
}
}
#else
--- 205,210 ----
{
put_buffer(" -more-", MSG_LINE, 0);
}
+ put_qio();
}
#else
***************
*** 223,226 ****
--- 224,229 ----
return;
}
+ /* flush input just in case */
+ flush();
if (get_com("Do you really want to quit?", &command))
switch(command)
***************
*** 241,246 ****
{
put_buffer(" -more-", MSG_LINE, 0);
- put_qio();
}
}
#endif
--- 244,249 ----
{
put_buffer(" -more-", MSG_LINE, 0);
}
+ put_qio();
}
#endif
*** oldmoria/spells.c Sun Oct 30 01:18:23 1988
--- newmoria/spells.c Sun Oct 30 01:07:45 1988
***************
*** 499,502 ****
--- 499,503 ----
register int destroy;
register cave_type *c_ptr;
+ char *tmp_str;
destroy = FALSE;
***************
*** 516,521 ****
}
else if (t_list[c_ptr->tptr].tval == 2)
! /* destroy traps on chest and unlock */
! t_list[c_ptr->tptr].flags &= 0xFF000000;
}
}
--- 517,530 ----
}
else if (t_list[c_ptr->tptr].tval == 2)
! {
! /* destroy traps on chest and unlock */
! t_list[c_ptr->tptr].flags &= 0xFF000000;
! tmp_str = index(t_list[c_ptr->tptr].name, '(');
! if (tmp_str != 0)
! tmp_str[0] = '\0';
! (void) strcat (t_list[c_ptr->tptr].name, "(Disarmed)");
! msg_print ("You have disarmed the chest.");
! known2 (t_list[c_ptr->tptr].name);
! }
}
}
***************
*** 672,676 ****
if (i >= 0)
t_ptr->name[i] = '\0';
! (void) strcat(t_ptr->name, " (Unlocked)");
known2(t_ptr->name);
}
--- 681,685 ----
if (i >= 0)
t_ptr->name[i] = '\0';
! (void) strcat(t_ptr->name, "(Unlocked)");
known2(t_ptr->name);
}
***************
*** 737,741 ****
int fire_bolt(typ, dir, y, x, dam, bolt_typ)
int typ, dir, y, x, dam;
! ctype bolt_typ;
{
int i, oldy, oldx, dist;
--- 746,750 ----
int fire_bolt(typ, dir, y, x, dam, bolt_typ)
int typ, dir, y, x, dam;
! char *bolt_typ;
{
int i, oldy, oldx, dist;
***************
*** 784,788 ****
dam = dam*2;
else if (weapon_type & r_ptr->spells)
! dam = (dam/4.0);
i = mon_take_hit((int)c_ptr->cptr, dam);
monster_name(m_name, m_ptr, r_ptr);
--- 793,797 ----
dam = dam*2;
else if (weapon_type & r_ptr->spells)
! dam = (dam / 4);
i = mon_take_hit((int)c_ptr->cptr, dam);
monster_name(m_name, m_ptr, r_ptr);
***************
*** 830,834 ****
int fire_ball(typ, dir, y, x, dam_hp, descrip)
int typ, dir, y, x, dam_hp;
! ctype descrip;
{
register int i, j;
--- 839,843 ----
int fire_ball(typ, dir, y, x, dam_hp, descrip)
int typ, dir, y, x, dam_hp;
! char *descrip;
{
register int i, j;
***************
*** 1009,1013 ****
dam = dam*2;
else if (weapon_type & r_ptr->spells)
! dam = (dam/4.0);
dam = (dam/(distance(i, j, y, x)+1));
m_ptr->hp = m_ptr->hp - dam;
--- 1018,1022 ----
dam = dam*2;
else if (weapon_type & r_ptr->spells)
! dam = (dam / 4);
dam = (dam/(distance(i, j, y, x)+1));
m_ptr->hp = m_ptr->hp - dam;
***************
*** 1528,1533 ****
}
}
- else
- flag = TRUE;
}
}
--- 1537,1540 ----
***************
*** 2167,2171 ****
c_list[m_ptr->mptr].cmove);
p_ptr = &py.misc;
! p_ptr->exp += ((r_ptr->mexp*(r_ptr->level/p_ptr->lev)) + 0.5);
delete_monster(i);
}
--- 2174,2179 ----
c_list[m_ptr->mptr].cmove);
p_ptr = &py.misc;
! p_ptr->exp += ((r_ptr->mexp * ((float) r_ptr->level / (float) p_ptr->lev))
! + 0.5);
delete_monster(i);
}
***************
*** 2444,2448 ****
if (f_ptr->poisoned > 0)
{
! f_ptr->poisoned = f_ptr->poisoned / 2.0;
if (f_ptr->poisoned < 1) f_ptr->poisoned = 1;
slow = TRUE;
--- 2452,2456 ----
if (f_ptr->poisoned > 0)
{
! f_ptr->poisoned = f_ptr->poisoned / 2;
if (f_ptr->poisoned < 1) f_ptr->poisoned = 1;
slow = TRUE;
*** oldmoria/staffs.c Sun Oct 30 01:18:17 1988
--- newmoria/staffs.c Sun Oct 30 01:07:46 1988
***************
*** 29,33 ****
chance = m_ptr->save + m_ptr->lev + int_adj() - i_ptr->level - 5;
if (py.flags.confused > 0)
! chance = chance / 2.0;
if (chance <= 0) chance = 1;
if (randint(chance) < USE_DEVICE)
--- 29,33 ----
chance = m_ptr->save + m_ptr->lev + int_adj() - i_ptr->level - 5;
if (py.flags.confused > 0)
! chance = chance / 2;
if (chance <= 0) chance = 1;
if (randint(chance) < USE_DEVICE)
***************
*** 144,148 ****
{
m_ptr = &py.misc;
! m_ptr->exp += ((i_ptr->level/m_ptr->lev) + 0.5);
prt_experience();
}
--- 144,148 ----
{
m_ptr = &py.misc;
! m_ptr->exp += (((float)i_ptr->level / (float)m_ptr->lev) + 0.5);
prt_experience();
}
*** oldmoria/store1.c Sun Oct 30 01:17:11 1988
--- newmoria/store1.c Sun Oct 30 01:07:46 1988
***************
*** 122,126 ****
else if (index(i_ptr->name, '^') == 0)
{
! value = i_ptr->cost + (i_ptr->cost/20.0)*i_ptr->p1;
}
}
--- 122,126 ----
else if (index(i_ptr->name, '^') == 0)
{
! value = i_ptr->cost + (i_ptr->cost / 20) * i_ptr->p1;
}
}
*** oldmoria/store2.c Sun Oct 30 01:17:56 1988
--- newmoria/store2.c Sun Oct 30 01:07:47 1988
***************
*** 960,964 ****
/* make sure player sees the message */
msg_print(" ");
! if ((store_buy[store_num])(inventory[INVEN_MAX].tval))
if (store_check_num(store_num))
switch(sell_haggle(store_num, &price, inventory[INVEN_MAX]))
--- 960,964 ----
/* make sure player sees the message */
msg_print(" ");
! if ((*store_buy[store_num])(inventory[INVEN_MAX].tval))
if (store_check_num(store_num))
switch(sell_haggle(store_num, &price, inventory[INVEN_MAX]))
*** oldmoria/treasure1.c Sun Oct 30 01:16:43 1988
--- newmoria/treasure1.c Sun Oct 30 01:07:56 1988
***************
*** 637,641 ****
{"& Light Brown Potion~| of Apple Juice" , 75, '!',0x00000000,
250, 1, 282, 4, 1, 0, 0, 0, 0, "1d1" , 0},
! {"& Clear Potion~| of Water" , 75, '!',0x00000000,
200, 0, 283, 4, 1, 0, 0, 0, 0, "1d1" , 0},
{"& %C Potion~| of Gain Dexterity" , 75, '!',0x02000000,
--- 637,641 ----
{"& Light Brown Potion~| of Apple Juice" , 75, '!',0x00000000,
250, 1, 282, 4, 1, 0, 0, 0, 0, "1d1" , 0},
! {"& Crystal Clear Potion~| of Water" , 75, '!',0x00000000,
200, 0, 283, 4, 1, 0, 0, 0, 0, "1d1" , 0},
{"& %C Potion~| of Gain Dexterity" , 75, '!',0x02000000,
***************
*** 775,793 ****
{"& %W Staff| of Darkness^ (%P1 charges)" , 55, '_',0x01000000,
0, 0, 25, 50, 1, 0, 0, 0, 0, "1d2" , 5},
! {"& Book of Magic Spells [Beginners-Magik]" , 90, '?',0x0000007F,
0, 25, 257, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Book of Magic Spells [Magik I]" , 90, '?',0x0000FF80,
0, 100, 258, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Book of Magic Spells [Magik II]" , 90, '?',0x00FF0000,
0, 400, 259, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Book of Magic Spells [The Mage's Guide to Power]", 90, '?',0x7F000000,
0, 800, 261, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Holy Book of Prayers [Beginners Handbook]" , 91, '?',0x000000FF,
0, 25, 258, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Holy Book of Prayers [Words of Wisdom]" , 91, '?',0x0000FF00,
0, 100, 259, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Holy Book of Prayers [Chants and Blessings]" , 91, '?',0x01FF0000,
0, 300, 260, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Holy Book of Prayers [Exorcism and Dispelling]", 91, '?',0x7E000000,
0, 900, 261, 30, 1,-100, 0, 0, 0, "1d1" , 40},
{"& Small wooden chest" , 2, '&',0x0F000000,
--- 775,793 ----
{"& %W Staff| of Darkness^ (%P1 charges)" , 55, '_',0x01000000,
0, 0, 25, 50, 1, 0, 0, 0, 0, "1d2" , 5},
! {"& Book~ of Magic Spells [Beginners-Magik]" , 90, '?',0x0000007F,
0, 25, 257, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Book~ of Magic Spells [Magik I]" , 90, '?',0x0000FF80,
0, 100, 258, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Book~ of Magic Spells [Magik II]" , 90, '?',0x00FF0000,
0, 400, 259, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Book~ of Magic Spells [The Mage's Guide to Power]", 90, '?',0x7F000000,
0, 800, 261, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Holy Book~ of Prayers [Beginners Handbook]" , 91, '?',0x000000FF,
0, 25, 258, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Holy Book~ of Prayers [Words of Wisdom]" , 91, '?',0x0000FF00,
0, 100, 259, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Holy Book~ of Prayers [Chants and Blessings]" , 91, '?',0x01FF0000,
0, 300, 260, 30, 1,-100, 0, 0, 0, "1d1" , 40},
! {"& Holy Book~ of Prayers [Exorcism and Dispelling]", 91, '?',0x7E000000,
0, 900, 261, 30, 1,-100, 0, 0, 0, "1d1" , 40},
{"& Small wooden chest" , 2, '&',0x0F000000,
*** oldmoria/treasure2.c Sun Oct 30 01:17:50 1988
--- newmoria/treasure2.c Sun Oct 30 01:07:58 1988
***************
*** 98,104 ****
{"& Strip~ of Beef Jerky" , 80, ',',0x00000000,
1750, 2, 310, 2, 5, 0, 0, 0, 0, "0d0" , 0}, /* 3*/
! {"& Pint of Fine Ale" , 80, ',',0x00000000,
500, 1, 311, 10, 3, 0, 0, 0, 0, "0d0" , 0}, /* 4*/
! {"& Pint of Fine Wine" , 80, ',',0x00000000,
400, 2, 312, 10, 1, 0, 0, 0, 0, "0d0" , 0}, /* 5*/
{"& Dagger (Misericorde) (%P2,%P3)" , 23, '|',0x00000000,
--- 98,104 ----
{"& Strip~ of Beef Jerky" , 80, ',',0x00000000,
1750, 2, 310, 2, 5, 0, 0, 0, 0, "0d0" , 0}, /* 3*/
! {"& Pint~ of Fine Ale" , 80, ',',0x00000000,
500, 1, 311, 10, 3, 0, 0, 0, 0, "0d0" , 0}, /* 4*/
! {"& Pint~ of Fine Wine" , 80, ',',0x00000000,
400, 2, 312, 10, 1, 0, 0, 0, 0, "0d0" , 0}, /* 5*/
{"& Dagger (Misericorde) (%P2,%P3)" , 23, '|',0x00000000,
***************
*** 224,242 ****
{"& Scroll~ of Recharging" , 70, '?',0x01000000,
0, 200, 311, 5, 1, 0, 0, 0, 0, "0d0" , 0}, /* 66*/
! {"& Book of Magic Spells [Beginners-Magik]" , 90, '?',0x0000007F,
0, 25, 257, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 67*/
! {"& Book of Magic Spells [Magik I]" , 90, '?',0x0000FF80,
0, 100, 258, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 68*/
! {"& Book of Magic Spells [Magik II]" , 90, '?',0x00FF0000,
0, 400, 259, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 69*/
! {"& Book of Magic Spells [The Mage's Guide to Power]", 90, '?',0x7F000000,
0, 800, 261, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 70*/
! {"& Holy Book of Prayers [Beginners Handbook]" , 91, '?',0x000000FF,
0, 25, 258, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 71*/
! {"& Holy Book of Prayers [Words of Wisdom]" , 91, '?',0x0000FF00,
0, 100, 259, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 72*/
! {"& Holy Book of Prayers [Chants and Blessings]" , 91, '?',0x01FF0000,
0, 300, 260, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 73*/
! {"& Holy Book of Prayers [Exorcism and Dispelling]", 91, '?',0x7E000000,
0, 900, 261, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 74*/
{"& Potion~ of Restore Strength" , 75, '!',0x00000004,
--- 224,242 ----
{"& Scroll~ of Recharging" , 70, '?',0x01000000,
0, 200, 311, 5, 1, 0, 0, 0, 0, "0d0" , 0}, /* 66*/
! {"& Book~ of Magic Spells [Beginners-Magik]" , 90, '?',0x0000007F,
0, 25, 257, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 67*/
! {"& Book~ of Magic Spells [Magik I]" , 90, '?',0x0000FF80,
0, 100, 258, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 68*/
! {"& Book~ of Magic Spells [Magik II]" , 90, '?',0x00FF0000,
0, 400, 259, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 69*/
! {"& Book~ of Magic Spells [The Mage's Guide to Power]", 90, '?',0x7F000000,
0, 800, 261, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 70*/
! {"& Holy Book~ of Prayers [Beginners Handbook]" , 91, '?',0x000000FF,
0, 25, 258, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 71*/
! {"& Holy Book~ of Prayers [Words of Wisdom]" , 91, '?',0x0000FF00,
0, 100, 259, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 72*/
! {"& Holy Book~ of Prayers [Chants and Blessings]" , 91, '?',0x01FF0000,
0, 300, 260, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 73*/
! {"& Holy Book~ of Prayers [Exorcism and Dispelling]", 91, '?',0x7E000000,
0, 900, 261, 30, 1,-100, 0, 0, 0, "1d1" , 0}, /* 74*/
{"& Potion~ of Restore Strength" , 75, '!',0x00000004,
***************
*** 426,428 ****
{"a down staircase" , 108, '>',0x00000000,
0, 0, 1, 0, 1, 0, 0, 0, 0, "1d1" , 0};
-
--- 426,427 ----
*** oldmoria/types.h Sun Oct 30 01:17:08 1988
--- newmoria/types.h Sun Oct 30 01:07:48 1988
***************
*** 191,195 ****
} spl_rec;
! typedef spl_rec spl_type[22];
typedef struct race_type
--- 191,195 ----
} spl_rec;
! typedef spl_rec spl_type[32];
typedef struct race_type
*** oldmoria/variables.c Sun Oct 30 01:17:14 1988
--- newmoria/variables.c Sun Oct 30 01:07:51 1988
***************
*** 16,20 ****
int missile_ctr = 0; /* Counter for missiles */
int msg_flag; /* Set with first msg */
- int generate; /* Generate next level */
int death = FALSE; /* True if died */
vtype died_from; /* What killed him */
--- 16,19 ----
*** oldmoria/wands.c Sun Oct 30 01:16:56 1988
--- newmoria/wands.c Sun Oct 30 01:07:49 1988
***************
*** 46,50 ****
chance = m_ptr->save + m_ptr->lev + int_adj() - i_ptr->level;
if (py.flags.confused > 0)
! chance = chance / 2.0;
if (chance <= 0) chance = 1;
if (randint(chance) < USE_DEVICE)
--- 46,50 ----
chance = m_ptr->save + m_ptr->lev + int_adj() - i_ptr->level;
if (py.flags.confused > 0)
! chance = chance / 2;
if (chance <= 0) chance = 1;
if (randint(chance) < USE_DEVICE)
***************
*** 158,162 ****
{
m_ptr = &py.misc;
! m_ptr->exp += ((i_ptr->level/m_ptr->lev) + 0.5);
prt_experience();
}
--- 158,162 ----
{
m_ptr = &py.misc;
! m_ptr->exp += (((float)i_ptr->level / (float)m_ptr->lev) + 0.5);
prt_experience();
}
*** oldmoria/wizard.c Sun Oct 30 01:18:09 1988
--- newmoria/wizard.c Sun Oct 30 01:07:50 1988
***************
*** 23,27 ****
clear_screen(0, 0);
! (void) sprintf(tmp_str, " Moria Version %f", CUR_VERSION);
put_buffer(tmp_str, 0, 0);
put_buffer("Version 0.1 : 03/25/83", 1, 0);
--- 23,27 ----
clear_screen(0, 0);
! (void) sprintf(tmp_str, " Moria Version %.2lf", CUR_VERSION);
put_buffer(tmp_str, 0, 0);
put_buffer("Version 0.1 : 03/25/83", 1, 0);
***************
*** 54,57 ****
--- 54,60 ----
put_buffer("Please call it 'umoria' or 'UNIX MORIA' or something", 9, 0);
put_buffer("similar to avoid confusion.", 10, 0);
+ (void) sprintf(tmp_str, "Moria Version %.2lf, patch level %d", CUR_VERSION,
+ PATCH_LEVEL);
+ put_buffer(tmp_str, 12, 0);
pause_line(23);
draw_cave();