in minihack/agent/common/util/id_pairs.py [0:0]
def id_pairs_func(glyph):
result = glyph_to_mon(glyph)
if result != NO_GLYPH:
return result
if glyph_is_invisible(glyph):
return NUMMONS
if glyph_is_body(glyph):
return glyph - GLYPH_BODY_OFF
offset = NUMMONS + 1
# CORPSE handled by glyph_is_body; STATUE handled by glyph_to_mon.
result = glyph_to_obj(glyph)
if result != NO_GLYPH:
return result + offset
offset += NUM_OBJECTS
# I don't understand glyph_to_cmap and/or the GLYPH_EXPLODE_OFF definition
# with MAXPCHARS - MAXEXPCHARS.
if GLYPH_CMAP_OFF <= glyph < GLYPH_EXPLODE_OFF:
return glyph - GLYPH_CMAP_OFF + offset
offset += MAXPCHARS - MAXEXPCHARS
if GLYPH_EXPLODE_OFF <= glyph < GLYPH_ZAP_OFF:
return (glyph - GLYPH_EXPLODE_OFF) // MAXEXPCHARS + offset
offset += EXPL_MAX
if GLYPH_ZAP_OFF <= glyph < GLYPH_SWALLOW_OFF:
return ((glyph - GLYPH_ZAP_OFF) >> 2) + offset
offset += NUM_ZAP
if GLYPH_SWALLOW_OFF <= glyph < GLYPH_WARNING_OFF:
return offset
offset += 1
result = glyph_to_warning(glyph)
if result != NO_GLYPH:
return result + offset