fix github issue #515 - grappling hook internals

Grappling hook used to have an undiscovered description of "iron hook"
and when that was removed, the oc_name_known flag was left set as if
for something that could become discovered.  I'm not sure whether that
made any difference anywhere.

Gold piece was in a similar situation, except that it wasn't because
an alternate description had been present and then removed.  That one
definitely didn't make any difference anywhere.

Fixes #515
This commit is contained in:
PatR
2021-05-20 18:56:03 -07:00
parent 5ad45fc696
commit d6cafdc527
2 changed files with 22 additions and 5 deletions

View File

@@ -167,14 +167,14 @@ init_objects(void)
break;
}
}
check:
checkprob:
sum = 0;
for (i = first; i < last; i++)
sum += objects[i].oc_prob;
if (sum == 0) {
for (i = first; i < last; i++)
objects[i].oc_prob = (1000 + i - first) / (last - first);
goto check;
goto checkprob;
}
if (sum != 1000)
error("init-prob error for class %d (%d%%)", oclass, sum);
@@ -191,6 +191,23 @@ init_objects(void)
if (!g.bases[last])
g.bases[last] = g.bases[last + 1];
/* check objects[].oc_name_known */
for (i = 0; i < NUM_OBJECTS; ++i) {
int nmkn = objects[i].oc_name_known != 0;
if (!OBJ_DESCR(objects[i]) ^ nmkn) {
if (iflags.sanity_check) {
impossible(
"obj #%d (%s) name is %s despite%s alternate description",
i, OBJ_NAME(objects[i]),
nmkn ? "pre-known" : "not known",
nmkn ? "" : " no");
}
/* repair the mistake and keep going */
objects[i].oc_name_known = nmkn ? 0 : 1;
}
}
/* shuffle descriptions */
shuffle_all();
#ifdef USE_TILES

View File

@@ -709,7 +709,7 @@ TOOL("drum of earthquake","drum", 0, 0, 1, 1, 2, 25, 25, LEATHER, HI_LEATHER),
WEPTOOL("pick-axe", None,
1, 0, 0, 20, 100, 50, 6, 3, WHACK, P_PICK_AXE, IRON, HI_METAL),
WEPTOOL("grappling hook", None,
0, 0, 0, 5, 30, 50, 2, 6, WHACK, P_FLAIL, IRON, HI_METAL),
1, 0, 0, 5, 30, 50, 2, 6, WHACK, P_FLAIL, IRON, HI_METAL),
WEPTOOL("unicorn horn", None,
1, 1, 1, 0, 20, 100, 12, 12, PIERCE, P_UNICORN_HORN,
BONE, CLR_WHITE),
@@ -1054,8 +1054,8 @@ WAND(None, "jeweled", 0, 150, 1, 0, IRON, HI_MINERAL),
/* coins ... - so far, gold is all there is */
#define COIN(name,prob,metal,worth) \
OBJECT(OBJ(name, None), \
BITS(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, metal), \
OBJECT(OBJ(name, None), \
BITS(1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, metal), \
0, COIN_CLASS, prob, 0, 1, worth, 0, 0, 0, 0, 0, HI_GOLD)
COIN("gold piece", 1000, GOLD, 1),
#undef COIN