home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-03-04 | 57.7 KB | 1,572 lines |
- Subject: v17i045: nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch1d/31
- Newsgroups: comp.sources.games
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
- Posting-number: Volume 17, Issue 45
- Archive-name: nethack31/Patch1d
- Patch-To: nethack31: Volume 16, Issue 1-116
- Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 4 (of 31)."
- # Contents: patches01f
- # Wrapped by billr@saab on Fri Mar 5 10:50:42 1993
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'patches01f' -a "${1}" != "-c" ; then
- echo shar: Renaming existing file \"'patches01f'\" to \"'patches01f.orig'\"
- mv -f 'patches01f' 'patches01f.orig'
- fi
- echo shar: Extracting \"'patches01f'\" \(55751 characters\)
- sed "s/^X//" >'patches01f' <<'END_OF_FILE'
- X*** /tmp/da08381 Thu Feb 25 10:24:07 1993
- X--- src/monst.c Sun Feb 21 16:16:12 1993
- X***************
- X*** 48,54 ****
- X */
- X
- X #ifndef SPLITMON_2
- X! struct permonst NEARDATA playermon = { /* used by weapons bonus code */
- X "player", S_HUMAN, 1, 10, 10, 0, 0, G_GENO | G_NOGEN,
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X--- 48,54 ----
- X */
- X
- X #ifndef SPLITMON_2
- X! NEARDATA struct permonst playermon = { /* used by weapons bonus code */
- X "player", S_HUMAN, 1, 10, 10, 0, 0, G_GENO | G_NOGEN,
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X***************
- X*** 55,61 ****
- X WT_HUMAN, 400, PL_NSIZ, MS_HUMANOID, MZ_HUMAN, 0, 0,
- X M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
- X M2_HUMAN | M2_STRONG | M2_COLLECT, 0, C(HI_DOMESTIC)
- X! }, NEARDATA *uasmon = &playermon;
- X #endif /* SPLITMON_2 */
- X
- X /*
- X--- 55,61 ----
- X WT_HUMAN, 400, PL_NSIZ, MS_HUMANOID, MZ_HUMAN, 0, 0,
- X M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
- X M2_HUMAN | M2_STRONG | M2_COLLECT, 0, C(HI_DOMESTIC)
- X! }, *uasmon = &playermon;
- X #endif /* SPLITMON_2 */
- X
- X /*
- X***************
- X*** 97,103 ****
- X */
- X
- X #ifndef SPLITMON_2
- X! struct permonst NEARDATA mons[] = {
- X /* ants */
- X { "giant ant", S_ANT, 2, 18, 3, 0, 0, (G_GENO | G_SGROUP | 3),
- X { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
- X--- 97,103 ----
- X */
- X
- X #ifndef SPLITMON_2
- X! NEARDATA struct permonst mons[] = {
- X /* ants */
- X { "giant ant", S_ANT, 2, 18, 3, 0, 0, (G_GENO | G_SGROUP | 3),
- X { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
- X***************
- X*** 1437,1443 ****
- X WT_HUMAN, 400, 0, MS_VAMPIRE, MZ_HUMAN, MR_SLEEP | MR_POISON, 0,
- X M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
- X M2_NOPOLY | M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG |
- X! M2_NASTY | M2_PRINCE | M2_MALE, M3_WANTSBOOK, C(HI_LORD) },
- X /* Wraiths */
- X { "barrow wight", S_WRAITH, 3, 12, 5, 5, -3, (G_GENO | G_NOCORPSE | 1),
- X { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X--- 1437,1444 ----
- X WT_HUMAN, 400, 0, MS_VAMPIRE, MZ_HUMAN, MR_SLEEP | MR_POISON, 0,
- X M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
- X M2_NOPOLY | M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG |
- X! M2_NASTY | M2_PRINCE | M2_MALE, M3_WAITFORU | M3_WANTSBOOK,
- X! C(HI_LORD) },
- X /* Wraiths */
- X { "barrow wight", S_WRAITH, 3, 12, 5, 5, -3, (G_GENO | G_NOCORPSE | 1),
- X { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X***************
- X*** 1794,1800 ****
- X MR_POISON | MR_STONE, MR_POISON | MR_STONE, M1_SWIM |
- X M1_AMPHIBIOUS | M1_HUMANOID | M1_SLITHY | M1_POIS | M1_OMNIVORE,
- X M2_NOPOLY | M2_HOSTILE | M2_STRONG | M2_PNAME | M2_FEMALE,
- X! 0, C(BRIGHT_GREEN) },
- X { "Wizard of Yendor", S_HUMAN, 30, 12, -8, 100, A_NONE, G_NOGEN,
- X { { AT_CLAW, AD_SAMU, 2, 12 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X--- 1795,1801 ----
- X MR_POISON | MR_STONE, MR_POISON | MR_STONE, M1_SWIM |
- X M1_AMPHIBIOUS | M1_HUMANOID | M1_SLITHY | M1_POIS | M1_OMNIVORE,
- X M2_NOPOLY | M2_HOSTILE | M2_STRONG | M2_PNAME | M2_FEMALE,
- X! M3_WAITFORU, C(BRIGHT_GREEN) },
- X { "Wizard of Yendor", S_HUMAN, 30, 12, -8, 100, A_NONE, G_NOGEN,
- X { { AT_CLAW, AD_SAMU, 2, 12 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X***************
- X*** 1811,1817 ****
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_GUARD, MZ_HUMAN,
- X MR_STONE, MR_STONE, M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
- X! M2_NOPOLY | M2_HUMAN | M2_STALK | M2_PEACEFUL | M2_STRONG | M2_NASTY |
- X M2_PNAME | M2_PRINCE | M2_MALE | M2_GREEDY | M2_JEWELS | M2_COLLECT |
- X M2_MAGIC, 0, C(HI_LORD) },
- X #endif
- X--- 1812,1818 ----
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_GUARD, MZ_HUMAN,
- X MR_STONE, MR_STONE, M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
- X! M2_NOPOLY | M2_HUMAN | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY |
- X M2_PNAME | M2_PRINCE | M2_MALE | M2_GREEDY | M2_JEWELS | M2_COLLECT |
- X M2_MAGIC, 0, C(HI_LORD) },
- X #endif
- X***************
- X*** 1973,1979 ****
- X M1_ACID | M1_POIS,
- X M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY |
- X M2_LORD | M2_MALE,
- X! M3_WANTSAMUL, C(BRIGHT_GREEN) },
- X { "Yeenoghu", S_DEMON, 56, 18, -5, 80, -15,
- X (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 3, 6 }, { AT_WEAP, AD_CONF, 2, 8 },
- X--- 1974,1980 ----
- X M1_ACID | M1_POIS,
- X M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY |
- X M2_LORD | M2_MALE,
- X! M3_WAITFORU | M3_WANTSAMUL, C(BRIGHT_GREEN) },
- X { "Yeenoghu", S_DEMON, 56, 18, -5, 80, -15,
- X (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 3, 6 }, { AT_WEAP, AD_CONF, 2, 8 },
- X***************
- X*** 1992,1998 ****
- X MR_FIRE | MR_POISON, 0,
- X M1_FLY | M1_SEE_INVIS | M1_POIS, M2_NOPOLY | M2_DEMON | M2_STALK |
- X M2_HOSTILE | M2_PNAME | M2_NASTY | M2_PRINCE | M2_MALE | M2_COLLECT,
- X! M3_WANTSBOOK | M3_WANTSAMUL, C(HI_LORD) },
- X { "Geryon", S_DEMON, 72, 3, -3, 75, 15,
- X (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
- X { { AT_CLAW, AD_PHYS, 3, 6 }, { AT_CLAW, AD_PHYS, 3, 6 },
- X--- 1993,1999 ----
- X MR_FIRE | MR_POISON, 0,
- X M1_FLY | M1_SEE_INVIS | M1_POIS, M2_NOPOLY | M2_DEMON | M2_STALK |
- X M2_HOSTILE | M2_PNAME | M2_NASTY | M2_PRINCE | M2_MALE | M2_COLLECT,
- X! M3_WAITFORU | M3_WANTSBOOK | M3_WANTSAMUL, C(HI_LORD) },
- X { "Geryon", S_DEMON, 72, 3, -3, 75, 15,
- X (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
- X { { AT_CLAW, AD_PHYS, 3, 6 }, { AT_CLAW, AD_PHYS, 3, 6 },
- X***************
- X*** 2303,2310 ****
- X M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_NASTY |
- X M2_COLLECT | M2_MAGIC, M3_CLOSE, C(WHITE) },
- X { "Master of Thieves", S_HUMAN, 20, 15, 0, 30, -20, (G_NOGEN | G_UNIQ),
- X! { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 }, NO_ATTK,
- X! NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_MALE |
- X--- 2304,2311 ----
- X M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_NASTY |
- X M2_COLLECT | M2_MAGIC, M3_CLOSE, C(WHITE) },
- X { "Master of Thieves", S_HUMAN, 20, 15, 0, 30, -20, (G_NOGEN | G_UNIQ),
- X! { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 },
- X! { AT_CLAW, AD_SAMU, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_MALE |
- X***************
- X*** 2346,2352 ****
- X { "Minion of Huhetol", S_DEMON, 16, 10, -2, 75, -14,
- X (G_NOCORPSE | G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 8, 4 }, { AT_WEAP, AD_PHYS, 4, 6 },
- X! { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_LARGE, MR_FIRE | MR_POISON, 0,
- X M1_FLY | M1_SEE_INVIS | M1_POIS,
- X M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY |
- X--- 2347,2354 ----
- X { "Minion of Huhetol", S_DEMON, 16, 10, -2, 75, -14,
- X (G_NOCORPSE | G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 8, 4 }, { AT_WEAP, AD_PHYS, 4, 6 },
- X! { AT_MAGC, AD_SPEL, 0, 0 }, { AT_CLAW, AD_SAMU, 2, 6 },
- X! NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_LARGE, MR_FIRE | MR_POISON, 0,
- X M1_FLY | M1_SEE_INVIS | M1_POIS,
- X M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY |
- X***************
- X*** 2353,2359 ****
- X M2_COLLECT, M3_WANTSARTI | M3_WAITFORU, C(RED) },
- X { "Thoth Amon", S_HUMAN, 16, 10, 0, 10, -14, (G_NOGEN | G_UNIQ),
- X { { AT_MAGC, AD_SPEL, 0, 0 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X! { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN, MR_POISON, MR_POISON,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_STALK | M2_HOSTILE | M2_NASTY |
- X--- 2355,2362 ----
- X M2_COLLECT, M3_WANTSARTI | M3_WAITFORU, C(RED) },
- X { "Thoth Amon", S_HUMAN, 16, 10, 0, 10, -14, (G_NOGEN | G_UNIQ),
- X { { AT_MAGC, AD_SPEL, 0, 0 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X! { AT_WEAP, AD_PHYS, 1, 6 }, { AT_CLAW, AD_SAMU, 1, 4 },
- X! NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN, MR_POISON, MR_POISON,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_STALK | M2_HOSTILE | M2_NASTY |
- X***************
- X*** 2360,2366 ****
- X M2_COLLECT | M2_MAGIC, M3_WANTSARTI | M3_WAITFORU, C(HI_LORD) },
- X { "Chromatic Dragon", S_DRAGON, 16, 10, 0, 30, -14, (G_NOGEN | G_UNIQ),
- X { { AT_BREA, AD_RBRE, 6, 8 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X! { AT_BITE, AD_PHYS, 4, 8 }, { AT_BITE, AD_PHYS, 4, 8 },
- X { AT_BITE, AD_PHYS, 4, 8 }, { AT_STNG, AD_PHYS, 1, 6 } },
- X WT_DRAGON, 1700, 0, MS_NEMESIS, MZ_GIGANTIC,
- X MR_FIRE | MR_COLD | MR_ELEC | MR_DISINT | MR_POISON,
- X--- 2363,2369 ----
- X M2_COLLECT | M2_MAGIC, M3_WANTSARTI | M3_WAITFORU, C(HI_LORD) },
- X { "Chromatic Dragon", S_DRAGON, 16, 10, 0, 30, -14, (G_NOGEN | G_UNIQ),
- X { { AT_BREA, AD_RBRE, 6, 8 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X! { AT_CLAW, AD_SAMU, 2, 8 }, { AT_BITE, AD_PHYS, 4, 8 },
- X { AT_BITE, AD_PHYS, 4, 8 }, { AT_STNG, AD_PHYS, 1, 6 } },
- X WT_DRAGON, 1700, 0, MS_NEMESIS, MZ_GIGANTIC,
- X MR_FIRE | MR_COLD | MR_ELEC | MR_DISINT | MR_POISON,
- X***************
- X*** 2371,2377 ****
- X M3_WANTSARTI | M3_WAITFORU, C(HI_LORD) },
- X { "Goblin King", S_ORC, 15, 10, MARM(10,4), 0, -15, (G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 },
- X! NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 750, 350, 0, MS_NEMESIS, MZ_HUMAN, 0, 0, M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_ORC | M2_HOSTILE | M2_STRONG | M2_STALK | M2_NASTY |
- X M2_MALE | M2_GREEDY | M2_JEWELS | M2_COLLECT | M2_MAGIC,
- X--- 2374,2380 ----
- X M3_WANTSARTI | M3_WAITFORU, C(HI_LORD) },
- X { "Goblin King", S_ORC, 15, 10, MARM(10,4), 0, -15, (G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 },
- X! { AT_CLAW, AD_SAMU, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X 750, 350, 0, MS_NEMESIS, MZ_HUMAN, 0, 0, M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_ORC | M2_HOSTILE | M2_STRONG | M2_STALK | M2_NASTY |
- X M2_MALE | M2_GREEDY | M2_JEWELS | M2_COLLECT | M2_MAGIC,
- X***************
- X*** 2378,2384 ****
- X M3_WANTSARTI | M3_WAITFORU, C(HI_LORD) },
- X { "Cyclops", S_GIANT, 18, 10, 0, 0, -15, (G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 4, 8 }, { AT_WEAP, AD_PHYS, 4, 8 },
- X! NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1900, 700, 0, MS_NEMESIS, MZ_HUGE, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_STALK |
- X--- 2381,2387 ----
- X M3_WANTSARTI | M3_WAITFORU, C(HI_LORD) },
- X { "Cyclops", S_GIANT, 18, 10, 0, 0, -15, (G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 4, 8 }, { AT_WEAP, AD_PHYS, 4, 8 },
- X! { AT_CLAW, AD_SAMU, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1900, 700, 0, MS_NEMESIS, MZ_HUGE, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_STALK |
- X***************
- X*** 2387,2393 ****
- X { "Ixoth", S_DRAGON, 15, 9, -1, 20, -14, (G_NOGEN | G_UNIQ),
- X { { AT_BREA, AD_FIRE, 8, 6 }, { AT_BITE, AD_PHYS, 4, 8 },
- X { AT_MAGC, AD_SPEL, 0, 0 }, { AT_CLAW, AD_PHYS, 2, 4 },
- X! { AT_CLAW, AD_PHYS, 2, 4 }, NO_ATTK },
- X WT_DRAGON, 1600, 0, MS_NEMESIS, MZ_GIGANTIC, MR_FIRE, MR_FIRE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_SEE_INVIS,
- X M2_NOPOLY | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY | M2_STALK |
- X--- 2390,2396 ----
- X { "Ixoth", S_DRAGON, 15, 9, -1, 20, -14, (G_NOGEN | G_UNIQ),
- X { { AT_BREA, AD_FIRE, 8, 6 }, { AT_BITE, AD_PHYS, 4, 8 },
- X { AT_MAGC, AD_SPEL, 0, 0 }, { AT_CLAW, AD_PHYS, 2, 4 },
- X! { AT_CLAW, AD_SAMU, 2, 4 }, NO_ATTK },
- X WT_DRAGON, 1600, 0, MS_NEMESIS, MZ_GIGANTIC, MR_FIRE, MR_FIRE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_SEE_INVIS,
- X M2_NOPOLY | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY | M2_STALK |
- X***************
- X*** 2396,2409 ****
- X { "Nalzok", S_DEMON, 16, 10, -2, 85, -127,
- X (G_NOGEN | G_UNIQ | G_NOCORPSE),
- X { { AT_WEAP, AD_PHYS, 8, 4 }, { AT_WEAP, AD_PHYS, 4, 6 },
- X! { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_LARGE, MR_FIRE | MR_POISON, 0,
- X M1_FLY | M1_SEE_INVIS | M1_POIS,
- X M2_NOPOLY | M2_DEMON | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_STALK |
- X M2_NASTY | M2_COLLECT, M3_WANTSARTI | M3_WAITFORU, C(RED) },
- X { "Master Assassin", S_HUMAN, 15, 15, 0, 30, 18, (G_NOGEN | G_UNIQ),
- X! { { AT_WEAP, AD_DRST, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 8 }, NO_ATTK,
- X! NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_HOSTILE | M2_STALK | M2_NASTY |
- X--- 2399,2413 ----
- X { "Nalzok", S_DEMON, 16, 10, -2, 85, -127,
- X (G_NOGEN | G_UNIQ | G_NOCORPSE),
- X { { AT_WEAP, AD_PHYS, 8, 4 }, { AT_WEAP, AD_PHYS, 4, 6 },
- X! { AT_MAGC, AD_SPEL, 0, 0 }, { AT_CLAW, AD_SAMU, 2, 6 },
- X! NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_LARGE, MR_FIRE | MR_POISON, 0,
- X M1_FLY | M1_SEE_INVIS | M1_POIS,
- X M2_NOPOLY | M2_DEMON | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_STALK |
- X M2_NASTY | M2_COLLECT, M3_WANTSARTI | M3_WAITFORU, C(RED) },
- X { "Master Assassin", S_HUMAN, 15, 15, 0, 30, 18, (G_NOGEN | G_UNIQ),
- X! { { AT_WEAP, AD_DRST, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 8 },
- X! { AT_CLAW, AD_SAMU, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_HOSTILE | M2_STALK | M2_NASTY |
- X***************
- X*** 2412,2419 ****
- X /* A renegade daimyo who led a 13 year civil war against the shogun */
- X /* of his time. */
- X { "Ashikaga Takauji", S_HUMAN, 15, 15, 0, 40, -13, (G_NOGEN | G_UNIQ),
- X! { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 }, NO_ATTK,
- X! NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_PNAME | M2_HOSTILE | M2_STALK |
- X--- 2416,2423 ----
- X /* A renegade daimyo who led a 13 year civil war against the shogun */
- X /* of his time. */
- X { "Ashikaga Takauji", S_HUMAN, 15, 15, 0, 40, -13, (G_NOGEN | G_UNIQ),
- X! { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 },
- X! { AT_CLAW, AD_SAMU, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_PNAME | M2_HOSTILE | M2_STALK |
- X***************
- X*** 2423,2430 ****
- X /* NOTE: the Master of Thieves was defined above. */
- X
- X { "Lord Surtur", S_GIANT, 15, 12, 2, 50, 12, (G_NOGEN | G_UNIQ),
- X! { { AT_WEAP, AD_PHYS, 2, 10 }, { AT_WEAP, AD_PHYS, 2, 10 }, NO_ATTK,
- X! NO_ATTK, NO_ATTK, NO_ATTK },
- X 2250, 850, 0, MS_NEMESIS, MZ_HUGE, MR_FIRE, MR_FIRE,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_STALK |
- X--- 2427,2434 ----
- X /* NOTE: the Master of Thieves was defined above. */
- X
- X { "Lord Surtur", S_GIANT, 15, 12, 2, 50, 12, (G_NOGEN | G_UNIQ),
- X! { { AT_WEAP, AD_PHYS, 2, 10 }, { AT_WEAP, AD_PHYS, 2, 10 },
- X! { AT_CLAW, AD_SAMU, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X 2250, 850, 0, MS_NEMESIS, MZ_HUGE, MR_FIRE, MR_FIRE,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_STALK |
- X***************
- X*** 2432,2438 ****
- X M3_WANTSARTI | M3_WAITFORU, C(HI_LORD) },
- X { "Dark One", S_HUMAN, 15, 10, 0, 80, -10, (G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X! { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_HOSTILE | M2_STALK | M2_NASTY |
- X--- 2436,2443 ----
- X M3_WANTSARTI | M3_WAITFORU, C(HI_LORD) },
- X { "Dark One", S_HUMAN, 15, 10, 0, 80, -10, (G_NOGEN | G_UNIQ),
- X { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_MAGC, AD_SPEL, 0, 0 },
- X! { AT_WEAP, AD_PHYS, 1, 6 }, { AT_CLAW, AD_SAMU, 1, 4 },
- X! NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_HOSTILE | M2_STALK | M2_NASTY |
- X***************
- X*** 2467,2473 ****
- X WT_ELF, 350, 0, MS_GUARDIAN, MZ_HUMAN, MR_SLEEP, MR_SLEEP,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_ELF | M2_PEACEFUL | M2_COLLECT, 0, C(HI_DOMESTIC) },
- X! { "intern", S_HUMAN, 5, 10, 10, 10, 3, G_NOGEN,
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN, MR_POISON, MR_POISON,
- X--- 2472,2478 ----
- X WT_ELF, 350, 0, MS_GUARDIAN, MZ_HUMAN, MR_SLEEP, MR_SLEEP,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_ELF | M2_PEACEFUL | M2_COLLECT, 0, C(HI_DOMESTIC) },
- X! { "attendant", S_HUMAN, 5, 10, 10, 10, 3, G_NOGEN,
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN, MR_POISON, MR_POISON,
- X***************
- X*** 2506,2512 ****
- X { "ronin", S_HUMAN, 5, 10, 10, 10, 3, G_NOGEN,
- X { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK,
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X! WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_HOSTILE | M2_STRONG | M2_COLLECT,
- X 0, C(HI_DOMESTIC) },
- X--- 2511,2517 ----
- X { "ronin", S_HUMAN, 5, 10, 10, 10, 3, G_NOGEN,
- X { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK,
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X! WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN, 0, 0,
- X M1_HUMANOID | M1_OMNIVORE,
- X M2_NOPOLY | M2_HUMAN | M2_HOSTILE | M2_STRONG | M2_COLLECT,
- X 0, C(HI_DOMESTIC) },
- X*** /tmp/da08397 Thu Feb 25 10:24:14 1993
- X--- src/mthrowu.c Wed Feb 17 09:17:26 1993
- X***************
- X*** 1,4 ****
- X! /* SCCS Id: @(#)mthrowu.c 3.1 92/11/14 */
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X--- 1,4 ----
- X! /* SCCS Id: @(#)mthrowu.c 3.1 93/02/14 */
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X***************
- X*** 22,28 ****
- X /*
- X * Keep consistent with breath weapons in zap.c, and AD_* in monattk.h.
- X */
- X! STATIC_OVL const char NEARDATA *breathwep[] = {
- X "fragments",
- X "fire",
- X "frost",
- X--- 22,28 ----
- X /*
- X * Keep consistent with breath weapons in zap.c, and AD_* in monattk.h.
- X */
- X! STATIC_OVL NEARDATA const char *breathwep[] = {
- X "fragments",
- X "fire",
- X "frost",
- X***************
- X*** 95,108 ****
- X obj->otyp == ROCK))
- X create = !rn2(3);
- X else create = 1;
- X if (create && !((mtmp = m_at(x, y)) && (mtmp->mtrapped) &&
- X (t = t_at(x, y)) && ((t->ttyp == PIT) ||
- X! (t->ttyp == SPIKED_PIT))) &&
- X! !flooreffects(obj,x,y,"fall")) { /* don't double-dip on damage */
- X place_object(obj, x, y);
- X obj->nobj = fobj;
- X fobj = obj;
- X stackobj(fobj);
- X } else obfree(obj, (struct obj*) 0);
- X }
- X
- X--- 95,110 ----
- X obj->otyp == ROCK))
- X create = !rn2(3);
- X else create = 1;
- X+
- X if (create && !((mtmp = m_at(x, y)) && (mtmp->mtrapped) &&
- X (t = t_at(x, y)) && ((t->ttyp == PIT) ||
- X! (t->ttyp == SPIKED_PIT)))) {
- X! if (!flooreffects(obj,x,y,"fall")) { /* don't double-dip on damage */
- X place_object(obj, x, y);
- X obj->nobj = fobj;
- X fobj = obj;
- X stackobj(fobj);
- X+ }
- X } else obfree(obj, (struct obj*) 0);
- X }
- X
- X***************
- X*** 160,167 ****
- X && objects[singleobj->otyp].w_propellor)
- X pline("%s misfires!", Monnam(mon));
- X else
- X! pline("The %s slips as %s throws it!",
- X! xname(singleobj), mon_nam(mon));
- X }
- X dx = rn2(3)-1;
- X dy = rn2(3)-1;
- X--- 162,169 ----
- X && objects[singleobj->otyp].w_propellor)
- X pline("%s misfires!", Monnam(mon));
- X else
- X! pline("%s slips as %s throws it!",
- X! The(xname(singleobj)), mon_nam(mon));
- X }
- X dx = rn2(3)-1;
- X dy = rn2(3)-1;
- X***************
- X*** 396,401 ****
- X--- 398,406 ----
- X }
- X prev = otmp;
- X }
- X+ #ifdef MUSE
- X+ possibly_unwield(mon);
- X+ #endif
- X }
- X
- X #endif /* OVLB */
- X*** /tmp/da08405 Thu Feb 25 10:24:16 1993
- X--- src/muse.c Thu Feb 25 09:02:43 1993
- X***************
- X*** 1,4 ****
- X! /* SCCS Id: @(#)muse.c 3.1 93/01/03 */
- X /* Monster item usage routine. Copyright (C) 1990 by Ken Arromdee */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X--- 1,4 ----
- X! /* SCCS Id: @(#)muse.c 3.1 93/02/12 */
- X /* Monster item usage routine. Copyright (C) 1990 by Ken Arromdee */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X***************
- X*** 62,68 ****
- X struct monst *mtmp;
- X
- X potion_descr = OBJ_DESCR(objects[obj->otyp]);
- X! if (!strcmp(potion_descr, "milky") && !rn2(13)) {
- X if (!enexto(&cc, mon->mx, mon->my, &mons[PM_GHOST])) return 0;
- X mquaffmsg(mon, obj);
- X m_useup(mon, obj);
- X--- 62,68 ----
- X struct monst *mtmp;
- X
- X potion_descr = OBJ_DESCR(objects[obj->otyp]);
- X! if (potion_descr && !strcmp(potion_descr, "milky") && !rn2(13)) {
- X if (!enexto(&cc, mon->mx, mon->my, &mons[PM_GHOST])) return 0;
- X mquaffmsg(mon, obj);
- X m_useup(mon, obj);
- X***************
- X*** 82,88 ****
- X }
- X return 2;
- X }
- X! if (!strcmp(potion_descr, "smoky") && !rn2(13)) {
- X if (!enexto(&cc, mon->mx, mon->my, &mons[PM_DJINNI])) return 0;
- X mquaffmsg(mon, obj);
- X m_useup(mon, obj);
- X--- 82,88 ----
- X }
- X return 2;
- X }
- X! if (potion_descr && !strcmp(potion_descr, "smoky") && !rn2(13)) {
- X if (!enexto(&cc, mon->mx, mon->my, &mons[PM_DJINNI])) return 0;
- X mquaffmsg(mon, obj);
- X m_useup(mon, obj);
- X***************
- X*** 138,144 ****
- X struct obj *otmp;
- X boolean self;
- X {
- X! if (!cansee(mtmp->mx, mtmp->my)) {
- X #ifdef SOUNDS
- X if (flags.soundok)
- X #endif
- X--- 138,144 ----
- X struct obj *otmp;
- X boolean self;
- X {
- X! if (!canseemon(mtmp)) {
- X #ifdef SOUNDS
- X if (flags.soundok)
- X #endif
- X***************
- X*** 145,153 ****
- X You("hear a distant zap.");
- X } else if (self)
- X pline("%s zaps %sself with %s!",
- X! Monnam(mtmp),
- X! gender(mtmp)==2 ? "it" : gender(mtmp) ? "her" : "him",
- X! doname(otmp));
- X else {
- X pline("%s zaps %s!", Monnam(mtmp), an(xname(otmp)));
- X stop_occupation();
- X--- 145,151 ----
- X You("hear a distant zap.");
- X } else if (self)
- X pline("%s zaps %sself with %s!",
- X! Monnam(mtmp), him[pronoun_gender(mtmp)], doname(otmp));
- X else {
- X pline("%s zaps %s!", Monnam(mtmp), an(xname(otmp)));
- X stop_occupation();
- X***************
- X*** 159,170 ****
- X struct monst *mtmp;
- X struct obj *otmp;
- X {
- X! boolean vis = (cansee(mtmp->mx, mtmp->my));
- X #ifdef SOUNDS
- X if (flags.soundok)
- X #endif
- X otmp->dknown = 1;
- X! if (!vis) {
- X #ifdef SOUNDS
- X if (flags.soundok)
- X #endif
- X--- 157,168 ----
- X struct monst *mtmp;
- X struct obj *otmp;
- X {
- X! boolean vismon = (canseemon(mtmp));
- X #ifdef SOUNDS
- X if (flags.soundok)
- X #endif
- X otmp->dknown = 1;
- X! if (!vismon) {
- X #ifdef SOUNDS
- X if (flags.soundok)
- X #endif
- X***************
- X*** 174,185 ****
- X } else pline("%s reads %s!", Monnam(mtmp), singular(otmp,doname));
- X if (mtmp->mconf
- X #ifdef SOUNDS
- X! && (vis || flags.soundok)
- X #endif
- X )
- X pline("Being confused, %s mispronounces the magic words...",
- X! vis ? mon_nam(mtmp) : gender(mtmp)==2 ? "it" :
- X! gender(mtmp) ? "he" : "she");
- X }
- X
- X static void
- X--- 172,182 ----
- X } else pline("%s reads %s!", Monnam(mtmp), singular(otmp,doname));
- X if (mtmp->mconf
- X #ifdef SOUNDS
- X! && (vismon || flags.soundok)
- X #endif
- X )
- X pline("Being confused, %s mispronounces the magic words...",
- X! vismon ? mon_nam(mtmp) : he[pronoun_gender(mtmp)]);
- X }
- X
- X static void
- X***************
- X*** 187,193 ****
- X struct monst *mtmp;
- X struct obj *otmp;
- X {
- X! if (cansee(mtmp->mx, mtmp->my)) {
- X otmp->dknown = 1;
- X pline("%s drinks %s!", Monnam(mtmp), singular(otmp, doname));
- X } else
- X--- 184,190 ----
- X struct monst *mtmp;
- X struct obj *otmp;
- X {
- X! if (canseemon(mtmp)) {
- X otmp->dknown = 1;
- X pline("%s drinks %s!", Monnam(mtmp), singular(otmp, doname));
- X } else
- X***************
- X*** 239,244 ****
- X--- 236,242 ----
- X int x=mtmp->mx, y=mtmp->my;
- X boolean stuck = (mtmp == u.ustuck);
- X boolean immobile = (mtmp->data->mmove == 0);
- X+ int fraction;
- X
- X if (mtmp->mpeaceful || is_animal(mtmp->data) || mindless(mtmp->data))
- X return 0;
- X***************
- X*** 245,252 ****
- X if (u.uswallow && stuck) return 0;
- X if(dist2(x, y, mtmp->mux, mtmp->muy) > 25)
- X return 0;
- X if(mtmp->mhp >= mtmp->mhpmax ||
- X! (mtmp->mhp >= 10 && mtmp->mhp*5 >= mtmp->mhpmax))
- X return 0;
- X
- X m.defensive = (struct obj *)0;
- X--- 243,252 ----
- X if (u.uswallow && stuck) return 0;
- X if(dist2(x, y, mtmp->mux, mtmp->muy) > 25)
- X return 0;
- X+
- X+ fraction = u.ulevel < 10 ? 5 : u.ulevel < 14 ? 4 : 3;
- X if(mtmp->mhp >= mtmp->mhpmax ||
- X! (mtmp->mhp >= 10 && mtmp->mhp*fraction >= mtmp->mhpmax))
- X return 0;
- X
- X m.defensive = (struct obj *)0;
- X***************
- X*** 264,271 ****
- X m.has_defense = MUSE_UP_LADDER;
- X if (x == xdnladder && y == ydnladder)
- X m.has_defense = MUSE_DN_LADDER;
- X! } else if (sstairs.sx &&
- X! sstairs.sx == mtmp->mx && sstairs.sy == mtmp->my) {
- X m.has_defense = MUSE_SSTAIRS;
- X } else if (!stuck && !immobile) {
- X /* Note: trapdoors take precedence over teleport traps. */
- X--- 264,270 ----
- X m.has_defense = MUSE_UP_LADDER;
- X if (x == xdnladder && y == ydnladder)
- X m.has_defense = MUSE_DN_LADDER;
- X! } else if (sstairs.sx && sstairs.sx == x && sstairs.sy == y) {
- X m.has_defense = MUSE_SSTAIRS;
- X } else if (!stuck && !immobile) {
- X /* Note: trapdoors take precedence over teleport traps. */
- X***************
- X*** 316,346 ****
- X }
- X }
- X #endif
- X! if (m.has_defense == MUSE_UPSTAIRS ||
- X! m.has_defense == MUSE_DOWNSTAIRS ||
- X! m.has_defense == MUSE_UP_LADDER ||
- X! m.has_defense == MUSE_DN_LADDER ||
- X! m.has_defense == MUSE_SSTAIRS ||
- X! #ifdef ARMY
- X! m.has_defense == MUSE_BUGLE ||
- X! #endif
- X! m.has_defense == MUSE_TRAPDOOR)
- X goto botm;
- X #define nomore(x) if(m.has_defense==x) continue;
- X for (obj = mtmp->minvent; obj; obj = obj->nobj) {
- X /* nomore(MUSE_WAN_DIGGING); */
- X if (m.has_defense == MUSE_WAN_DIGGING) break;
- X if (obj->otyp == WAN_DIGGING && obj->spe > 0 && !stuck
- X && !mtmp->isshk && !mtmp->isgd && !mtmp->ispriest
- X && !is_floater(mtmp->data)
- X! #ifdef MULDGN
- X! && !Is_knox(&u.uz)
- X! #endif
- X! && !In_endgame(&u.uz)) {
- X m.defensive = obj;
- X m.has_defense = MUSE_WAN_DIGGING;
- X }
- X- nomore(MUSE_TELEPORT_TRAP);
- X nomore(MUSE_WAN_TELEPORTATION_SELF);
- X nomore(MUSE_WAN_TELEPORTATION);
- X if(obj->otyp == WAN_TELEPORTATION && obj->spe > 0) {
- X--- 315,340 ----
- X }
- X }
- X #endif
- X! /* use immediate physical escape prior to attempting magic */
- X! if (m.has_defense) /* stairs, trapdoor or tele-trap, bugle alert */
- X goto botm;
- X+
- X #define nomore(x) if(m.has_defense==x) continue;
- X for (obj = mtmp->minvent; obj; obj = obj->nobj) {
- X+ /* don't always use the same selection pattern */
- X+ if (m.has_defense && !rn2(3)) break;
- X+
- X /* nomore(MUSE_WAN_DIGGING); */
- X if (m.has_defense == MUSE_WAN_DIGGING) break;
- X if (obj->otyp == WAN_DIGGING && obj->spe > 0 && !stuck
- X && !mtmp->isshk && !mtmp->isgd && !mtmp->ispriest
- X && !is_floater(mtmp->data)
- X! /* digging wouldn't be effective; assume they know that */
- X! && !(Is_botlevel(&u.uz) || In_endgame(&u.uz))
- X! && !(is_ice(x,y) || is_pool(x,y) || is_lava(x,y))) {
- X m.defensive = obj;
- X m.has_defense = MUSE_WAN_DIGGING;
- X }
- X nomore(MUSE_WAN_TELEPORTATION_SELF);
- X nomore(MUSE_WAN_TELEPORTATION);
- X if(obj->otyp == WAN_TELEPORTATION && obj->spe > 0) {
- X***************
- X*** 353,359 ****
- X if(obj->otyp == SCR_TELEPORTATION && mtmp->mcansee
- X && haseyes(mtmp->data)
- X && (!obj->cursed ||
- X! (!mtmp->isshk && !mtmp->isgd && !mtmp->ispriest))) {
- X m.defensive = obj;
- X m.has_defense = MUSE_SCR_TELEPORTATION;
- X }
- X--- 347,354 ----
- X if(obj->otyp == SCR_TELEPORTATION && mtmp->mcansee
- X && haseyes(mtmp->data)
- X && (!obj->cursed ||
- X! (!(mtmp->isshk && inhishop(mtmp))
- X! && !mtmp->isgd && !mtmp->ispriest))) {
- X m.defensive = obj;
- X m.has_defense = MUSE_SCR_TELEPORTATION;
- X }
- X***************
- X*** 394,400 ****
- X struct obj *otmp = m.defensive;
- X boolean vis = cansee(mtmp->mx, mtmp->my);
- X boolean vismon = canseemon(mtmp);
- X! boolean oseen = otmp && (otmp->oclass == SCROLL_CLASS || vis);
- X
- X if ((i = precheck(mtmp, otmp)) != 0) return i;
- X switch(m.has_defense) {
- X--- 389,395 ----
- X struct obj *otmp = m.defensive;
- X boolean vis = cansee(mtmp->mx, mtmp->my);
- X boolean vismon = canseemon(mtmp);
- X! boolean oseen = otmp && vismon;
- X
- X if ((i = precheck(mtmp, otmp)) != 0) return i;
- X switch(m.has_defense) {
- X***************
- X*** 403,413 ****
- X if (canseemon(mtmp))
- X pline("%s plays %s!", Monnam(mtmp), doname(otmp));
- X else if (flags.soundok)
- X! You("hear the sound of a bugle!");
- X awaken_soldiers();
- X return 2;
- X #endif
- X case MUSE_WAN_TELEPORTATION_SELF:
- X mzapmsg(mtmp, otmp, TRUE);
- X otmp->spe--;
- X if (oseen) makeknown(WAN_TELEPORTATION);
- X--- 398,410 ----
- X if (canseemon(mtmp))
- X pline("%s plays %s!", Monnam(mtmp), doname(otmp));
- X else if (flags.soundok)
- X! You("hear a bugle playing reveille!");
- X awaken_soldiers();
- X return 2;
- X #endif
- X case MUSE_WAN_TELEPORTATION_SELF:
- X+ if ((mtmp->isshk && inhishop(mtmp))
- X+ || mtmp->isgd || mtmp->ispriest) return 2;
- X mzapmsg(mtmp, otmp, TRUE);
- X otmp->spe--;
- X if (oseen) makeknown(WAN_TELEPORTATION);
- X***************
- X*** 440,445 ****
- X--- 437,443 ----
- X {
- X int obj_is_cursed = otmp->cursed;
- X
- X+ if (mtmp->isshk || mtmp->isgd || mtmp->ispriest) return 2;
- X mreadmsg(mtmp, otmp);
- X m_useup(mtmp, otmp); /* otmp might be free'ed */
- X if (oseen) makeknown(SCR_TELEPORTATION);
- X***************
- X*** 452,461 ****
- X }
- X if (Is_botlevel(&u.uz)) goto mon_tele;
- X else {
- X! int nlev;
- X d_level flev;
- X
- X! if (rn2(5)) nlev = rnd((int)depth(&u.uz) + 3);
- X else {
- X pline("%s shudders for a moment.",
- X Monnam(mtmp));
- X--- 450,459 ----
- X }
- X if (Is_botlevel(&u.uz)) goto mon_tele;
- X else {
- X! int nlev = max(depth(&u.uz), 0);
- X d_level flev;
- X
- X! if (rn2(5)) nlev = rnd(nlev + 3);
- X else {
- X pline("%s shudders for a moment.",
- X Monnam(mtmp));
- X***************
- X*** 703,708 ****
- X--- 701,712 ----
- X return 0;
- X if (u.uswallow) return 0;
- X if (in_your_sanctuary(mtmp->mx, mtmp->my)) return 0;
- X+ if (dmgtype(mtmp->data, AD_HEAL) && !uwep
- X+ #ifdef TOURIST
- X+ && !uarmu
- X+ #endif
- X+ && !uarm && !uarmh && !uarms && !uarmg && !uarmc && !uarmf)
- X+ return 0;
- X
- X if (!ranged_stuff) return 0;
- X #define nomore(x) if(m.has_offense==x) continue;
- X***************
- X*** 862,867 ****
- X--- 866,877 ----
- X bhitpos.x += ddx;
- X bhitpos.y += ddy;
- X x = bhitpos.x; y = bhitpos.y;
- X+
- X+ if (!isok(x,y)) {
- X+ bhitpos.x -= ddx;
- X+ bhitpos.y -= ddy;
- X+ break;
- X+ }
- X if (find_drawbridge(&x,&y))
- X switch (obj->otyp) {
- X case WAN_STRIKING:
- X***************
- X*** 916,923 ****
- X {
- X int i;
- X struct obj *otmp = m.offensive;
- X! boolean vis = cansee(mtmp->mx, mtmp->my);
- X! boolean oseen = otmp && (otmp->oclass == SCROLL_CLASS || vis);
- X
- X if ((i = precheck(mtmp, otmp)) != 0) return i;
- X switch(m.has_offense) {
- X--- 926,932 ----
- X {
- X int i;
- X struct obj *otmp = m.offensive;
- X! boolean oseen = otmp && canseemon(mtmp);
- X
- X if ((i = precheck(mtmp, otmp)) != 0) return i;
- X switch(m.has_offense) {
- X***************
- X*** 948,953 ****
- X--- 957,965 ----
- X return 2;
- X #if 0
- X case MUSE_SCR_FIRE:
- X+ {
- X+ boolean vis = cansee(mtmp->mx, mtmp->my);
- X+
- X mreadmsg(mtmp, otmp);
- X if (mtmp->mconf) {
- X if (vis)
- X***************
- X*** 983,988 ****
- X--- 995,1001 ----
- X }
- X }
- X return 2;
- X+ }
- X #endif
- X case MUSE_POT_PARALYSIS:
- X case MUSE_POT_BLINDNESS:
- X***************
- X*** 1149,1155 ****
- X struct obj *otmp = m.misc;
- X boolean vis = cansee(mtmp->mx, mtmp->my);
- X boolean vismon = canseemon(mtmp);
- X! boolean oseen = otmp && (otmp->oclass == SCROLL_CLASS || vis);
- X
- X if ((i = precheck(mtmp, otmp)) != 0) return i;
- X switch(m.has_misc) {
- X--- 1162,1168 ----
- X struct obj *otmp = m.misc;
- X boolean vis = cansee(mtmp->mx, mtmp->my);
- X boolean vismon = canseemon(mtmp);
- X! boolean oseen = otmp && vismon;
- X
- X if ((i = precheck(mtmp, otmp)) != 0) return i;
- X switch(m.has_misc) {
- X***************
- X*** 1204,1212 ****
- X case MUSE_POT_INVISIBILITY:
- X mquaffmsg(mtmp, otmp);
- X if (vis) pline("Gee, all of a sudden %s can't see %sself.",
- X! mon_nam(mtmp),
- X! humanoid(mtmp->data) ? (mtmp->female ? "her" : "him")
- X! : "it");
- X if (oseen) makeknown(POT_INVISIBILITY);
- X mtmp->minvis = 1;
- X newsym(mtmp->mx,mtmp->my);
- X--- 1217,1223 ----
- X case MUSE_POT_INVISIBILITY:
- X mquaffmsg(mtmp, otmp);
- X if (vis) pline("Gee, all of a sudden %s can't see %sself.",
- X! mon_nam(mtmp), him[pronoun_gender(mtmp)]);
- X if (oseen) makeknown(POT_INVISIBILITY);
- X mtmp->minvis = 1;
- X newsym(mtmp->mx,mtmp->my);
- X***************
- X*** 1302,1322 ****
- X * the monster and strong monsters won't use it at all...
- X */
- X if (difficulty < 6 && !rn2(30)) return WAN_POLYMORPH;
- X
- X! switch (rn2(7)) {
- X! case 0: case 1:
- X if (mtmp->isgd) return 0;
- X! return POT_SPEED;
- X! case 2:
- X if (mtmp->mpeaceful && !See_invisible) return 0;
- X! return WAN_MAKE_INVISIBLE;
- X! case 3:
- X! if (mtmp->mpeaceful && !See_invisible) return 0;
- X! return POT_INVISIBILITY;
- X! case 4:
- X! if (mtmp->isgd) return 0;
- X! return WAN_SPEED_MONSTER;
- X! case 5: case 6:
- X return POT_GAIN_LEVEL;
- X }
- X /*NOTREACHED*/
- X--- 1313,1329 ----
- X * the monster and strong monsters won't use it at all...
- X */
- X if (difficulty < 6 && !rn2(30)) return WAN_POLYMORPH;
- X+
- X+ if (!rn2(40)) return AMULET_OF_LIFE_SAVING;
- X
- X! switch (rn2(3)) {
- X! case 0:
- X if (mtmp->isgd) return 0;
- X! return rn2(4) ? POT_SPEED : WAN_SPEED_MONSTER;
- X! case 1:
- X if (mtmp->mpeaceful && !See_invisible) return 0;
- X! return rn2(4) ? POT_INVISIBILITY : WAN_MAKE_INVISIBLE;
- X! case 2:
- X return POT_GAIN_LEVEL;
- X }
- X /*NOTREACHED*/
- X***************
- X*** 1350,1355 ****
- X--- 1357,1366 ----
- X || typ == POT_BLINDNESS
- X || typ == POT_CONFUSION
- X || (typ == PICK_AXE && needspick(mon->data))
- X+ || typ == AMULET_OF_REFLECTION
- X+ || typ == AMULET_OF_LIFE_SAVING
- X+ || ((mon->misc_worn_check & W_ARMG) && typ == CORPSE
- X+ && obj->corpsenm == PM_COCKATRICE)
- X );
- X }
- X #endif
- X*** /tmp/da08413 Thu Feb 25 10:24:19 1993
- X--- src/music.c Tue Feb 23 11:00:28 1993
- X***************
- X*** 22,28 ****
- X * level.
- X * (leather) drum Will awaken monsters like the horn.
- X * drum of earthquake Will initiate an earthquake whose intensity depends
- X! * on player level. That is, it creates ramdom pits
- X * called here chasms.
- X */
- X
- X--- 22,28 ----
- X * level.
- X * (leather) drum Will awaken monsters like the horn.
- X * drum of earthquake Will initiate an earthquake whose intensity depends
- X! * on player level. That is, it creates random pits
- X * called here chasms.
- X */
- X
- X***************
- X*** 136,142 ****
- X if (canseemon(mtmp))
- X pline("%s is now ready for battle!", Monnam(mtmp));
- X else
- X! Norep("You hear the sound of battle gear being readied.");
- X }
- X mtmp = mtmp->nmon;
- X }
- X--- 136,142 ----
- X if (canseemon(mtmp))
- X pline("%s is now ready for battle!", Monnam(mtmp));
- X else
- X! Norep("You hear the rattle of battle gear being readied.");
- X }
- X mtmp = mtmp->nmon;
- X }
- X***************
- X*** 247,252 ****
- X--- 247,256 ----
- X pline("%s falls into a chasm!", Monnam(mtmp));
- X else if (flags.soundok && humanoid(mtmp->data))
- X You("hear a scream!");
- X+ #ifdef MUSE
- X+ mselftouch(mtmp, "Falling, ", TRUE);
- X+ if (mtmp->mhp > 0)
- X+ #endif
- X if ((mtmp->mhp -= rnd(6)) <= 0) {
- X if(!cansee(x,y))
- X pline("It is destroyed!");
- X***************
- X*** 301,306 ****
- X--- 305,313 ----
- X mac_speaker ( instr , "C" ) ;
- X #endif
- X
- X+ #ifdef AMIGA
- X+ amii_speaker ( instr , "Cw", AMII_OKAY_VOLUME ) ;
- X+ #endif
- X if (Confusion)
- X pline("What you produce is quite far from music...");
- X else
- X***************
- X*** 425,431 ****
- X
- X if ((fd = open("/dev/speaker", 1)) != -1)
- X {
- X! /* emit a prefix to modify instrumental `timbre' */
- X switch (instr->otyp)
- X {
- X case WOODEN_FLUTE:
- X--- 432,438 ----
- X
- X if ((fd = open("/dev/speaker", 1)) != -1)
- X {
- X! /* send a prefix to modify instrumental `timbre' */
- X switch (instr->otyp)
- X {
- X case WOODEN_FLUTE:
- X***************
- X*** 472,478 ****
- X--- 479,488 ----
- X }
- X if (c == 'n') {
- X getlin("What tune are you playing? [what 5 notes]", buf);
- X+ #ifndef AMIGA
- X+ /* The AMIGA supports two octaves of notes */
- X for (s=buf; *s; s++) *s = highc(*s);
- X+ #endif
- X You("extract a strange sound from %s!", the(xname(instr)));
- X #ifdef SYSV386MUSIC
- X /* if user is at the console, play through the console speaker */
- X***************
- X*** 481,486 ****
- X--- 491,509 ----
- X #endif /* SYSV386MUSIC */
- X #ifdef MAC
- X mac_speaker ( instr , buf ) ;
- X+ #endif
- X+ #ifdef AMIGA
- X+ {
- X+ char nbuf[ 20 ];
- X+ int i;
- X+ for( i = 0; buf[i] && i < 5; ++i )
- X+ {
- X+ nbuf[ i*2 ] = buf[ i ];
- X+ nbuf[ (i*2)+1 ] = 'h';
- X+ }
- X+ nbuf[ i*2 ] = 0;
- X+ amii_speaker ( instr , nbuf, AMII_OKAY_VOLUME ) ;
- X+ }
- X #endif
- X /* Check if there was the Stronghold drawbridge near
- X * and if the tune conforms to what we're waiting for.
- X*** /tmp/da08421 Thu Feb 25 10:24:21 1993
- X--- src/o_init.c Fri Feb 12 10:25:44 1993
- X***************
- X*** 20,26 ****
- X POTION_CLASS, SCROLL_CLASS, WAND_CLASS,
- X SPBOOK_CLASS, RING_CLASS, GEM_CLASS, 0 };
- X
- X! static short NEARDATA disco[TOTAL_OBJS] = DUMMY;
- X
- X int
- X letindex(acls) register char acls; {
- X--- 20,26 ----
- X POTION_CLASS, SCROLL_CLASS, WAND_CLASS,
- X SPBOOK_CLASS, RING_CLASS, GEM_CLASS, 0 };
- X
- X! static NEARDATA short disco[TOTAL_OBJS] = DUMMY;
- X
- X int
- X letindex(acls) register char acls; {
- X*** /tmp/da08429 Thu Feb 25 10:24:23 1993
- X--- src/objects.c Tue Feb 23 15:29:07 1993
- X***************
- X*** 27,37 ****
- X /* the ctnr field of BITS currently does not map into struct objclass,
- X * and is ignored in the expansion */
- X
- X! struct objdescr NEARDATA obj_descr[] = {
- X #else
- X /* second pass -- object definitions */
- X
- X! # define BITS(nmkn,mrg,uskn,ctnr,mgc,chrg,uniq,big,dir,mtrl) nmkn,mrg,uskn,mgc,chrg,uniq,big,dir,mtrl /* SCO ODT 1.1 cpp fodder */
- X /* SCO's version of MSC 5.x barfs on the line above without a trailing space */
- X
- X #ifdef TEXTCOLOR
- X--- 27,37 ----
- X /* the ctnr field of BITS currently does not map into struct objclass,
- X * and is ignored in the expansion */
- X
- X! NEARDATA struct objdescr obj_descr[] = {
- X #else
- X /* second pass -- object definitions */
- X
- X! # define BITS(nmkn,mrg,uskn,ctnr,mgc,chrg,uniq,nwsh,big,dir,mtrl) nmkn,mrg,uskn,mgc,chrg,uniq,nwsh,big,dir,mtrl /* SCO ODT 1.1 cpp fodder */
- X /* SCO's version of MSC 5.x barfs on the line above without a trailing space */
- X
- X #ifdef TEXTCOLOR
- X***************
- X*** 44,66 ****
- X prob, wt, cost, sdam, ldam, oc1, oc2, nut}
- X #endif
- X
- X! struct objclass NEARDATA objects[] = {
- X #endif
- X /* dummy object[0] -- description [2nd arg] *must* be NULL */
- X! OBJECT(OBJ("strange object",NULL), BITS(1,0,0,0,0,0,0,0,0,0), 0,
- X ILLOBJ_CLASS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
- X
- X /* weapons ... */
- X #define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,hitbon,metal,color) OBJECT( \
- X! OBJ(name,app), BITS(kn,mg,1,0,0,1,0,bi,0,metal), 0, \
- X WEAPON_CLASS, prob, 0, \
- X wt, cost, sdam, ldam, hitbon, 0, wt, color )
- X #define PROJECTILE(name,app,kn,prob,wt,cost,sdam,ldam,hitbon,metal,prop,color) OBJECT( \
- X! OBJ(name,app), BITS(kn,1,1,0,0,1,0,0,0,metal), 0, \
- X WEAPON_CLASS, prob, 0, \
- X wt, cost, sdam, ldam, hitbon, prop, wt, color )
- X #define BOW(name,app,kn,prob,wt,cost,sdam,ldam,hitbon,metal,prop,color) OBJECT( \
- X! OBJ(name,app), BITS(kn,0,1,0,0,1,0,0,0,metal), 0, \
- X WEAPON_CLASS, prob, 0, \
- X wt, cost, sdam, ldam, hitbon, -(prop), wt, color )
- X
- X--- 44,66 ----
- X prob, wt, cost, sdam, ldam, oc1, oc2, nut}
- X #endif
- X
- X! NEARDATA struct objclass objects[] = {
- X #endif
- X /* dummy object[0] -- description [2nd arg] *must* be NULL */
- X! OBJECT(OBJ("strange object",NULL), BITS(1,0,0,0,0,0,0,0,0,0,0), 0,
- X ILLOBJ_CLASS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
- X
- X /* weapons ... */
- X #define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,hitbon,metal,color) OBJECT( \
- X! OBJ(name,app), BITS(kn,mg,1,0,0,1,0,0,bi,0,metal), 0, \
- X WEAPON_CLASS, prob, 0, \
- X wt, cost, sdam, ldam, hitbon, 0, wt, color )
- X #define PROJECTILE(name,app,kn,prob,wt,cost,sdam,ldam,hitbon,metal,prop,color) OBJECT( \
- X! OBJ(name,app), BITS(kn,1,1,0,0,1,0,0,0,0,metal), 0, \
- X WEAPON_CLASS, prob, 0, \
- X wt, cost, sdam, ldam, hitbon, prop, wt, color )
- X #define BOW(name,app,kn,prob,wt,cost,sdam,ldam,hitbon,metal,prop,color) OBJECT( \
- X! OBJ(name,app), BITS(kn,0,1,0,0,1,0,0,0,0,metal), 0, \
- X WEAPON_CLASS, prob, 0, \
- X wt, cost, sdam, ldam, hitbon, -(prop), wt, color )
- X
- X***************
- X*** 202,208 ****
- X * Some creatures are vulnerable to SILVER.
- X */
- X #define ARMOR(name,desc,kn,mgc,blk,power,prob,delay,wt,cost,ac,can,metal,c) OBJECT( \
- X! OBJ(name,desc), BITS(kn,0,1,0,mgc,1,0,blk,0,metal), power, \
- X ARMOR_CLASS, prob, delay, wt, cost, \
- X 0, 0, 10 - ac, can, wt, c )
- X
- X--- 202,208 ----
- X * Some creatures are vulnerable to SILVER.
- X */
- X #define ARMOR(name,desc,kn,mgc,blk,power,prob,delay,wt,cost,ac,can,metal,c) OBJECT( \
- X! OBJ(name,desc), BITS(kn,0,1,0,mgc,1,0,0,blk,0,metal), power, \
- X ARMOR_CLASS, prob, delay, wt, cost, \
- X 0, 0, 10 - ac, can, wt, c )
- X
- X***************
- X*** 372,378 ****
- X
- X /* rings ... */
- X #define RING(name,stone,power,cost,mgc,spec,metal,color) OBJECT( \
- X! OBJ(name,stone), BITS(0,0,spec,0,mgc,spec,0,0,0,metal), \
- X power, RING_CLASS, 0, 0, 3, cost, 0, 0, 0, 0, 15, color )
- X RING("adornment", "wooden", ADORNED, 100, 0, 1, WOOD, HI_WOOD),
- X RING("gain strength", "granite", 0, 150, 1, 1, MINERAL, HI_MINERAL),
- X--- 372,378 ----
- X
- X /* rings ... */
- X #define RING(name,stone,power,cost,mgc,spec,metal,color) OBJECT( \
- X! OBJ(name,stone), BITS(0,0,spec,0,mgc,spec,0,0,0,0,metal), \
- X power, RING_CLASS, 0, 0, 3, cost, 0, 0, 0, 0, 15, color )
- X RING("adornment", "wooden", ADORNED, 100, 0, 1, WOOD, HI_WOOD),
- X RING("gain strength", "granite", 0, 150, 1, 1, MINERAL, HI_MINERAL),
- X***************
- X*** 407,413 ****
- X
- X /* amulets ... - THE Amulet comes last because it is special */
- X #define AMULET(name,desc,power,prob) OBJECT( \
- X! OBJ(name,desc), BITS(0,0,0,0,1,0,0,0,0,IRON), power, \
- X AMULET_CLASS, prob, 0, 20, 150, 0, 0, 0, 0, 20, HI_METAL )
- X
- X AMULET("amulet of ESP", "circular", TELEPAT, 180),
- X--- 407,413 ----
- X
- X /* amulets ... - THE Amulet comes last because it is special */
- X #define AMULET(name,desc,power,prob) OBJECT( \
- X! OBJ(name,desc), BITS(0,0,0,0,1,0,0,0,0,0,IRON), power, \
- X AMULET_CLASS, prob, 0, 20, 150, 0, 0, 0, 0, 20, HI_METAL )
- X
- X AMULET("amulet of ESP", "circular", TELEPAT, 180),
- X***************
- X*** 420,428 ****
- X AMULET("amulet of reflection", "hexagonal", REFLECTING, 80),
- X AMULET("amulet of magical breathing", "octagonal", MAGICAL_BREATHING, 70),
- X OBJECT(OBJ("cheap plastic imitation of the Amulet of Yendor",
- X! "Amulet of Yendor"), BITS(0,0,1,0,0,0,0,0,0,PLASTIC), 0,
- X AMULET_CLASS, 0, 0, 20, 0, 0, 0, 0, 0, 1, HI_METAL),
- X! OBJECT(OBJ("Amulet of Yendor",NULL), BITS(1,0,1,0,1,0,1,0,0,MITHRIL), 0,
- X AMULET_CLASS, 0, 0, 20, 3500, 0, 0, 0, 0, 20, HI_METAL),
- X #undef AMULET
- X
- X--- 420,428 ----
- X AMULET("amulet of reflection", "hexagonal", REFLECTING, 80),
- X AMULET("amulet of magical breathing", "octagonal", MAGICAL_BREATHING, 70),
- X OBJECT(OBJ("cheap plastic imitation of the Amulet of Yendor",
- X! "Amulet of Yendor"), BITS(0,0,1,0,0,0,0,0,0,0,PLASTIC), 0,
- X AMULET_CLASS, 0, 0, 20, 0, 0, 0, 0, 0, 1, HI_METAL),
- X! OBJECT(OBJ("Amulet of Yendor",NULL), BITS(1,0,1,0,1,0,1,1,0,0,MITHRIL), 0,
- X AMULET_CLASS, 0, 0, 20, 3500, 0, 0, 0, 0, 20, HI_METAL),
- X #undef AMULET
- X
- X***************
- X*** 429,443 ****
- X /* tools ... */
- X /* tools with weapon characteristics come last */
- X #define TOOL(name,desc,kn,mrg,mgc,chg,prob,wt,cost,material,color) OBJECT( \
- X! OBJ(name,desc), BITS(kn,mrg,chg,0,mgc,chg,0,0,0,material), 0, \
- X TOOL_CLASS, prob, 0, \
- X wt, cost, 0, 0, 0, 0, wt, color )
- X #define CONTAINER(name,desc,kn,mgc,chg,prob,wt,cost,material,color) OBJECT( \
- X! OBJ(name,desc), BITS(kn,0,chg,1,mgc,chg,0,0,0,material), 0, \
- X TOOL_CLASS, prob, 0, \
- X wt, cost, 0, 0, 0, 0, wt, color )
- X #define WEPTOOL(name,desc,kn,mgc,bi,prob,wt,cost,sdam,ldam,hitbon,material,color) OBJECT( \
- X! OBJ(name,desc), BITS(kn,0,1,0,mgc,1,0,bi,0,material), 0, \
- X TOOL_CLASS, prob, 0, \
- X wt, cost, sdam, ldam, hitbon, 0, wt, color )
- X /* containers */
- X--- 429,443 ----
- X /* tools ... */
- X /* tools with weapon characteristics come last */
- X #define TOOL(name,desc,kn,mrg,mgc,chg,prob,wt,cost,material,color) OBJECT( \
- X! OBJ(name,desc), BITS(kn,mrg,chg,0,mgc,chg,0,0,0,0,material), 0, \
- X TOOL_CLASS, prob, 0, \
- X wt, cost, 0, 0, 0, 0, wt, color )
- X #define CONTAINER(name,desc,kn,mgc,chg,prob,wt,cost,material,color) OBJECT( \
- X! OBJ(name,desc), BITS(kn,0,chg,1,mgc,chg,0,0,0,0,material), 0, \
- X TOOL_CLASS, prob, 0, \
- X wt, cost, 0, 0, 0, 0, wt, color )
- X #define WEPTOOL(name,desc,kn,mgc,bi,prob,wt,cost,sdam,ldam,hitbon,material,color) OBJECT( \
- X! OBJ(name,desc), BITS(kn,0,1,0,mgc,1,0,0,bi,0,material), 0, \
- X TOOL_CLASS, prob, 0, \
- X wt, cost, sdam, ldam, hitbon, 0, wt, color )
- X /* containers */
- X***************
- X*** 516,525 ****
- X 12, 12, 0, BONE, WHITE),
- X /* two special, one of each kind, "tools" */
- X OBJECT(OBJ("Candelabrum of Invocation", "candelabrum"),
- X! BITS(0,0,1,0,1,0,1,0,0,GOLD), 0,
- X TOOL_CLASS, 0, 0,10, 3000, 0, 0, 0, 0, 200, HI_GOLD),
- X OBJECT(OBJ("Bell of Opening", "silver bell"),
- X! BITS(0,0,1,0,1,0,1,0,0,SILVER), 0,
- X TOOL_CLASS, 0, 0,10, 1000, 0, 0, 0, 0, 50, HI_SILVER),
- X #undef TOOL
- X #undef WEPTOOL
- X--- 516,525 ----
- X 12, 12, 0, BONE, WHITE),
- X /* two special, one of each kind, "tools" */
- X OBJECT(OBJ("Candelabrum of Invocation", "candelabrum"),
- X! BITS(0,0,1,0,1,0,1,1,0,0,GOLD), 0,
- X TOOL_CLASS, 0, 0,10, 3000, 0, 0, 0, 0, 200, HI_GOLD),
- X OBJECT(OBJ("Bell of Opening", "silver bell"),
- X! BITS(0,0,1,0,1,0,1,1,0,0,SILVER), 0,
- X TOOL_CLASS, 0, 0,10, 1000, 0, 0, 0, 0, 50, HI_SILVER),
- X #undef TOOL
- X #undef WEPTOOL
- X***************
- X*** 526,532 ****
- X
- X /* comestibles ... */
- X #define FOOD(name,prob,delay,wt,uk,tin,nutrition,color) OBJECT( \
- X! OBJ(name,NULL), BITS(1,1,uk,0,0,0,0,0,0,tin), 0, \
- X FOOD_CLASS, prob, delay, \
- X wt, nutrition/20 + 5, 0, 0, 0, 0, nutrition, color )
- X /* all types of food (except tins & corpses) must have a delay of at least 1. */
- X--- 526,532 ----
- X
- X /* comestibles ... */
- X #define FOOD(name,prob,delay,wt,uk,tin,nutrition,color) OBJECT( \
- X! OBJ(name,NULL), BITS(1,1,uk,0,0,0,0,0,0,0,tin), 0, \
- X FOOD_CLASS, prob, delay, \
- X wt, nutrition/20 + 5, 0, 0, 0, 0, nutrition, color )
- X /* all types of food (except tins & corpses) must have a delay of at least 1. */
- X***************
- X*** 574,580 ****
- X
- X /* potions ... */
- X #define POTION(name,desc,mgc,power,prob,cost,color) OBJECT( \
- X! OBJ(name,desc), BITS(0,1,0,0,mgc,0,0,0,0,GLASS), power, \
- X POTION_CLASS, prob, 0, 20, cost, 0, 0, 0, 0, 10, color )
- X POTION("gain ability", "ruby", 1, 0, 45, 300, RED),
- X POTION("restore ability", "pink", 1, 0, 45, 100, BRIGHT_MAGENTA),
- X--- 574,580 ----
- X
- X /* potions ... */
- X #define POTION(name,desc,mgc,power,prob,cost,color) OBJECT( \
- X! OBJ(name,desc), BITS(0,1,0,0,mgc,0,0,0,0,0,GLASS), power, \
- X POTION_CLASS, prob, 0, 20, cost, 0, 0, 0, 0, 10, color )
- X POTION("gain ability", "ruby", 1, 0, 45, 300, RED),
- X POTION("restore ability", "pink", 1, 0, 45, 100, BRIGHT_MAGENTA),
- X***************
- X*** 601,607 ****
- X
- X /* scrolls ... */
- X #define SCROLL(name,text,mgc,prob,cost) OBJECT( \
- X! OBJ(name,text), BITS(0,1,0,0,mgc,0,0,0,0,PAPER), 0, \
- X SCROLL_CLASS, prob, 0, 5, cost, 0, 0, 0, 0, 6, HI_PAPER )
- X SCROLL("enchant armor", "ZELGO MER", 1, 63, 80),
- X SCROLL("destroy armor", "JUYED AWK YACC", 1, 45, 100),
- X--- 601,607 ----
- X
- X /* scrolls ... */
- X #define SCROLL(name,text,mgc,prob,cost) OBJECT( \
- X! OBJ(name,text), BITS(0,1,0,0,mgc,0,0,0,0,0,PAPER), 0, \
- X SCROLL_CLASS, prob, 0, 5, cost, 0, 0, 0, 0, 6, HI_PAPER )
- X SCROLL("enchant armor", "ZELGO MER", 1, 63, 80),
- X SCROLL("destroy armor", "JUYED AWK YACC", 1, 45, 100),
- X***************
- X*** 637,643 ****
- X
- X /* spellbooks ... */
- X #define SPELL(name,desc,prob,delay,level,mgc,dir,color) OBJECT( \
- X! OBJ(name,desc), BITS(0,1,0,0,mgc,0,0,0,dir,PAPER), 0, \
- X SPBOOK_CLASS, prob, delay, \
- X 50, level*100, 0, 0, 0, level, 20, color )
- X SPELL("dig", "parchment", 22, 6, 5, 1, RAY, HI_PAPER),
- X--- 637,643 ----
- X
- X /* spellbooks ... */
- X #define SPELL(name,desc,prob,delay,level,mgc,dir,color) OBJECT( \
- X! OBJ(name,desc), BITS(0,0,0,0,mgc,0,0,0,0,dir,PAPER), 0, \
- X SPBOOK_CLASS, prob, delay, \
- X 50, level*100, 0, 0, 0, level, 20, color )
- X SPELL("dig", "parchment", 22, 6, 5, 1, RAY, HI_PAPER),
- X***************
- X*** 682,694 ****
- X /* blank spellbook must come last because it retains its description */
- X SPELL("blank paper", "plain", 20, 0, 0, 0, 0, HI_PAPER),
- X /* a special, one of a kind, spellbook */
- X! OBJECT(OBJ("Book of the Dead", "papyrus"), BITS(0,0,1,0,1,0,1,0,0,PAPER), 0,
- X SPBOOK_CLASS, 0, 0,20, 3500, 0, 0, 0, 7, 20, HI_PAPER),
- X #undef SPELL
- X
- X /* wands ... */
- X #define WAND(name,typ,prob,cost,mgc,dir,metal,color) OBJECT( \
- X! OBJ(name,typ), BITS(0,0,1,0,mgc,1,0,0,dir,metal), 0, WAND_CLASS, \
- X prob, 0, 7, cost, 0, 0, 0, 0, 30, color )
- X WAND("light", "glass", 95, 100, 1, NODIR, GLASS, HI_GLASS),
- X WAND("secret door detection", "balsa", 50, 150, 1, NODIR, WOOD, HI_WOOD),
- X--- 682,694 ----
- X /* blank spellbook must come last because it retains its description */
- X SPELL("blank paper", "plain", 20, 0, 0, 0, 0, HI_PAPER),
- X /* a special, one of a kind, spellbook */
- X! OBJECT(OBJ("Book of the Dead", "papyrus"), BITS(0,0,1,0,1,0,1,1,0,0,PAPER), 0,
- X SPBOOK_CLASS, 0, 0,20, 3500, 0, 0, 0, 7, 20, HI_PAPER),
- X #undef SPELL
- X
- X /* wands ... */
- X #define WAND(name,typ,prob,cost,mgc,dir,metal,color) OBJECT( \
- X! OBJ(name,typ), BITS(0,0,1,0,mgc,1,0,0,0,dir,metal), 0, WAND_CLASS, \
- X prob, 0, 7, cost, 0, 0, 0, 0, 30, color )
- X WAND("light", "glass", 95, 100, 1, NODIR, GLASS, HI_GLASS),
- X WAND("secret door detection", "balsa", 50, 150, 1, NODIR, WOOD, HI_WOOD),
- X***************
- X*** 720,726 ****
- X
- X /* coins ... - so far, gold is all there is */
- X #define COIN(name,prob,metal) OBJECT( \
- X! OBJ(name,NULL), BITS(0,1,0,0,0,0,0,0,0,metal), 0, \
- X GOLD_CLASS, prob, 0, 1, 0, 0, 0, 0, 0, 0, HI_GOLD )
- X COIN("gold piece", 1000, GOLD),
- X #undef COIN
- X--- 720,726 ----
- X
- X /* coins ... - so far, gold is all there is */
- X #define COIN(name,prob,metal) OBJECT( \
- X! OBJ(name,NULL), BITS(0,1,0,0,0,0,0,0,0,0,metal), 0, \
- X GOLD_CLASS, prob, 0, 1, 0, 0, 0, 0, 0, 0, HI_GOLD )
- X COIN("gold piece", 1000, GOLD),
- X #undef COIN
- X***************
- X*** 727,736 ****
- X
- X /* gems ... - includes stones but not boulders */
- X #define GEM(name,desc,prob,wt,gval,nutr,glass,color) OBJECT( \
- X! OBJ(name,desc), BITS(0,1,0,0,0,0,0,0,0,glass), 0, \
- X GEM_CLASS, prob, 0, 1, gval, 3, 3, 0, WP_SLING, nutr, color )
- X #define ROCK(name,desc,kn,prob,wt,gval,mgc,nutr,glass,color) OBJECT( \
- X! OBJ(name,desc), BITS(kn,1,0,0,mgc,0,0,0,0,glass), 0, \
- X GEM_CLASS, prob, 0, wt, gval, 3, 3, 0, WP_SLING, nutr, color )
- X GEM("dilithium crystal", "white", 3, 1, 4500, 15, GEMSTONE, WHITE),
- X GEM("diamond", "white", 4, 1, 4000, 15, GEMSTONE, WHITE),
- X--- 727,736 ----
- X
- X /* gems ... - includes stones but not boulders */
- X #define GEM(name,desc,prob,wt,gval,nutr,glass,color) OBJECT( \
- X! OBJ(name,desc), BITS(0,1,0,0,0,0,0,0,0,0,glass), 0, \
- X GEM_CLASS, prob, 0, 1, gval, 3, 3, 0, WP_SLING, nutr, color )
- X #define ROCK(name,desc,kn,prob,wt,gval,mgc,nutr,glass,color) OBJECT( \
- X! OBJ(name,desc), BITS(kn,1,0,0,mgc,0,0,0,0,0,glass), 0, \
- X GEM_CLASS, prob, 0, wt, gval, 3, 3, 0, WP_SLING, nutr, color )
- X GEM("dilithium crystal", "white", 3, 1, 4500, 15, GEMSTONE, WHITE),
- X GEM("diamond", "white", 4, 1, 4000, 15, GEMSTONE, WHITE),
- X***************
- X*** 765,788 ****
- X * probabilities only come into effect when you try to polymorph them.
- X * Boulders and statues weigh more than MAX_CARR_CAP.
- X */
- X! OBJECT(OBJ("boulder",NULL), BITS(1,0,0,0,0,0,0,1,0,MINERAL), 0,
- X ROCK_CLASS, 100, 0, 6000, 0, 20, 20, 0, 0, 2000, HI_MINERAL),
- X! OBJECT(OBJ("statue", NULL), BITS(1,0,0,1,0,0,0,0,0,MINERAL), 0,
- X! ROCK_CLASS, 900, 0, 2500, 0, 20, 20, 0, 0, 2500, HI_MINERAL),
- X! OBJECT(OBJ("heavy iron ball", NULL), BITS(1,0,0,0,0,0,0,0,0,IRON), 0,
- X BALL_CLASS, 1000, 0, 480, 10, 0, 0, 0, 0, 200, HI_METAL),
- X! OBJECT(OBJ("iron chain", NULL), BITS(1,0,0,0,0,0,0,0,0,IRON), 0,
- X CHAIN_CLASS, 1000, 0, 120, 0, 0, 0, 0, 0, 200, HI_METAL),
- X OBJECT(OBJ("blinding venom", "splash of venom"),
- X! BITS(0,1,0,0,0,0,0,0,0,LIQUID), 0,
- X VENOM_CLASS, 500, 0, 1, 0, 0, 0, 0, 0, 0, HI_ORGANIC),
- X OBJECT(OBJ("acid venom", "splash of venom"),
- X! BITS(0,1,0,0,0,0,0,0,0,LIQUID), 0,
- X VENOM_CLASS, 500, 0, 1, 0, 6, 6, 0, 0, 0, HI_ORGANIC),
- X /* +d6 small or large */
- X
- X /* fencepost -- name [1st arg] *must* be NULL */
- X! OBJECT(OBJ(NULL,NULL), BITS(0,0,0,0,0,0,0,0,0,0), 0,
- X ILLOBJ_CLASS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
- X }; /* objects[] */
- X
- X--- 765,788 ----
- X * probabilities only come into effect when you try to polymorph them.
- X * Boulders and statues weigh more than MAX_CARR_CAP.
- X */
- X! OBJECT(OBJ("boulder",NULL), BITS(1,0,0,0,0,0,0,0,1,0,MINERAL), 0,
- X ROCK_CLASS, 100, 0, 6000, 0, 20, 20, 0, 0, 2000, HI_MINERAL),
- X! OBJECT(OBJ("statue", NULL), BITS(1,0,0,1,0,0,0,0,0,0,MINERAL), 0,
- X! ROCK_CLASS, 900, 0, 2500, 0, 20, 20, 0, 0, 2500, WHITE),
- X! OBJECT(OBJ("heavy iron ball", NULL), BITS(1,0,0,0,0,0,0,0,0,0,IRON), 0,
- X BALL_CLASS, 1000, 0, 480, 10, 0, 0, 0, 0, 200, HI_METAL),
- X! OBJECT(OBJ("iron chain", NULL), BITS(1,0,0,0,0,0,0,0,0,0,IRON), 0,
- X CHAIN_CLASS, 1000, 0, 120, 0, 0, 0, 0, 0, 200, HI_METAL),
- X OBJECT(OBJ("blinding venom", "splash of venom"),
- X! BITS(0,1,0,0,0,0,0,1,0,0,LIQUID), 0,
- X VENOM_CLASS, 500, 0, 1, 0, 0, 0, 0, 0, 0, HI_ORGANIC),
- X OBJECT(OBJ("acid venom", "splash of venom"),
- X! BITS(0,1,0,0,0,0,0,1,0,0,LIQUID), 0,
- X VENOM_CLASS, 500, 0, 1, 0, 6, 6, 0, 0, 0, HI_ORGANIC),
- X /* +d6 small or large */
- X
- X /* fencepost -- name [1st arg] *must* be NULL */
- X! OBJECT(OBJ(NULL,NULL), BITS(0,0,0,0,0,0,0,0,0,0,0), 0,
- X ILLOBJ_CLASS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
- X }; /* objects[] */
- X
- X
- END_OF_FILE
- if test 55751 -ne `wc -c <'patches01f'`; then
- echo shar: \"'patches01f'\" unpacked with wrong size!
- fi
- # end of 'patches01f'
- echo shar: End of archive 4 \(of 31\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 31 archives.
- echo "Now execute 'patchit.sh'"
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-