-/* NetHack 3.6 polyself.c $NHDT-Date: 1520797126 2018/03/11 19:38:46 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.117 $ */
+/* NetHack 3.6 polyself.c $NHDT-Date: 1556497911 2019/04/29 00:31:51 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.132 $ */
/* Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
/* NetHack may be freely redistributed. See license for details. */
/* JNetHack Copyright */
/* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */
-/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */
+/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2019 */
/* JNetHack may be freely redistributed. See license for details. */
/*
STATIC_DCL void FDECL(polyman, (const char *, const char *));
STATIC_DCL void NDECL(break_armor);
STATIC_DCL void FDECL(drop_weapon, (int));
-STATIC_DCL void NDECL(uunstick);
STATIC_DCL int FDECL(armor_to_dragon, (int));
STATIC_DCL void NDECL(newman);
STATIC_DCL void NDECL(polysense);
set_uasmon()
{
struct permonst *mdat = &mons[u.umonnum];
- int new_speed, old_speed = youmonst.data ? youmonst.data->mmove : 0;
- set_mon_data(&youmonst, mdat, 0);
+ set_mon_data(&youmonst, mdat);
#define PROPSET(PropIndx, ON) \
do { \
PROPSET(HALLUC_RES, dmgtype(mdat, AD_HALU));
PROPSET(SEE_INVIS, perceives(mdat));
PROPSET(TELEPAT, telepathic(mdat));
- PROPSET(INFRAVISION, infravision(mdat));
+ /* note that Infravision uses mons[race] rather than usual mons[role] */
+ PROPSET(INFRAVISION, infravision(Upolyd ? mdat : &mons[urace.malenum]));
PROPSET(INVIS, pm_invisible(mdat));
PROPSET(TELEPORT, can_teleport(mdat));
PROPSET(TELEPORT_CONTROL, control_teleport(mdat));
PROPSET(LEVITATION, is_floater(mdat));
- PROPSET(FLYING, is_flyer(mdat));
+ /* floating eye is the only 'floater'; it is also flagged as a 'flyer';
+ suppress flying for it so that enlightenment doesn't confusingly
+ show latent flight capability always blocked by levitation */
+ PROPSET(FLYING, (is_flyer(mdat) && !is_floater(mdat)));
PROPSET(SWIMMING, is_swimmer(mdat));
/* [don't touch MAGICAL_BREATHING here; both Amphibious and Breathless
key off of it but include different monster forms...] */
float_vs_flight(); /* maybe toggle (BFlying & I_SPECIAL) */
polysense();
- if (youmonst.movement) {
- new_speed = mdat->mmove;
- /* prorate unused movement if new form is slower so that
- it doesn't get extra moves leftover from previous form;
- if new form is faster, leave unused movement as is */
- if (new_speed < old_speed)
- youmonst.movement = new_speed * youmonst.movement / old_speed;
- }
-
#ifdef STATUS_HILITES
- status_initialize(REASSESS_ONLY);
+ if (VIA_WINDOWPORT())
+ status_initialize(REASSESS_ONLY);
#endif
}
void
float_vs_flight()
{
- /* floating overrides flight; normally float_up() and float_down()
- handle this, but sometimes they're skipped */
- if (HLevitation || ELevitation)
+ boolean stuck_in_floor = (u.utrap && u.utraptype != TT_PIT);
+
+ /* floating overrides flight; so does being trapped in the floor */
+ if ((HLevitation || ELevitation)
+ || ((HFlying || EFlying) && stuck_in_floor))
BFlying |= I_SPECIAL;
else
BFlying &= ~I_SPECIAL;
+ /* being trapped on the ground (bear trap, web, molten lava survived
+ with fire resistance, former lava solidified via cold, tethered
+ to a buried iron ball) overrides floating--the floor is reachable */
+ if ((HLevitation || ELevitation) && stuck_in_floor)
+ BLevitation |= I_SPECIAL;
+ else
+ BLevitation &= ~I_SPECIAL;
context.botl = TRUE;
}
const char *fmt, *arg;
{
boolean sticky = (sticks(youmonst.data) && u.ustuck && !u.uswallow),
- was_mimicking = (youmonst.m_ap_type == M_AP_OBJECT);
+ was_mimicking = (U_AP_TYPE == M_AP_OBJECT);
boolean was_blind = !!Blind;
if (Upolyd) {
if (u.twoweap && !could_twoweap(youmonst.data))
untwoweapon();
- if (u.utraptype == TT_PIT && u.utrap) {
- u.utrap = rn1(6, 2); /* time to escape resets */
+ if (u.utrap && u.utraptype == TT_PIT) {
+ set_utrap(rn1(6, 2), TT_PIT); /* time to escape resets */
}
if (was_blind && !Blind) { /* reverting from eyeless */
Blinded = 1L;
}
/* if stuck mimicking gold, stop immediately */
- if (multi < 0 && youmonst.m_ap_type == M_AP_OBJECT
+ if (multi < 0 && U_AP_TYPE == M_AP_OBJECT
&& youmonst.data->mlet != S_MIMIC)
unmul("");
/* if becoming a non-mimic, stop mimicking anything */
drop_weapon(1);
(void) hideunder(&youmonst);
- if (u.utraptype == TT_PIT && u.utrap) {
- u.utrap = rn1(6, 2); /* time to escape resets */
+ if (u.utrap && u.utraptype == TT_PIT) {
+ set_utrap(rn1(6, 2), TT_PIT); /* time to escape resets */
}
if (was_blind && !Blind) { /* previous form was eyeless */
Blinded = 1L;
}
newsym(u.ux, u.uy); /* Change symbol */
+ /* [note: this 'sticky' handling is only sufficient for changing from
+ grabber to engulfer or vice versa because engulfing by poly'd hero
+ always ends immediately so won't be in effect during a polymorph] */
if (!sticky && !u.uswallow && u.ustuck && sticks(youmonst.data))
u.ustuck = 0;
else if (sticky && !sticks(youmonst.data))
uunstick();
+
if (u.usteed) {
if (touch_petrifies(u.usteed->data) && !Stone_resistance && rnl(3)) {
#if 0 /*JP:T*/
/*JP
pline(use_thec, monsterc, "use your breath weapon");
*/
- pline(use_thec,monsterc, "\91§\82ð\93f\82«\82©\82¯\82é");
+ pline(use_thec, monsterc, "\91§\82ð\93f\82«\82©\82¯\82é");
if (attacktype(youmonst.data, AT_SPIT))
/*JP
pline(use_thec, monsterc, "spit venom");
*/
- pline(use_thec,monsterc, "\93Å\82ð\93f\82");
+ pline(use_thec, monsterc, "\93Å\82ð\93f\82");
if (youmonst.data->mlet == S_NYMPH)
/*JP
pline(use_thec, monsterc, "remove an iron ball");
*/
- pline(use_thec,monsterc, "\93S\8b\85\82ð\82Í\82¸\82·");
+ pline(use_thec, monsterc, "\93S\8b\85\82ð\82Í\82¸\82·");
if (attacktype(youmonst.data, AT_GAZE))
/*JP
pline(use_thec, monsterc, "gaze at monsters");
*/
- pline(use_thec,monsterc, "\89ö\95¨\82ðáÉ\82Þ");
+ pline(use_thec, monsterc, "\89ö\95¨\82ðáÉ\82Þ");
if (is_hider(youmonst.data))
/*JP
pline(use_thec, monsterc, "hide");
*/
- pline(use_thec,monsterc, "\89B\82ê\82é");
+ pline(use_thec, monsterc, "\89B\82ê\82é");
if (is_were(youmonst.data))
/*JP
pline(use_thec, monsterc, "summon help");
*/
- pline(use_thec,monsterc, "\92\87\8aÔ\82ð\8f¢\8a«\82·\82é");
+ pline(use_thec, monsterc, "\92\87\8aÔ\82ð\8f¢\8a«\82·\82é");
if (webmaker(youmonst.data))
/*JP
pline(use_thec, monsterc, "spin a web");
*/
- pline(use_thec,monsterc, "\82\82à\82Ì\91\83\82ð\92£\82é");
+ pline(use_thec, monsterc, "\82\82à\82Ì\91\83\82ð\92£\82é");
if (u.umonnum == PM_GREMLIN)
/*JP
pline(use_thec, monsterc, "multiply in a fountain");
*/
- pline(use_thec,monsterc, "\90ò\82Ì\92\86\82Å\95ª\97ô\82·\82é");
+ pline(use_thec, monsterc, "\90ò\82Ì\92\86\82Å\95ª\97ô\82·\82é");
if (is_unicorn(youmonst.data))
/*JP
pline(use_thec, monsterc, "use your horn");
*/
pline(use_thec, monsterc, "\8ep\82ð\95Ï\82¦\82é");
- if (lays_eggs(youmonst.data) && flags.female)
-/*JP
- pline(use_thec, "sit", "lay an egg");
-*/
+ if (lays_eggs(youmonst.data) && flags.female &&
+ !(youmonst.data == &mons[PM_GIANT_EEL]
+ || youmonst.data == &mons[PM_ELECTRIC_EEL]))
+#if 0 /*JP*/
+ pline(use_thec, "sit",
+ eggs_in_water(youmonst.data) ?
+ "spawn in the water" : "lay an egg");
+#else /* \93ú\96{\8cê\82Å\82Í\90\85\92\86\82Å\82à\81u\97\91\82ð\8eY\82Þ\81v\82Å\96â\91è\82È\82¢ */
pline(use_thec, "sit", "\97\91\82ð\8eY\82Þ");
+#endif
}
/* you now know what an egg of your type looks like */
spoteffects(TRUE);
if (Passes_walls && u.utrap
&& (u.utraptype == TT_INFLOOR || u.utraptype == TT_BURIEDBALL)) {
- u.utrap = 0;
- if (u.utraptype == TT_INFLOOR)
+ if (u.utraptype == TT_INFLOOR) {
/*JP
pline_The("rock seems to no longer trap you.");
*/
pline("\8aâ\82É\95Â\82¶\8d\9e\82ß\82ç\82ê\82é\82±\82Æ\82Í\82È\82¢\82¾\82ë\82¤\81D");
- else {
+ } else {
/*JP
pline_The("buried ball is no longer bound to you.");
*/
pline_The("\96\84\82Ü\82Á\82½\8b\85\82ª\8e×\96\82\82É\82È\82é\82±\82Æ\82Í\82È\82¢\82¾\82ë\82¤\81D");
buried_ball_to_freedom();
}
+ reset_utrap(TRUE);
} else if (likes_lava(youmonst.data) && u.utrap
&& u.utraptype == TT_LAVA) {
- u.utrap = 0;
/*JP
pline_The("%s now feels soothing.", hliquid("lava"));
*/
pline_The("%s\82ª\90¸\90_\82ð\97\8e\82¿\82Â\82©\82¹\82Ä\82\82ê\82é\81D", hliquid("\97n\8aâ"));
+ reset_utrap(TRUE);
}
if (amorphous(youmonst.data) || is_whirly(youmonst.data)
|| unsolid(youmonst.data)) {
u.utraptype == TT_WEB ? "\82\82à\82Ì\91\83" : "\8cF\82Ìã©");
#endif
/* probably should burn webs too if PM_FIRE_ELEMENTAL */
- u.utrap = 0;
+ reset_utrap(TRUE);
}
if (webmaker(youmonst.data) && u.utrap && u.utraptype == TT_WEB) {
/*JP
You("orient yourself on the web.");
*/
You("\82\82à\82Ì\91\83\82É\93K\89\9e\82µ\82½\81D");
- u.utrap = 0;
+ reset_utrap(TRUE);
}
check_strangling(TRUE); /* maybe start strangling */
void
rehumanize()
{
+ boolean was_flying = (Flying != 0);
+
/* You can't revert back while unchanging */
if (Unchanging) {
if (u.mh < 1) {
context.botl = 1;
vision_full_recalc = 1;
(void) encumber_msg();
-
+ if (was_flying && !Flying && u.usteed)
+ You("and %s return gently to the %s.",
+ mon_nam(u.usteed), surface(u.ux, u.uy));
retouch_equipment(2);
if (!uarmg)
selftouch(no_longer_petrify_resistant);
break;
default:
impossible("bad attack type in dospit");
- /* fall through */
+ /*FALLTHRU*/
case AD_ACID:
otmp = mksobj(ACID_VENOM, TRUE, FALSE);
break;
You_cant("see where to gaze at %s.", Monnam(mtmp));
*/
You("%s\82Í\8c©\82¦\82È\82¢\82Ì\82Å\81C\82É\82ç\82ß\82È\82¢", Monnam(mtmp));
- } else if (mtmp->m_ap_type == M_AP_FURNITURE
- || mtmp->m_ap_type == M_AP_OBJECT) {
+ } else if (M_AP_TYPE(mtmp) == M_AP_FURNITURE
+ || M_AP_TYPE(mtmp) == M_AP_OBJECT) {
looked--;
continue;
} else if (flags.safe_dog && mtmp->mtame && !Confusion) {
(void) destroy_mitem(mtmp, SPBOOK_CLASS, AD_FIRE);
if (dmg)
mtmp->mhp -= dmg;
- if (mtmp->mhp <= 0)
+ if (DEADMONSTER(mtmp))
killed(mtmp);
}
/* For consistency with passive() in uhitm.c, this only
: "\89ö\95¨\82ð\82Â\82©\82ñ\82Å\82¢\82é");
#endif
if (u.uundetected
- || (ismimic && youmonst.m_ap_type != M_AP_NOTHING)) {
+ || (ismimic && U_AP_TYPE != M_AP_NOTHING)) {
u.uundetected = 0;
youmonst.m_ap_type = M_AP_NOTHING;
newsym(u.ux, u.uy);
* else make youhiding() give smarter messages at such spots.
*/
- if (u.uundetected || (ismimic && youmonst.m_ap_type != M_AP_NOTHING)) {
+ if (u.uundetected || (ismimic && U_AP_TYPE != M_AP_NOTHING)) {
youhiding(FALSE, 1); /* "you are already hiding" */
return 0;
}
: telepathic(mtmp->data) ? "\90ö\8dÝ\93I\90¸\90_\82É\93ü" : "\90[\91w\88Ó\8e¯\82É\90ö");
#endif
mtmp->mhp -= rnd(15);
- if (mtmp->mhp <= 0)
+ if (DEADMONSTER(mtmp))
killed(mtmp);
}
}
return 1;
}
-STATIC_OVL void
+void
uunstick()
{
+ if (!u.ustuck) {
+ impossible("uunstick: no ustuck?");
+ return;
+ }
/*JP
pline("%s is no longer in your clutches.", Monnam(u.ustuck));
*/
"spine", "toe", "hair", "blood",
"lung", "nose", "stomach" },
#else
- *humanoid_parts[] = { "\98r", "\96Ú", "\8aç", "\8ew",
+ *humanoid_parts[] = {
+ "\98r", "\96Ú", "\8aç", "\8ew",
"\8ew\90æ", "\91«", "\8eè", "\8eè\82É\82·\82é",
"\93ª", "\91«", "\82ß\82Ü\82¢\82ª\82µ\82½", "\8eñ",
"\94w\8d\9c", "\92Ü\90æ", "\94¯", "\8c\8c",
"ripples", "juices", "surface", "sensor",
"stomach" },
#else
- *jelly_parts[] = { "\8b[\8e\97\90G\8eè", "\8d\95\82¢\94Á\93_", "\91O\96Ê",
- "\8b[\8e\97\90G\8eè\82Ì\90æ", "\8b[\8e\97\90G\8eè",
- "\8b[\8e\97\90G\8eè\82Ì\8a²", "\90G\8eè", "\88¬\82é",
- "\94]\82Ì\97Ì\88æ", "\89º\95û\82Ì\8b[\8e\97\90G\8eè", "\82Ë\82Î\82Ë\82Î\82µ\82Ä\82«\82½",
- "\92\86\8aÔ\97Ì\88æ", "\95\\96Ê", "\8b[\8e\97\90G\8eè",
- "\94g\96ä", "\91Ì\89t", "\95\\96Ê", "\8a´\8ao\8aí",
- "\88Ý"},
+ *jelly_parts[] = {
+ "\8b[\8e\97\90G\8eè", "\8d\95\82¢\94Á\93_", "\91O\96Ê",
+ "\8b[\8e\97\90G\8eè\82Ì\90æ", "\8b[\8e\97\90G\8eè",
+ "\8b[\8e\97\90G\8eè\82Ì\8a²", "\90G\8eè", "\88¬\82é",
+ "\94]\82Ì\97Ì\88æ", "\89º\95û\82Ì\8b[\8e\97\90G\8eè", "\82Ë\82Î\82Ë\82Î\82µ\82Ä\82«\82½",
+ "\92\86\8aÔ\97Ì\88æ", "\95\\96Ê", "\8b[\8e\97\90G\8eè",
+ "\94g\96ä", "\91Ì\89t", "\95\\96Ê", "\8a´\8ao\8aí",
+ "\88Ý"},
#endif
#if 0 /*JP*/
*animal_parts[] = { "forelimb", "eye", "face",
"blood", "lung", "nose",
"stomach" },
#else
- *animal_parts[] = { "\91O\91«", "\96Ú", "\8aç",
- "\91O\92Ü", "\92Ü\90æ", "\8cã\92Ü",
- "\91O\92Ü", "\82Ð\82Á\82©\82¯\82é", "\93ª",
- "\8cã\91«", "\82ß\82Ü\82¢\82ª\82µ\82½", "\8eñ",
- "\94w\8d\9c", "\8cã\92Ü\90æ", "\96Ñ\94ç",
- "\8c\8c", "\94x", "\95@",
- "\88Ý"},
+ *animal_parts[] = {
+ "\91O\91«", "\96Ú", "\8aç",
+ "\91O\92Ü", "\92Ü\90æ", "\8cã\92Ü",
+ "\91O\92Ü", "\82Ð\82Á\82©\82¯\82é", "\93ª",
+ "\8cã\91«", "\82ß\82Ü\82¢\82ª\82µ\82½", "\8eñ",
+ "\94w\8d\9c", "\8cã\92Ü\90æ", "\96Ñ\94ç",
+ "\8c\8c", "\94x", "\95@",
+ "\88Ý"},
#endif
#if 0 /*JP*/
*bird_parts[] = { "wing", "eye", "face", "wing",
"spine", "toe", "feathers", "blood",
"lung", "bill", "stomach" },
#else
- *bird_parts[] = { "\97\83", "\96Ú", "\8aç", "\97\83",
- "\97\83\82Ì\90æ", "\91«", "\97\83", "\97\83\82É\82Æ\82é",
- "\93ª", "\91«", "\82ß\82Ü\82¢\82ª\82µ\82½", "\8eñ",
- "\94w\8d\9c", "\92Ü\90æ", "\89H\96Ñ", "\8c\8c",
- "\94x", "\82\82¿\82Î\82µ", "\88Ý" },
+ *bird_parts[] = {
+ "\97\83", "\96Ú", "\8aç", "\97\83",
+ "\97\83\82Ì\90æ", "\91«", "\97\83", "\97\83\82É\82Æ\82é",
+ "\93ª", "\91«", "\82ß\82Ü\82¢\82ª\82µ\82½", "\8eñ",
+ "\94w\8d\9c", "\92Ü\90æ", "\89H\96Ñ", "\8c\8c",
+ "\94x", "\82\82¿\82Î\82µ", "\88Ý" },
#endif
#if 0 /*JP*/
*horse_parts[] = { "foreleg", "eye", "face",
"blood", "lung", "nose",
"stomach" },
#else
- *horse_parts[] = { "\91O\91«", "\96Ú", "\8aç",
- "\91O\92û", "\92û", "\8cã\92û",
- "\91O\92Ü", "\92û\82É\82Í\82³\82Þ", "\93ª",
- "\8cã\91«", "\82ß\82Ü\82¢\82ª\82µ\82½", "\8eñ",
- "\94w\8d\9c", "\8cã\92Ü\90æ", "\82½\82Ä\82ª\82Ý",
- "\8c\8c", "\94x", "\95@",
- "\88Ý" },
+ *horse_parts[] = {
+ "\91O\91«", "\96Ú", "\8aç",
+ "\91O\92û", "\92û", "\8cã\92û",
+ "\91O\92Ü", "\92û\82É\82Í\82³\82Þ", "\93ª",
+ "\8cã\91«", "\82ß\82Ü\82¢\82ª\82µ\82½", "\8eñ",
+ "\94w\8d\9c", "\8cã\92Ü\90æ", "\82½\82Ä\82ª\82Ý",
+ "\8c\8c", "\94x", "\95@",
+ "\88Ý" },
#endif
#if 0 /*JP*/
*sphere_parts[] = { "appendage", "optic nerve", "body", "tentacle",
"lower tentacle tip", "cilia", "life force",
"retina", "olfactory nerve", "interior" },
#else
- *sphere_parts[] = { "\93Ë\8bN", "\8e\8b\8ao\90_\8co", "\91Ì", "\90G\8eè",
+ *sphere_parts[] = {
+ "\93Ë\8bN", "\8e\8b\8ao\90_\8co", "\91Ì", "\90G\8eè",
"\90G\8eè\82Ì\90æ", "\89º\82Ì\93Ë\8bN", "\90G\8eè",
"\90G\8eè\82É\8e\9d\82Â", "\91Ì", "\89º\82Ì\90G\8eè",
"\89ñ\93]\82µ\82½", "\92\86\90S\90ü", "\91Ì",
"juices", "gill", "gill",
"interior" },
#else
- *fungus_parts[] = { "\8bÛ\8e\85\91Ì", "\8e\8b\8ao\97Ì\88æ", "\91O",
+ *fungus_parts[] = {
+ "\8bÛ\8e\85\91Ì", "\8e\8b\8ao\97Ì\88æ", "\91O",
"\8bÛ\8e\85", "\8bÛ\8e\85", "\8dª",
"\90G\8eè", "\90G\8eè\82É\82©\82ç\82Ý\82Â\82¯\82é", "\8eP",
"\8dª\8cs", "\8d¬\97\90\82·\82é", "\8e²",
"life force", "center", "leading edge",
"interior" },
#else
- *vortex_parts[] = { "\97Ì\88æ", "\96Ú", "\91O",
+ *vortex_parts[] = {
+ "\97Ì\88æ", "\96Ú", "\91O",
"\8f¬\82³\82¢\97¬\82ê", "\8f¬\82³\82¢\97¬\82ê", "\89º\95\94\82Ì\97¬\82ê",
"\89Q\8aª", "\89Q\82É\8aª\82", "\89Q\82Ì\92\86\90S",
"\89º\95\94\82Ì\97¬\82ê", "\8d¬\97\90\82µ\82½", "\92\86\90S\95\94",
"scales", "blood", "lung", "forked tongue",
"stomach" },
#else
- *snake_parts[] = { "\91Þ\89»\82µ\82½\91«", "\96Ú", "\8aç", "\91å\82«\82È\97Ø",
+ *snake_parts[] = {
+ "\91Þ\89»\82µ\82½\91«", "\96Ú", "\8aç", "\91å\82«\82È\97Ø",
"\91å\82«\82È\97Ø\82Ì\90æ", "\8cã\95\94\95ª", "\97Ø\82Ì\8c\84\8aÔ",
"\97Ø\82Ì\8c\84\8aÔ\82É\82Â\82¯\82é", "\93ª", "\8cã\95\94\95ª",
"\82ß\82Ü\82¢\82ª\82µ\82½", "\8eñ", "\91Ì", "\8cã\95\94\95ª\82Ì\8aZ",
"length", "posterior setae", "setae", "blood",
"skin", "prostomium", "stomach" },
#else
- *worm_parts[] = { "\91O\8bæ", "\8a´\8cõ\90«\8d×\96E",
- "\8aÂ\91Ñ", "\8ap", "\8ap", "\8cã\8bæ",
- "\90ß", "\90ß\82É\82Â\82¯\82é", "\91O\8bæ",
- "\8cã\95\94", "\90L\82Ñ\82·\82¬\82½", "\8aÂ\91Ñ",
- "\91Ì", "\8cã\95\94\82Ì\8ap", "\8ap", "\8c\8c",
- "\94ç\95\86", "\8cû\91O\97t", "\88Ý" },
+ *worm_parts[] = {
+ "\91O\8bæ", "\8a´\8cõ\90«\8d×\96E",
+ "\8aÂ\91Ñ", "\8ap", "\8ap", "\8cã\8bæ",
+ "\90ß", "\90ß\82É\82Â\82¯\82é", "\91O\8bæ",
+ "\8cã\95\94", "\90L\82Ñ\82·\82¬\82½", "\8aÂ\91Ñ",
+ "\91Ì", "\8cã\95\94\82Ì\8ap", "\8ap", "\8c\8c",
+ "\94ç\95\86", "\8cû\91O\97t", "\88Ý" },
#endif
#if 0 /*JP*/
*fish_parts[] = { "fin", "eye", "premaxillary", "pelvic axillary",
"dorsal fin", "caudal fin", "scales", "blood",
"gill", "nostril", "stomach" };
#else
- *fish_parts[] = { "\82Ð\82ê", "\96Ú", "\8aç", "\82Ð\82ê\82Ì\90æ",
+ *fish_parts[] = {
+ "\82Ð\82ê", "\96Ú", "\8aç", "\82Ð\82ê\82Ì\90æ",
"\82Ð\82ê\82Ì\90æ", "\94ö\82Ñ\82ê", "\8b¹\82Ð\82ê", "\82Ð\82ê\82Å\8e\9d\82Â",
"\93ª", "\94ö\95¿", "\82ß\82Ü\82¢\82ª\82µ\82½", "\82¦\82ç",
"\94w\82Ñ\82ê", "\94ö\82Ñ\82ê", "\97Ø", "\8c\8c",
: "empty"; /* golems plus vortices */
#else
return !nonliving(youmonst.data)
- ? "\8e\80\82ñ\82¾" /* living, including demons */
+ ? "\8e\80\82ñ\82¾" /* \90¶\95¨\82Æ\88«\96\82 */
: !weirdnonliving(youmonst.data)
- ? "\94j\89ó\82³\82ê\82½" /* undead plus manes */
- : "\82È\82\82È\82Á\82½"; /* golems plus vortices */
+ ? "\94j\89ó\82³\82ê\82½" /* \83A\83\93\83f\83b\83h\82Æ\96S\97ì */
+ : "\82È\82\82È\82Á\82½"; /* \83S\81[\83\8c\83\80\82Æ\89Q */
#endif
}