Merge branch 'master' into win32-x64-working
Resolved Conflicts: src/cmd.c src/mkobj.c All conflicts fixed but you are still merging. Changes to be committed: modified: dat/Priest.des modified: dat/Rogue.des modified: dat/Valkyrie.des modified: dat/Wizard.des modified: dat/gehennom.des modified: src/cmd.c modified: src/mkobj.c modified: src/steal.c modified: sys/share/lev_yacc.c modified: util/lev_comp.y
This commit is contained in:
@@ -38,6 +38,11 @@ ENDMAP
|
||||
# Dungeon Description
|
||||
REGION:(00,00,75,19),lit,"ordinary"
|
||||
REGION:(24,06,33,13),lit,"temple"
|
||||
|
||||
REPLACE_TERRAIN:(0,0,10,19),'.','T',10%
|
||||
REPLACE_TERRAIN:(65,0,75,19),'.','T',10%
|
||||
TERRAIN:(05,04),'.'
|
||||
|
||||
# Portal arrival point
|
||||
BRANCH:(05,04,05,04),(0,0,0,0)
|
||||
# Stairs
|
||||
@@ -77,7 +82,7 @@ MONSTER:('@',"acolyte"),(33,08)
|
||||
MONSTER:('@',"acolyte"),(33,11)
|
||||
MONSTER:('@',"acolyte"),(33,12)
|
||||
# Non diggable walls
|
||||
NON_DIGGABLE:(00,00,75,19)
|
||||
NON_DIGGABLE:(18,03,55,16)
|
||||
# Random traps
|
||||
TRAP:"dart",(20,09)
|
||||
TRAP:"dart",(20,10)
|
||||
|
||||
@@ -39,6 +39,10 @@ MAP
|
||||
ENDMAP
|
||||
# Dungeon Description
|
||||
#REGION:(00,00,75,20),lit,"ordinary"
|
||||
|
||||
$streets = selection: floodfill(0,12)
|
||||
|
||||
|
||||
# The down stairs is at one of the 4 "exits". The others are mimics,
|
||||
# mimicing stairwells.
|
||||
$place = { (33,0), (0,12), (25,20), (75,05) }
|
||||
@@ -149,26 +153,14 @@ MONSTER: ('l',"leprechaun"),(74,04),hostile
|
||||
# South exit
|
||||
MONSTER: ('l',"leprechaun"),(25,19),hostile
|
||||
MONSTER: ('n',"water nymph"),(25,18),hostile
|
||||
# Wandering the streets. What I'd really like for this is a random
|
||||
# location, but make sure we're on a given type, e.g. street (if they
|
||||
# existed, of course).
|
||||
MONSTER: ('n',"water nymph"),(07,05),hostile
|
||||
MONSTER: ('l',"leprechaun"),(28,06),hostile
|
||||
MONSTER: ('n',"water nymph"),(38,07),hostile
|
||||
MONSTER: ('l',"leprechaun"),(45,01),hostile
|
||||
MONSTER: ('n',"water nymph"),(59,07),hostile
|
||||
MONSTER: ('l',"leprechaun"),(62,14),hostile
|
||||
MONSTER: ('n',"water nymph"),(71,14),hostile
|
||||
MONSTER: ('l',"leprechaun"),(39,13),hostile
|
||||
MONSTER: ('n',"water nymph"),(18,14),hostile
|
||||
MONSTER: (':',"chameleon"),(19,08),hostile
|
||||
MONSTER: (':',"chameleon"),(22,08),hostile
|
||||
MONSTER: (':',"chameleon"),(16,08),hostile
|
||||
MONSTER: (':',"chameleon"),random,hostile
|
||||
MONSTER: (':',"chameleon"),random,hostile
|
||||
MONSTER: (':',"chameleon"),random,hostile
|
||||
MONSTER: (':',"chameleon"),random,hostile
|
||||
MONSTER: (':',"chameleon"),random,hostile
|
||||
# Wandering the streets.
|
||||
LOOP [ 4 + 1d3 ] {
|
||||
MONSTER: ('n',"water nymph"),rndcoord($streets),hostile
|
||||
MONSTER: ('l',"leprechaun"),rndcoord($streets),hostile
|
||||
}
|
||||
LOOP [ 7 + 1d3 ] {
|
||||
MONSTER: (':',"chameleon"),rndcoord($streets),hostile
|
||||
}
|
||||
|
||||
#
|
||||
# The "locate" level for the quest.
|
||||
|
||||
@@ -12,28 +12,41 @@
|
||||
#
|
||||
MAZE: "Val-strt",' '
|
||||
FLAGS: noteleport,hardfloor,icedpools
|
||||
INIT_MAP:solidfill,'I'
|
||||
|
||||
$pools = selection: random & random & random & random & random &
|
||||
random & random & random & random & random & random &
|
||||
random & random &
|
||||
grow(west, random) &
|
||||
grow(north, random) &
|
||||
grow(random & random)
|
||||
# This works because the random coordinates in $pools are evaluated once,
|
||||
# when the variable is initialized.
|
||||
TERRAIN:grow($pools), 'P'
|
||||
TERRAIN:$pools, 'L'
|
||||
|
||||
GEOMETRY:center,center
|
||||
MAP
|
||||
IIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
|
||||
IIIIPPPPPIIIIIIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...IIIIIIIIIIIIIIIIIIIII
|
||||
IIIIPLLPPIIIIIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII..{..IIIIIIIIIIIIIIIIIIII
|
||||
IIIIPLPPIIIIIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.....IIIIIIPPPIIIIIIIIII
|
||||
IIIPPPPPIIIIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.IIIIIPPLPIIIIIIIIII
|
||||
IIIIPIIIIIIII..IIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.IIIIIPLPPIIIIIIIIII
|
||||
IIIIIIIIIIII..IIIIIPLPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII..IIIIIPPPIIIIIIIIIII
|
||||
IIIIIIII.....IIIIIIPPPIIII|----------------|IIIIIPPPIII.IIIIIIIIIIIIIIIIIIII
|
||||
IIIIIII..III...IIIIIIIIIII|................|IIIIIPLPII..IIIIIIIIIIIIIIIIIIII
|
||||
IIIIII..IIIIII......IIIII.|................|.IIIIPPPII.IIIIIIIIIIIIIIIIIIIII
|
||||
IIIII..IIIIIIIIIIII.......+................+...IIIIIII.IIIIIIIIIIIIIIIIIIIII
|
||||
IIII..IIIIIIIII.....IIIII.|................|.I...IIIII.IIIIIIIIIIIIIIIIIIIII
|
||||
III..IIIIIIIII..IIIIIIIIII|................|IIII.......IIIIIIIIIIIIIIIIIIIII
|
||||
IIII..IIIIIII..IIIIIIIIIII|----------------|IIIIIIIIII...IIIIIIIIIIIIIIIIIII
|
||||
IIIIII..IIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIPPPPIIII...IIIIIIIIIIIIIIIII
|
||||
IIIIIII......IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIPLLPPIIIII...IIIIIIIIIIIIIII
|
||||
IIIIPPPIP...IIIIIIIIIIIPIIIIIIIIIIIIIIIIIIIIIIIIPPPPIIIIIIII...I......IIIIII
|
||||
IIIPPLPPIIIIIIIIIIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.........IIIII
|
||||
IIIIPPPIIIIIIIIIIIIIIPPLPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.......IIIIII
|
||||
IIIIIIIIIIIIIIIIIIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..{..xxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.....xxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxx.....xxxxxxxxxxxxx|----------------|xxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxx..xxx...xxxxxxxxxxx|................|xxxxxxxxxx..xxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxx..xxxxxx......xxxxx.|................|.xxxxxxxxx.xxxxxxxxxxxxxxxxxxxxx
|
||||
xxxxx..xxxxxxxxxxxx.......+................+...xxxxxxx.xxxxxxxxxxxxxxxxxxxxx
|
||||
xxxx..xxxxxxxxx.....xxxxx.|................|.x...xxxxx.xxxxxxxxxxxxxxxxxxxxx
|
||||
xxx..xxxxxxxxx..xxxxxxxxxx|................|xxxx.......xxxxxxxxxxxxxxxxxxxxx
|
||||
xxxx..xxxxxxx..xxxxxxxxxxx|----------------|xxxxxxxxxx...xxxxxxxxxxxxxxxxxxx
|
||||
xxxxxx..xxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxx
|
||||
xxxxxxx......xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxx
|
||||
xxxxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...x......xxxxxx
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.........xxxxx
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.......xxxxxx
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
ENDMAP
|
||||
# Dungeon Description
|
||||
REGION:(00,00,75,19),lit,"ordinary"
|
||||
|
||||
@@ -34,6 +34,12 @@ MAP
|
||||
..........C.C.........................C............C...........}}}}}........
|
||||
......................CCC.C.................................................
|
||||
ENDMAP
|
||||
|
||||
# first do cloud everywhere
|
||||
REPLACE_TERRAIN:(0,0, 75,19), '.', 'C', 10%
|
||||
# then replace clouds inside the tower back to floor
|
||||
REPLACE_TERRAIN:(13,5, 33,15), 'C', '.', 100%
|
||||
|
||||
# Dungeon Description
|
||||
REGION:(00,00,75,19),lit,"ordinary"
|
||||
REGION:(35,00,49,03),unlit,"ordinary"
|
||||
@@ -43,6 +49,7 @@ REGION:(30,10,31,10),unlit,"ordinary"
|
||||
# Stairs
|
||||
STAIR:(30,10),down
|
||||
# Portal arrival point
|
||||
TERRAIN:(63,06),'.'
|
||||
BRANCH:(63,06,63,06),(0,0,0,0)
|
||||
# Doors
|
||||
DOOR:closed,(31,09)
|
||||
@@ -129,6 +136,11 @@ MAP
|
||||
............. .............}}}}}}}.}}}}}}}}}}}}}}}}}}}.}}}}}}}.......
|
||||
............. .......................................................
|
||||
ENDMAP
|
||||
|
||||
REPLACE_TERRAIN:(0,0,30,20), '.', 'C', 15%
|
||||
REPLACE_TERRAIN:(68,0,75,20), '.', '}', 25%
|
||||
REPLACE_TERRAIN:(34,1,68,19), '}', '.', 2%
|
||||
|
||||
# Dungeon Description
|
||||
REGION:(00,00,75,20),lit,"ordinary"
|
||||
REGION:(37,04,65,16),unlit,"ordinary"
|
||||
@@ -148,6 +160,7 @@ DOOR:locked,(55,12)
|
||||
DOOR:locked,(47,08)
|
||||
DOOR:locked,(47,12)
|
||||
# Stairs
|
||||
TERRAIN:(03,17),'.'
|
||||
STAIR:(03,17),up
|
||||
STAIR:(48,10),down
|
||||
# Non diggable walls
|
||||
|
||||
@@ -31,6 +31,24 @@ MAP
|
||||
| |..|..B...........| |.|..........|.| |.|........| |
|
||||
----------------------------------------------------------------------------
|
||||
ENDMAP
|
||||
|
||||
# Make the path somewhat unpredictable
|
||||
# If you get "lucky", you may have to go through all three graveyards.
|
||||
IF [50%] {
|
||||
TERRAIN:line (50,8),(53,8), '-'
|
||||
TERRAIN:line (40,8),(43,8), 'B'
|
||||
}
|
||||
IF [50%] {
|
||||
TERRAIN:(27,12),'|'
|
||||
TERRAIN:line (27,3),(29,3), 'B'
|
||||
TERRAIN:(28,2), '-'
|
||||
}
|
||||
IF [50%] {
|
||||
TERRAIN:line (16,10),(16,11),'|'
|
||||
TERRAIN:line (9,13),(14,13), 'B'
|
||||
}
|
||||
|
||||
|
||||
# Dungeon Description
|
||||
# The shrine to Moloch.
|
||||
REGION:(01,06,05,14),lit,"temple"
|
||||
|
||||
51
src/cmd.c
51
src/cmd.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.5 cmd.c $NHDT-Date: 1429675557 2015/04/22 04:05:57 $ $NHDT-Branch: win32-x64-working $:$NHDT-Revision: 1.187 $ */
|
||||
/* NetHack 3.5 cmd.c $NHDT-Date: 1430534601 2015/05/02 02:43:21 $ $NHDT-Branch: master $:$NHDT-Revision: 1.186 $ */
|
||||
/* NetHack 3.5 cmd.c $Date: 2013/03/16 01:44:28 $ $Revision: 1.162 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -1935,27 +1935,54 @@ int final;
|
||||
}
|
||||
if (Half_physical_damage) enlght_halfdmg(HALF_PHDAM, final);
|
||||
if (Half_spell_damage) enlght_halfdmg(HALF_SPDAM, final);
|
||||
/* polymorph and other shape change */
|
||||
if (Protection_from_shape_changers)
|
||||
you_are("protected from shape changers",
|
||||
from_what(PROT_FROM_SHAPE_CHANGERS));
|
||||
if (Polymorph) you_are("polymorphing", from_what(POLYMORPH));
|
||||
if (Unchanging) {
|
||||
const char *what = 0;
|
||||
|
||||
if (!Upolyd) /* Upolyd handled below after current form */
|
||||
you_can("not change from your current form",
|
||||
from_what(UNCHANGING));
|
||||
/* blocked shape changes */
|
||||
if (Polymorph)
|
||||
what = !final ? "polymorph" : "have polymorphed";
|
||||
else if (u.ulycn >= LOW_PM)
|
||||
what = !final ? "change shape" : "have changed shape";
|
||||
if (what) {
|
||||
Sprintf(buf, "would %s periodically", what);
|
||||
/* omit from_what(UNCHANGING); too verbose */
|
||||
enl_msg(You_, buf, buf,
|
||||
" if not locked into your current form", "");
|
||||
}
|
||||
} else if (Polymorph) {
|
||||
you_are("polymorphing periodically", from_what(POLYMORPH));
|
||||
}
|
||||
if (Polymorph_control)
|
||||
you_have("polymorph control",from_what(POLYMORPH_CONTROL));
|
||||
if (u.ulycn >= LOW_PM) {
|
||||
Strcpy(buf, an(mons[u.ulycn].mname));
|
||||
if (Upolyd && u.umonnum != u.ulycn) {
|
||||
/* foreign shape (except were-form which is handled below) */
|
||||
Sprintf(buf, "polymorphed into %s", an(youmonst.data->mname));
|
||||
if (wizard) Sprintf(eos(buf), " (%d)", u.mtimedone);
|
||||
you_are(buf,"");
|
||||
}
|
||||
if (Upolyd) {
|
||||
if (u.umonnum == u.ulycn) Strcpy(buf, "in beast form");
|
||||
else Sprintf(buf, "polymorphed into %s", an(youmonst.data->mname));
|
||||
if (wizard) Sprintf(eos(buf), " (%d)", u.mtimedone);
|
||||
you_are(buf,"");
|
||||
if (lays_eggs(youmonst.data) && flags.female)
|
||||
if (lays_eggs(youmonst.data) && flags.female) /* Upolyd */
|
||||
you_can("lay eggs", "");
|
||||
if (u.ulycn >= LOW_PM) {
|
||||
/* "you are a werecreature [in beast form]" */
|
||||
Strcpy(buf, an(mons[u.ulycn].mname));
|
||||
if (u.umonnum == u.ulycn) {
|
||||
Strcat(buf, " in beast form");
|
||||
if (wizard) Sprintf(eos(buf), " (%d)", u.mtimedone);
|
||||
}
|
||||
you_are(buf,"");
|
||||
}
|
||||
if (Unchanging) you_can("not change from your current form",
|
||||
from_what(UNCHANGING));
|
||||
if (Unchanging && Upolyd) /* !Upolyd handled above */
|
||||
you_can("not change from your current form",
|
||||
from_what(UNCHANGING));
|
||||
if (Hate_silver) you_are("harmed by silver","");
|
||||
/* movement and non-armor-based protection */
|
||||
if (Fast) you_are(Very_fast ? "very fast" : "fast",from_what(FAST));
|
||||
if (Reflecting) you_have("reflection",from_what(REFLECTING));
|
||||
if (Free_action) you_have("free action",from_what(FREE_ACTION));
|
||||
|
||||
58
src/mkobj.c
58
src/mkobj.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.5 mkobj.c $NHDT-Date: 1430472720 2015/05/01 09:32:00 $ $NHDT-Branch: master $:$NHDT-Revision: 1.95 $ */
|
||||
/* NetHack 3.5 mkobj.c $NHDT-Date: 1430559882 2015/05/02 09:44:42 $ $NHDT-Branch: master $:$NHDT-Revision: 1.96 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -2179,32 +2179,44 @@ struct obj *obj;
|
||||
/* [W_ART,W_ARTI are property bits for items which aren't worn] */
|
||||
};
|
||||
char maskbuf[60];
|
||||
unsigned long allmask = 0L;
|
||||
unsigned long owornmask, allmask = 0L;
|
||||
int i, n = 0;
|
||||
|
||||
/* use owornmask for testing and bit twiddling, but use original
|
||||
obj->owornmask for printing */
|
||||
owornmask = obj->owornmask;
|
||||
/* figure out how many bits are set, and also which are viable */
|
||||
for (i = 0; wearbits[i]; ++i) {
|
||||
if ((owornmask & wearbits[i]) != 0L) ++n;
|
||||
allmask |= wearbits[i];
|
||||
if ((obj->owornmask & wearbits[i]) != 0L) ++n;
|
||||
}
|
||||
if (n == 2 && carried(obj) && obj == uball && (owornmask & W_BALL) != 0L
|
||||
&& (owornmask & (W_WEP|W_SWAPWEP|W_QUIVER)) != 0L) {
|
||||
/* chained ball can be wielded/alt-wielded/quivered; if so,
|
||||
pretend it's not chained in order to check the weapon pointer
|
||||
(we've already verified the ball pointer by successfully passing
|
||||
the if-condition to get here...) */
|
||||
owornmask &= ~W_BALL;
|
||||
n = 1;
|
||||
}
|
||||
if (n > 1) {
|
||||
/* multiple bits set */
|
||||
Sprintf(maskbuf, "worn mask (multiple) 0x%08lx", obj->owornmask);
|
||||
insane_object(obj, ofmt0, maskbuf, (struct monst *)0);
|
||||
}
|
||||
if ((obj->owornmask & ~allmask) != 0L
|
||||
|| (carried(obj) && (obj->owornmask & W_SADDLE) != 0L)) {
|
||||
if ((owornmask & ~allmask) != 0L
|
||||
|| (carried(obj) && (owornmask & W_SADDLE) != 0L)) {
|
||||
/* non-wearable bit(s) set */
|
||||
Sprintf(maskbuf, "worn mask (bogus)) 0x%08lx", obj->owornmask);
|
||||
insane_object(obj, ofmt0, maskbuf, (struct monst *)0);
|
||||
}
|
||||
if (n == 1 && (carried(obj)
|
||||
|| (obj->owornmask & (W_BALL|W_CHAIN)) != 0L)) {
|
||||
if (n == 1 && (carried(obj) || (owornmask & (W_BALL|W_CHAIN)) != 0L)) {
|
||||
const char *what = 0;
|
||||
|
||||
/* verify that obj in hero's invent (or ball/chain elsewhere)
|
||||
with owornmask of W_foo is the object pointed to by ufoo */
|
||||
switch (obj->owornmask) {
|
||||
case W_ARM: if (obj != uarm) what = "armor"; /* suit */
|
||||
switch (owornmask) {
|
||||
case W_ARM: if (obj != uarm) what = "suit";
|
||||
break;
|
||||
case W_ARMC: if (obj != uarmc) what = "cloak";
|
||||
break;
|
||||
@@ -2244,6 +2256,34 @@ struct obj *obj;
|
||||
Sprintf(maskbuf, "worn mask 0x%08lx != %s", obj->owornmask, what);
|
||||
insane_object(obj, ofmt0, maskbuf, (struct monst *)0);
|
||||
}
|
||||
/* check for items worn in invalid slots; practically anything can
|
||||
be wielded/alt-wielded/quivered, so skip obj if it's one of those */
|
||||
what = 0;
|
||||
if (owornmask & W_ARMOR) {
|
||||
if (obj->oclass != ARMOR_CLASS) what = "armor";
|
||||
} else if (owornmask & W_AMUL) {
|
||||
if (obj->oclass != AMULET_CLASS) what = "amulet";
|
||||
} else if (owornmask & W_RING) {
|
||||
if (obj->oclass != RING_CLASS && obj->otyp != MEAT_RING)
|
||||
what = "ring";
|
||||
} else if (owornmask & W_TOOL) {
|
||||
if (obj->otyp != BLINDFOLD && obj->otyp != TOWEL
|
||||
&& obj->otyp != LENSES) what = "blindfold";
|
||||
} else if (owornmask & W_BALL) {
|
||||
if (obj->oclass != BALL_CLASS) what = "chained ball";
|
||||
} else if (owornmask & W_CHAIN) {
|
||||
if (obj->oclass != CHAIN_CLASS) what = "chain";
|
||||
}
|
||||
if (what) {
|
||||
char oclassname[30];
|
||||
|
||||
/* if we've found a potion worn in the amulet slot,
|
||||
this yields "worn (potion amulet)" */
|
||||
Strcpy(oclassname, def_oc_syms[(uchar)obj->oclass].name);
|
||||
Sprintf(maskbuf, "worn (%s %s)",
|
||||
makesingular(oclassname), what);
|
||||
insane_object(obj, ofmt0, maskbuf, (struct monst *)0);
|
||||
}
|
||||
}
|
||||
#else /* not (BETA || DEBUG) */
|
||||
/* dummy use of obj to avoid "arg not used" complaint */
|
||||
|
||||
28
src/steal.c
28
src/steal.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.5 steal.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
|
||||
/* NetHack 3.5 steal.c $NHDT-Date: 1430528463 2015/05/02 01:01:03 $ $NHDT-Branch: master $:$NHDT-Revision: 1.53 $ */
|
||||
/* NetHack 3.5 steal.c $Date: 2012/02/05 04:26:48 $ $Revision: 1.41 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -23,15 +23,31 @@ register struct obj *otmp;
|
||||
}
|
||||
|
||||
long /* actually returns something that fits in an int */
|
||||
somegold(umoney)
|
||||
long umoney;
|
||||
somegold(lmoney)
|
||||
long lmoney;
|
||||
{
|
||||
#ifdef LINT /* long conv. ok */
|
||||
return(0L);
|
||||
int igold = 0;
|
||||
#else
|
||||
return (long)( (umoney < 100) ? umoney :
|
||||
(umoney > 10000) ? rnd(10000) : rnd((int) umoney) );
|
||||
int igold = (lmoney >= (long)LARGEST_INT) ? LARGEST_INT : (int)lmoney;
|
||||
#endif
|
||||
|
||||
if (igold < 50)
|
||||
; /* all gold */
|
||||
else if (igold < 100)
|
||||
igold = rn1(igold - 25 + 1, 25);
|
||||
else if (igold < 500)
|
||||
igold = rn1(igold - 50 + 1, 50);
|
||||
else if (igold < 1000)
|
||||
igold = rn1(igold - 100 + 1, 100);
|
||||
else if (igold < 5000)
|
||||
igold = rn1(igold - 500 + 1, 500);
|
||||
else if (igold < 10000)
|
||||
igold = rn1(igold - 1000 + 1, 1000);
|
||||
else
|
||||
igold = rn1(igold - 5000 + 1, 5000);
|
||||
|
||||
return (long)igold;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -895,7 +895,7 @@ union yyalloc
|
||||
/* YYFINAL -- State number of the termination state. */
|
||||
#define YYFINAL 9
|
||||
/* YYLAST -- Last index in YYTABLE. */
|
||||
#define YYLAST 1031
|
||||
#define YYLAST 1033
|
||||
|
||||
/* YYNTOKENS -- Number of terminals. */
|
||||
#define YYNTOKENS 194
|
||||
@@ -1176,9 +1176,9 @@ static const yytype_int16 yypact[] =
|
||||
-654, 309, 387, 555, 556, 558, 733, 733, -654, -654,
|
||||
66, -31, 671, 46, 698, 571, 567, 672, 573, 66,
|
||||
215, 700, 566, 581, 66, 587, 359, 589, 66, 359,
|
||||
-18, -18, 672, 663, 664, -654, -654, 541, 544, 521,
|
||||
-654, -18, -18, 307, -654, 595, 590, 672, 597, 66,
|
||||
67, 186, 659, 730, 604, 669, -1, 8, -654, 606,
|
||||
-18, -18, 672, 663, 664, -654, -654, 592, 593, 521,
|
||||
-654, -18, -18, 307, -654, 598, 596, 672, 597, 66,
|
||||
67, 186, 660, 730, 604, 669, -1, 8, -654, 606,
|
||||
607, -1, -1, -1, 66, 609, 89, -18, 141, 12,
|
||||
57, 665, -654, 52, 52, -654, 156, 605, -38, 697,
|
||||
-654, -654, 331, 347, 168, 168, -654, -654, -654, 56,
|
||||
@@ -1339,9 +1339,9 @@ static const yytype_int16 yypgoto[] =
|
||||
-654, -654, -654, -654, -654, -654, -654, -654, -654, -654,
|
||||
-654, -654, -654, -654, -654, -654, -654, 421, -653, 200,
|
||||
-654, -385, -492, -654, -654, -654, 369, 682, -168, -136,
|
||||
-312, 583, 150, -308, -386, -485, -418, -473, 596, -459,
|
||||
-132, -55, -654, 396, -654, -654, 610, -654, -654, 781,
|
||||
-135, 576, -392, -654, -654, -654, -654, -654, -124, -654
|
||||
-312, 583, 150, -308, -386, -485, -418, -473, 602, -459,
|
||||
-132, -55, -654, 396, -654, -654, 610, -654, -654, 778,
|
||||
-135, 575, -392, -654, -654, -654, -654, -654, -124, -654
|
||||
};
|
||||
|
||||
/* YYDEFGOTO[NTERM-NUM]. */
|
||||
@@ -1442,8 +1442,8 @@ static const yytype_int16 yytable[] =
|
||||
433, 719, 720, 721, 722, 723, 724, 725, 726, 727,
|
||||
728, 442, 443, 444, 446, 451, 452, 310, 311, 312,
|
||||
313, 314, 453, 310, 311, 312, 313, 314, 455, 857,
|
||||
457, 463, 464, 480, 481, 864, 493, 465, 483, 819,
|
||||
466, 202, 203, 193, 494, 495, 496, 501, 502, 16,
|
||||
457, 463, 464, 465, 466, 864, 480, 493, 483, 819,
|
||||
481, 202, 203, 193, 494, 495, 496, 501, 502, 16,
|
||||
507, 526, -159, 537, 194, 195, 554, 17, 845, 552,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26, 555,
|
||||
557, 853, 27, 28, 29, 558, 561, 586, 30, 31,
|
||||
@@ -1472,8 +1472,8 @@ static const yytype_int16 yytable[] =
|
||||
839, 840, 833, 841, 843, 846, 848, 850, 849, 10,
|
||||
851, 172, 855, 856, 434, 861, 863, 339, 166, 865,
|
||||
508, 807, 560, 292, 796, 802, 753, 299, 826, 222,
|
||||
847, 838, 731, 437, 668, 698, 556, 547, 0, 535,
|
||||
374, 581
|
||||
847, 838, 731, 437, 668, 698, 556, 374, 0, 535,
|
||||
581, 0, 0, 547
|
||||
};
|
||||
|
||||
static const yytype_int16 yycheck[] =
|
||||
@@ -1550,8 +1550,8 @@ static const yytype_int16 yycheck[] =
|
||||
132, 97, 98, 99, 100, 101, 102, 103, 104, 105,
|
||||
106, 3, 131, 136, 131, 5, 140, 185, 186, 187,
|
||||
188, 189, 131, 185, 186, 187, 188, 189, 131, 855,
|
||||
131, 58, 58, 128, 134, 861, 67, 186, 131, 784,
|
||||
186, 59, 60, 139, 4, 131, 67, 131, 131, 6,
|
||||
131, 58, 58, 131, 131, 861, 128, 67, 131, 784,
|
||||
134, 59, 60, 139, 4, 131, 67, 131, 131, 6,
|
||||
131, 136, 77, 131, 150, 151, 3, 14, 831, 138,
|
||||
17, 18, 19, 20, 21, 22, 23, 24, 25, 131,
|
||||
134, 844, 29, 30, 31, 4, 139, 131, 35, 36,
|
||||
@@ -1580,8 +1580,8 @@ static const yytype_int16 yycheck[] =
|
||||
4, 134, 192, 134, 134, 131, 134, 134, 129, 5,
|
||||
134, 55, 131, 131, 336, 131, 860, 192, 49, 134,
|
||||
396, 767, 450, 164, 754, 762, 678, 169, 795, 139,
|
||||
833, 821, 653, 341, 603, 629, 443, 431, -1, 419,
|
||||
249, 455
|
||||
833, 821, 653, 341, 603, 629, 443, 249, -1, 419,
|
||||
455, -1, -1, 431
|
||||
};
|
||||
|
||||
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
||||
@@ -1634,7 +1634,7 @@ static const yytype_uint16 yystos[] =
|
||||
335, 132, 132, 132, 209, 207, 335, 321, 3, 3,
|
||||
133, 297, 3, 131, 136, 344, 131, 335, 64, 65,
|
||||
271, 5, 140, 131, 335, 131, 208, 131, 335, 208,
|
||||
323, 323, 344, 58, 58, 186, 186, 58, 267, 344,
|
||||
323, 323, 344, 58, 58, 131, 131, 58, 267, 344,
|
||||
323, 323, 3, 7, 133, 158, 159, 328, 329, 344,
|
||||
128, 134, 344, 131, 335, 55, 59, 316, 59, 61,
|
||||
62, 317, 320, 67, 4, 131, 67, 352, 59, 133,
|
||||
|
||||
@@ -2450,11 +2450,11 @@ ter_selection_x : coord_or_var
|
||||
{
|
||||
add_opvars(splev, "o", VA_PASS1(SPO_SEL_FILLRECT));
|
||||
}
|
||||
| line_ID coord_or_var '-' coord_or_var
|
||||
| line_ID coord_or_var ',' coord_or_var
|
||||
{
|
||||
add_opvars(splev, "o", VA_PASS1(SPO_SEL_LINE));
|
||||
}
|
||||
| randline_ID coord_or_var '-' coord_or_var ',' math_expr_var
|
||||
| randline_ID coord_or_var ',' coord_or_var ',' math_expr_var
|
||||
{
|
||||
/* randline (x1,y1),(x2,y2), roughness */
|
||||
add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDLINE));
|
||||
|
||||
Reference in New Issue
Block a user