some orctown follow-up bits, fix Bad fruit #0 and some minor tuning
This commit is contained in:
@@ -4089,6 +4089,13 @@ acolyte
|
||||
there may well be wonderful universes above us where reason is
|
||||
utterly unreasonable?"
|
||||
[ The Innocence of Father Brown, by G.K. Chesterton ]
|
||||
paddle cactus
|
||||
Opuntia, commonly called prickly pear, is a genus in the cactus
|
||||
family, Cactaceae. Prickly pears are also known as tuna (fruit),
|
||||
sabra, nopal (paddle, plural nopales) from the Nahuatl word
|
||||
nopalli for the pads, or nostle, from the Nahuatl word nochtli
|
||||
for the fruit; or paddle cactus.
|
||||
[ Wikipedia, the free encyclopedia ]
|
||||
prisoner
|
||||
Where am I?
|
||||
In the Village.
|
||||
@@ -4355,6 +4362,29 @@ rogue
|
||||
conceal it; and therein am I constant to my profession.
|
||||
[ Autolycus the Rogue, from The Winter's Tale by
|
||||
William Shakespeare ]
|
||||
root
|
||||
dwarven root
|
||||
But when they were cooked these roots proved good to eat,
|
||||
somewhat like bread; and the outlaws were glad of them, for
|
||||
they had long lacked bread save when they could steal it.
|
||||
"Wild Elves know them not; Grey-elves have not found them;
|
||||
the proud ones from over the Sea are too proud to delve,"
|
||||
said Mim.
|
||||
|
||||
"What is their name?" said Turin. Mim looked at him sidelong.
|
||||
"They have no name, save in the Dwarf-tongue, which we do not
|
||||
teach," he said. "And we not teach Men to find them, for Men
|
||||
are greedy and thriftless, and would not spare till all the
|
||||
plants had perished; whereas now they pass them by as they go
|
||||
blundering in the wild. No more will you learn of me; but you
|
||||
may have enough of my bounty, as long as you speak fair and
|
||||
do not spy or steal." Then again he laughed in his throat.
|
||||
|
||||
"They are of great worth." he said. "More than gold in the
|
||||
hungry winter, for they may be hoarded like the nuts of a
|
||||
squirrel, and already we were building our store from the
|
||||
first that are ripe."
|
||||
[ Unfinished Tales, Part 1, by J.R.R. Tolkien ]
|
||||
roshi
|
||||
Roshi is a Japanese word, common in Zen Buddhism, meaning "old"
|
||||
(ro) and "teacher" (shi). Roshi can be used as a term of
|
||||
|
||||
@@ -140,7 +140,7 @@ tty: turn off an optimization that is the suspected cause of Windows reported
|
||||
partial status lines following level changes
|
||||
tty: ensure that current status fields are always copied to prior status
|
||||
values so that comparisons are correct
|
||||
|
||||
orctown: prevent Bad fruit #0 and some minor tuning
|
||||
|
||||
Platform- and/or Interface-Specific Fixes
|
||||
-----------------------------------------
|
||||
|
||||
@@ -521,7 +521,7 @@ E void FDECL(container_impact_dmg, (struct obj *, XCHAR_P, XCHAR_P));
|
||||
E int NDECL(dokick);
|
||||
E boolean FDECL(ship_object, (struct obj *, XCHAR_P, XCHAR_P, BOOLEAN_P));
|
||||
E void FDECL(obj_delivery, (BOOLEAN_P));
|
||||
E void FDECL(deliver_obj_to_mon, (struct monst *mtmp, unsigned long));
|
||||
E void FDECL(deliver_obj_to_mon, (struct monst *mtmp, int, unsigned long));
|
||||
E schar FDECL(down_gate, (XCHAR_P, XCHAR_P));
|
||||
E void FDECL(impact_drop, (struct obj *, XCHAR_P, XCHAR_P, XCHAR_P));
|
||||
|
||||
@@ -1703,6 +1703,7 @@ E const char *FDECL(helm_simple_name, (struct obj *));
|
||||
E const char *FDECL(mimic_obj_name, (struct monst *));
|
||||
E char *FDECL(safe_qbuf, (char *, const char *, const char *, struct obj *,
|
||||
char *(*)(OBJ_P), char *(*)(OBJ_P), const char *));
|
||||
E int FDECL(shiny_obj, (CHAR_P));
|
||||
|
||||
/* ### options.c ### */
|
||||
|
||||
|
||||
@@ -272,8 +272,7 @@ typedef struct sortloot_item Loot;
|
||||
|
||||
/* flags for deliver_obj_to_mon */
|
||||
#define DF_NONE 0x00
|
||||
#define DF_RANDOM2 0x01
|
||||
#define DF_RANDOM3 0x02
|
||||
#define DF_RANDOM 0x01
|
||||
#define DF_ALL 0x04
|
||||
|
||||
/* special mhpmax value when loading bones monster to flag as extinct or
|
||||
|
||||
@@ -410,7 +410,7 @@ boolean with_you;
|
||||
if ((mtmp->mspare1 & MIGR_LEFTOVERS) != 0L) {
|
||||
/* Pick up the rest of the MIGR_TO_SPECIES objects */
|
||||
if (migrating_objs)
|
||||
deliver_obj_to_mon(mtmp, DF_ALL);
|
||||
deliver_obj_to_mon(mtmp, 0, DF_ALL);
|
||||
}
|
||||
|
||||
if (xlocale && wander) {
|
||||
|
||||
16
src/dokick.c
16
src/dokick.c
@@ -1671,20 +1671,22 @@ boolean near_hero;
|
||||
}
|
||||
|
||||
void
|
||||
deliver_obj_to_mon(mtmp, deliverflags)
|
||||
deliver_obj_to_mon(mtmp, cnt, deliverflags)
|
||||
int cnt;
|
||||
struct monst *mtmp;
|
||||
unsigned long deliverflags;
|
||||
{
|
||||
struct obj *otmp, *otmp2;
|
||||
int where, cnt = 0, maxobj = 0;
|
||||
int where, maxobj = 1;
|
||||
|
||||
if (deliverflags & DF_RANDOM3)
|
||||
maxobj = rn2(3) + 1;
|
||||
else if (deliverflags & DF_RANDOM2)
|
||||
maxobj = rn2(2) + 1;
|
||||
else if (deliverflags == DF_NONE)
|
||||
if ((deliverflags & DF_RANDOM) && cnt > 1)
|
||||
maxobj = rnd(cnt);
|
||||
else if (deliverflags & DF_ALL)
|
||||
maxobj = 0;
|
||||
else
|
||||
maxobj = 1;
|
||||
|
||||
cnt = 0;
|
||||
for (otmp = migrating_objs; otmp; otmp = otmp2) {
|
||||
otmp2 = otmp->nobj;
|
||||
where = (int) (otmp->owornmask & 0x7fffL); /* destination code */
|
||||
|
||||
@@ -1391,7 +1391,7 @@ int mmflags;
|
||||
}
|
||||
|
||||
if (allow_minvent && migrating_objs)
|
||||
deliver_obj_to_mon(mtmp, DF_RANDOM2); /* in case there's waiting items */
|
||||
deliver_obj_to_mon(mtmp, 1, DF_NONE); /* in case there's waiting items */
|
||||
|
||||
if (!in_mklev)
|
||||
newsym(mtmp->mx, mtmp->my); /* make sure the mon shows up */
|
||||
|
||||
73
src/mkmaze.c
73
src/mkmaze.c
@@ -632,6 +632,7 @@ char *s;
|
||||
}
|
||||
|
||||
#define ORC_LEADER 1
|
||||
static const char *orcfruit[] = {"paddle cactus", "dwarven root"};
|
||||
|
||||
void
|
||||
migrate_orc(mtmp, mflags)
|
||||
@@ -652,7 +653,7 @@ unsigned long mflags;
|
||||
nlev = max_depth;
|
||||
mtmp->mspare1 = MIGR_LEFTOVERS;
|
||||
} else {
|
||||
nlev = rn2(max_depth - cur_depth) + cur_depth + 1;
|
||||
nlev = rn2((max_depth - cur_depth) + 1) + cur_depth;
|
||||
if (nlev == cur_depth)
|
||||
nlev++;
|
||||
if (nlev > max_depth)
|
||||
@@ -663,6 +664,38 @@ unsigned long mflags;
|
||||
migrate_to_level(mtmp, ledger_no(&dest), MIGR_RANDOM, (coord *) 0);
|
||||
}
|
||||
|
||||
void
|
||||
shiny_orc_stuff(mtmp)
|
||||
struct monst *mtmp;
|
||||
{
|
||||
int gemprob, goldprob, otyp;
|
||||
struct obj *otmp;
|
||||
boolean is_captain = (mtmp->data == &mons[PM_ORC_CAPTAIN]);
|
||||
|
||||
/* probabilities */
|
||||
goldprob = is_captain ? 600 : 300;
|
||||
gemprob = goldprob / 4;
|
||||
if (rn2(1000) < goldprob) {
|
||||
if ((otmp = mksobj(GOLD_PIECE, FALSE, FALSE)) != 0) {
|
||||
otmp->quan = 1L + rnd(goldprob);
|
||||
otmp->owt = weight(otmp);
|
||||
add_to_minv(mtmp, otmp);
|
||||
}
|
||||
}
|
||||
if (rn2(1000) < gemprob) {
|
||||
if ((otmp = mkobj(GEM_CLASS, FALSE)) != 0) {
|
||||
if (otmp->otyp == ROCK)
|
||||
dealloc_obj(otmp);
|
||||
else
|
||||
add_to_minv(mtmp, otmp);
|
||||
}
|
||||
}
|
||||
if (is_captain || !rn2(8)) {
|
||||
otyp = shiny_obj(RING_CLASS);
|
||||
if ((otmp = mksobj(otyp, FALSE, FALSE)) != 0)
|
||||
add_to_minv(mtmp, otmp);
|
||||
}
|
||||
}
|
||||
void
|
||||
migr_booty_item(otyp, gang)
|
||||
int otyp;
|
||||
@@ -673,8 +706,13 @@ const char *gang;
|
||||
if (otmp && gang) {
|
||||
new_oname(otmp, strlen(gang) + 1); /* removes old name if one is present */
|
||||
Strcpy(ONAME(otmp), gang);
|
||||
if (otyp >= TRIPE_RATION && otyp <= TIN)
|
||||
if (otyp >= TRIPE_RATION && otyp <= TIN) {
|
||||
if (otyp == SLIME_MOLD)
|
||||
otmp->spe = fruitadd((char *) orcfruit[rn2(SIZE(orcfruit))],
|
||||
(struct fruit *) 0);
|
||||
otmp->quan += (long) rn2(3);
|
||||
otmp->owt = weight(otmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -699,24 +737,16 @@ stolen_booty(VOID_ARGS)
|
||||
*/
|
||||
|
||||
gang = rndorcname(gang_name);
|
||||
/* create the leader of the orc gang */
|
||||
mtmp = makemon(&mons[PM_ORC_CAPTAIN], 0, 0, MM_NONAME);
|
||||
if (mtmp) {
|
||||
mtmp = christen_monst(mtmp, upstart(gang));
|
||||
mtmp->mpeaceful = 0;
|
||||
migrate_orc(mtmp, ORC_LEADER);
|
||||
}
|
||||
/* create the stuff that the rest of the gang took */
|
||||
migr_booty_item(rn2(2) ? LONG_SWORD : SILVER_SABER, gang);
|
||||
cnt = rn2(3) + 1;
|
||||
/* create the stuff that the gang took */
|
||||
cnt = rnd(4);
|
||||
for (i = 0; i < cnt; ++i)
|
||||
migr_booty_item(rn2(4) ? TALLOW_CANDLE : WAX_CANDLE, gang);
|
||||
cnt = rn2(2) + 1;
|
||||
cnt = rnd(3);
|
||||
for (i = 0; i < cnt; ++i)
|
||||
migr_booty_item(SKELETON_KEY, gang);
|
||||
otyp = rn2((GAUNTLETS_OF_DEXTERITY - LEATHER_GLOVES) + 1) + LEATHER_GLOVES;
|
||||
migr_booty_item(otyp, gang);
|
||||
cnt = rn2(9) + 1;
|
||||
cnt = rnd(10);
|
||||
for (i = 0; i < cnt; ++i) {
|
||||
/* Food items - but no lembas! (or some other weird things) */
|
||||
otyp = rn2((TIN - TRIPE_RATION) + 1) + TRIPE_RATION;
|
||||
@@ -727,6 +757,15 @@ stolen_booty(VOID_ARGS)
|
||||
otyp != HUGE_CHUNK_OF_MEAT && otyp != CORPSE)
|
||||
migr_booty_item(otyp, gang);
|
||||
}
|
||||
migr_booty_item(rn2(2) ? LONG_SWORD : SILVER_SABER, gang);
|
||||
/* create the leader of the orc gang */
|
||||
mtmp = makemon(&mons[PM_ORC_CAPTAIN], 0, 0, MM_NONAME);
|
||||
if (mtmp) {
|
||||
mtmp = christen_monst(mtmp, upstart(gang));
|
||||
mtmp->mpeaceful = 0;
|
||||
shiny_orc_stuff(mtmp);
|
||||
migrate_orc(mtmp, ORC_LEADER);
|
||||
}
|
||||
/* Make most of the orcs on the level be part of the invading gang */
|
||||
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
|
||||
if (DEADMONSTER(mtmp))
|
||||
@@ -751,14 +790,16 @@ stolen_booty(VOID_ARGS)
|
||||
* members of the invading gang until they get their spoils assigned
|
||||
* to the inventory; handled during that assignment.
|
||||
*/
|
||||
cnt = rn2(7) + 5;
|
||||
cnt = rn2(10) + 5;
|
||||
for (i = 0; i < cnt; ++i) {
|
||||
int mtyp;
|
||||
|
||||
mtyp = rn2((PM_ORC_SHAMAN - PM_ORC) + 1) + PM_ORC;
|
||||
mtmp = makemon(&mons[mtyp], 0, 0, MM_NONAME);
|
||||
if (mtmp)
|
||||
if (mtmp) {
|
||||
shiny_orc_stuff(mtmp);
|
||||
migrate_orc(mtmp, 0UL);
|
||||
}
|
||||
}
|
||||
|
||||
ransacked = 0;
|
||||
|
||||
@@ -2753,6 +2753,13 @@ char oclass;
|
||||
return STRANGE_OBJECT;
|
||||
}
|
||||
|
||||
int
|
||||
shiny_obj(oclass)
|
||||
char oclass;
|
||||
{
|
||||
return (int) rnd_otyp_by_namedesc("shiny", oclass);
|
||||
}
|
||||
|
||||
/*
|
||||
* Return something wished for. Specifying a null pointer for
|
||||
* the user request string results in a random object. Otherwise,
|
||||
|
||||
Reference in New Issue
Block a user