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:
+19
-2
@@ -167,14 +167,14 @@ init_objects(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
check:
|
checkprob:
|
||||||
sum = 0;
|
sum = 0;
|
||||||
for (i = first; i < last; i++)
|
for (i = first; i < last; i++)
|
||||||
sum += objects[i].oc_prob;
|
sum += objects[i].oc_prob;
|
||||||
if (sum == 0) {
|
if (sum == 0) {
|
||||||
for (i = first; i < last; i++)
|
for (i = first; i < last; i++)
|
||||||
objects[i].oc_prob = (1000 + i - first) / (last - first);
|
objects[i].oc_prob = (1000 + i - first) / (last - first);
|
||||||
goto check;
|
goto checkprob;
|
||||||
}
|
}
|
||||||
if (sum != 1000)
|
if (sum != 1000)
|
||||||
error("init-prob error for class %d (%d%%)", oclass, sum);
|
error("init-prob error for class %d (%d%%)", oclass, sum);
|
||||||
@@ -191,6 +191,23 @@ init_objects(void)
|
|||||||
if (!g.bases[last])
|
if (!g.bases[last])
|
||||||
g.bases[last] = g.bases[last + 1];
|
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 descriptions */
|
||||||
shuffle_all();
|
shuffle_all();
|
||||||
#ifdef USE_TILES
|
#ifdef USE_TILES
|
||||||
|
|||||||
+3
-3
@@ -709,7 +709,7 @@ TOOL("drum of earthquake","drum", 0, 0, 1, 1, 2, 25, 25, LEATHER, HI_LEATHER),
|
|||||||
WEPTOOL("pick-axe", None,
|
WEPTOOL("pick-axe", None,
|
||||||
1, 0, 0, 20, 100, 50, 6, 3, WHACK, P_PICK_AXE, IRON, HI_METAL),
|
1, 0, 0, 20, 100, 50, 6, 3, WHACK, P_PICK_AXE, IRON, HI_METAL),
|
||||||
WEPTOOL("grappling hook", None,
|
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,
|
WEPTOOL("unicorn horn", None,
|
||||||
1, 1, 1, 0, 20, 100, 12, 12, PIERCE, P_UNICORN_HORN,
|
1, 1, 1, 0, 20, 100, 12, 12, PIERCE, P_UNICORN_HORN,
|
||||||
BONE, CLR_WHITE),
|
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 */
|
/* coins ... - so far, gold is all there is */
|
||||||
#define COIN(name,prob,metal,worth) \
|
#define COIN(name,prob,metal,worth) \
|
||||||
OBJECT(OBJ(name, None), \
|
OBJECT(OBJ(name, None), \
|
||||||
BITS(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, metal), \
|
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)
|
0, COIN_CLASS, prob, 0, 1, worth, 0, 0, 0, 0, 0, HI_GOLD)
|
||||||
COIN("gold piece", 1000, GOLD, 1),
|
COIN("gold piece", 1000, GOLD, 1),
|
||||||
#undef COIN
|
#undef COIN
|
||||||
|
|||||||
Reference in New Issue
Block a user