From 9f4fc49284c5cfbb32e05ac08f1cd40cce1c6f61 Mon Sep 17 00:00:00 2001 From: SHIRAKATA Kentaro Date: Tue, 23 Oct 2018 16:54:38 +0900 Subject: [PATCH] improve wishing --- src/objnam.c | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 126 insertions(+), 4 deletions(-) diff --git a/src/objnam.c b/src/objnam.c index a58d707..4522da5 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -3255,6 +3255,7 @@ struct o_range { int f_o_range, l_o_range; }; +#if 0 /*JP*//*•”•ª“I‚ȃWƒƒƒ“ƒ‹Žw’è‚Å‚ÌŠè‚¢—pB“ú–{Œê‚Å‚Í‚Æ‚è‚ ‚¦‚¸‚µ‚È‚¢*/ /* wishable subranges of objects */ STATIC_OVL NEARDATA const struct o_range o_ranges[] = { { "bag", TOOL_CLASS, SACK, BAG_OF_TRICKS }, @@ -3279,6 +3280,7 @@ STATIC_OVL NEARDATA const struct o_range o_ranges[] = { { "gray stone", GEM_CLASS, LUCKSTONE, FLINT }, { "grey stone", GEM_CLASS, LUCKSTONE, FLINT }, }; +#endif #if 0 /*JP*//*not used*/ @@ -3500,6 +3502,18 @@ struct obj *no_wish; while (*bp == ' ') bp++; l = 0; +#if 1 /*JP*//* Œã‚ɐ”ŽŒ‚ª‚ ‚é‚Æ‚«‚͍폜 */ + if(!strncmp(bp, "û‚Ì", l = 4) || + !strncmp(bp, "–{‚Ì", l = 4) || + !strncmp(bp, "’…‚Ì", l = 4) || + !strncmp(bp, "ŒÂ‚Ì", l = 4) || + !strncmp(bp, "–‡‚Ì", l = 4) || + !strncmp(bp, "‚‚Ì", l = 4) || + !strncmp(bp, "‚Ì", l = 2)) + ; + else + l = 0; +#endif } else if (*bp == '+' || *bp == '-') { spesgn = (*bp++ == '+') ? 1 : -1; spe = atoi(bp); @@ -3557,18 +3571,36 @@ struct obj *no_wish; || !strncmpi(bp, "”R‚¦‚È‚¢", l = 8)) { #endif erodeproof = 1; +#if 0 /*JP*/ } else if (!strncmpi(bp, "lit ", l = 4) || !strncmpi(bp, "burning ", l = 8)) { +#else + } else if (!strncmpi(bp, "Œõ‚Á‚Ä‚¢‚é", l = 10) + || !strncmpi(bp, "”R‚¦‚Ä‚¢‚é", l = 10)) { +#endif islit = 1; +#if 0 /*JP*/ } else if (!strncmpi(bp, "unlit ", l = 6) || !strncmpi(bp, "extinguished ", l = 13)) { +#else + } else if (!strncmpi(bp, "Á‚¦‚Ä‚¢‚é", l = 10)) { +#endif islit = 0; /* "unlabeled" and "blank" are synonymous */ +#if 0 /*JP*/ } else if (!strncmpi(bp, "unlabeled ", l = 10) || !strncmpi(bp, "unlabelled ", l = 11) || !strncmpi(bp, "blank ", l = 6)) { +#else + } else if (!strncmpi(bp, "ƒ‰ƒxƒ‹‚Ì‚È‚¢", l = 12) + || !strncmpi(bp, "^‚Á”’‚È", l = 8)) { +#endif unlabeled = 1; +#if 0 /*JP*/ } else if (!strncmpi(bp, "poisoned ", l = 9)) { +#else + } else if (!strncmpi(bp, "“Å‚Ì“h‚ç‚ꂽ", l = 12)) { +#endif ispoisoned = 1; /* "trapped" recognized but not honored outside wizard mode */ } else if (!strncmpi(bp, "trapped ", l = 8)) { @@ -3578,45 +3610,108 @@ struct obj *no_wish; } else if (!strncmpi(bp, "untrapped ", l = 10)) { trapped = 2; /* not trapped */ /* locked, unlocked, broken: box/chest lock states */ +#if 0 /*JP*/ } else if (!strncmpi(bp, "locked ", l = 7)) { +#else + } else if (!strncmpi(bp, "Œ®‚ÌŠ|‚©‚Á‚½", l = 12)) { +#endif locked = 1, unlocked = broken = 0; +#if 0 /*JP*/ } else if (!strncmpi(bp, "unlocked ", l = 9)) { +#else + } else if (!strncmpi(bp, "Œ®‚ÌŠ|‚©‚Á‚Ä‚¢‚È‚¢", l = 18)) { +#endif unlocked = 1, locked = broken = 0; +#if 0 /*JP*/ } else if (!strncmpi(bp, "broken ", l = 7)) { +#else + } else if (!strncmpi(bp, "Œ®‚̉ó‚ꂽ", l = 10)) { +#endif broken = 1, locked = unlocked = 0; +#if 0 /*JP*/ } else if (!strncmpi(bp, "greased ", l = 8)) { +#else + } else if (!strncmpi(bp, "–û‚Ì“h‚ç‚ꂽ", l = 12) + || !strncmpi(bp, "Ž‰‚Ì“h‚ç‚ꂽ", l = 12)) { +#endif isgreased = 1; +#if 0 /*JP*/ } else if (!strncmpi(bp, "very ", l = 5)) { +#else + } else if (!strncmpi(bp, "‚Æ‚Ä‚à", l = 6)) { +#endif /* very rusted very heavy iron ball */ very = 1; +#if 0 /*JP*/ } else if (!strncmpi(bp, "thoroughly ", l = 11)) { +#else + } else if (!strncmpi(bp, "‚©‚È‚è", l = 6)) { +#endif very = 2; +#if 0 /*JP*/ } else if (!strncmpi(bp, "rusty ", l = 6) || !strncmpi(bp, "rusted ", l = 7) || !strncmpi(bp, "burnt ", l = 6) || !strncmpi(bp, "burned ", l = 7)) { +#else + } else if (!strncmpi(bp, "ŽK‚Ñ‚½", l = 6) + || !strncmpi(bp, "”R‚¦‚½", l = 6)) { +#endif eroded = 1 + very; very = 0; +#if 0 /*JP*/ } else if (!strncmpi(bp, "corroded ", l = 9) || !strncmpi(bp, "rotted ", l = 7)) { +#else + } else if (!strncmpi(bp, "•…H‚µ‚½", l = 8) + || !strncmpi(bp, "•…‚Á‚½", l = 6)) { +#endif eroded2 = 1 + very; very = 0; +#if 0 /*JP*/ } else if (!strncmpi(bp, "partly eaten ", l = 13) || !strncmpi(bp, "partially eaten ", l = 16)) { +#else + } else if (!strncmpi(bp, "H‚ׂ©‚¯‚Ì", l = 10)) { +#endif halfeaten = 1; +#if 0 /*JP*/ } else if (!strncmpi(bp, "historic ", l = 9)) { +#else + } else if (!strncmpi(bp, "—ðŽj“I‚È", l = 8)) { +#endif ishistoric = 1; +#if 0 /*JP*/ } else if (!strncmpi(bp, "diluted ", l = 8)) { +#else + } else if (!strncmpi(bp, "”–‚Ü‚Á‚½", l = 8)) { +#endif isdiluted = 1; +#if 0 /*JP*/ } else if (!strncmpi(bp, "empty ", l = 6)) { +#else + } else if (!strncmpi(bp, "‹ó‚Á‚Û‚Ì", l = 8)) { +#endif contents = EMPTY; +#if 0 /*JP*/ } else if (!strncmpi(bp, "small ", l = 6)) { /* glob sizes */ +#else + } else if (!strncmpi(bp, "¬‚³‚¢", l = 6)) { /* glob sizes */ +#endif gsize = 1; +#if 0 /*JP*/ } else if (!strncmpi(bp, "medium ", l = 7)) { +#else + } else if (!strncmpi(bp, "’†‚­‚ç‚¢‚Ì", l = 10)) { +#endif /* xname() doesn't display "medium" but without this there'd be no way to ask for the intermediate size */ gsize = 2; +#if 0 /*JP*/ } else if (!strncmpi(bp, "large ", l = 6)) { +#else + } else if (!strncmpi(bp, "‘å‚«‚¢", l = 6)) { +#endif /* "very large " had "very " peeled off on previous iteration */ gsize = (very != 1) ? 3 : 4; } else @@ -3695,6 +3790,7 @@ struct obj *no_wish; if ((p = strstri(bp, " called ")) != 0) { *p = 0; un = p + 8; +#if 0 /*JP*//*ƒ^ƒCƒv•Ê‚Í‚Æ‚è‚ ‚¦‚¸‚µ‚È‚¢*/ /* "helmet called telepathy" is not "helmet" (a specific type) * "shield called reflection" is not "shield" (a general type) */ @@ -3703,6 +3799,7 @@ struct obj *no_wish; oclass = o_ranges[i].oclass; goto srch; } +#endif } if ((p = strstri(bp, " labeled ")) != 0) { *p = 0; @@ -3810,11 +3907,22 @@ struct obj *no_wish; } } } -#else /*JP:u(‰ö•¨–¼)‚Ì(ƒAƒCƒeƒ€)v‘Ήž */ +#else { - if ((mntmp = name_to_mon(bp)) >= LOW_PM) { - const char *mp = mons[mntmp].mname; - bp = strstri(bp, mp) + strlen(mp) + 2; + /*JP u(‰ö•¨–¼)‚̉òv‚͌X‚ÉID‚ª‚ ‚é‚̂ŕʈµ‚¢ */ + int l = strlen(bp); + if (l > 4 && strncmp(bp + l - 4, "‚̉ò", 4) == 0) { + if ((mntmp = name_to_mon(bp)) >= PM_GRAY_OOZE + && mntmp <= PM_BLACK_PUDDING) { + mntmp = NON_PM; /* lie to ourselves */ + cnt = 0; /* force only one */ + } + } else { + /*JP:u(‰ö•¨–¼)‚Ì(ƒAƒCƒeƒ€)v‘Ήž */ + if ((mntmp = name_to_mon(bp)) >= LOW_PM) { + const char *mp = mons[mntmp].mname; + bp = strstri(bp, mp) + strlen(mp) + 2; + } } } #endif @@ -4036,14 +4144,19 @@ struct obj *no_wish; } } +#if 0 /*JP*//* mail/armorŠÖ˜A‚Å‚Ì‚ÝŽg‚¤ƒ‰ƒxƒ‹ */ retry: +#endif +#if 0 /*JP*//* ƒ^ƒCƒv•Ê‚Í‚Æ‚è‚ ‚¦‚¸‚µ‚È‚¢ */ /* "grey stone" check must be before general "stone" */ for (i = 0; i < SIZE(o_ranges); i++) if (!strcmpi(bp, o_ranges[i].name)) { typ = rnd_class(o_ranges[i].f_o_range, o_ranges[i].l_o_range); goto typfnd; } +#endif +#if 0 /*JP*//* Î‚Ì“Á•Êˆ—‚Í•s—v */ if (!BSTRCMPI(bp, p - 6, " stone") || !BSTRCMPI(bp, p - 4, " gem")) { p[!strcmpi(p - 4, " gem") ? -4 : -6] = '\0'; oclass = GEM_CLASS; @@ -4081,11 +4194,14 @@ retry: Strcpy(bp, tbuf); } } +#endif actualn = bp; if (!dn) dn = actualn; /* ex. "skull cap" */ +#if 0 /*JP*/ srch: +#endif /* check real names of gems first */ if (!oclass && actualn) { for (i = bases[GEM_CLASS]; i <= LAST_GEM; i++) { @@ -4096,12 +4212,14 @@ srch: goto typfnd; } } +#if 0 /*JP*//* “ú–{Œê‚Í"tin"‚ð–󂵕ª‚¯‚Ä‚¢‚é‚Ì‚Å•s—v */ /* "tin of foo" would be caught above, but plain "tin" has a random chance of yielding "tin wand" unless we do this */ if (!strcmpi(actualn, "tin")) { typ = TIN; goto typfnd; } +#endif } if (((typ = rnd_otyp_by_namedesc(actualn, oclass)) != STRANGE_OBJECT) @@ -4122,6 +4240,7 @@ srch: j++; } } +#if 0 /*JP*//* mail/armor‚Ì•\‹L—h‚êƒ`ƒFƒbƒN‚Í•s—v */ /* if we've stripped off "armor" and failed to match anything in objects[], append "mail" and try again to catch misnamed requests like "plate armor" and "yellow dragon scale armor" */ @@ -4131,6 +4250,7 @@ srch: Strcat(bp, " mail"); goto retry; } +#endif #if 0 /*JP*/ if (!strcmpi(bp, "spinach")) { #else @@ -4340,6 +4460,7 @@ wiztrap: } } +#if 0 /*JP*//* ƒ^ƒCƒv•Ê‚Í‚Æ‚è‚ ‚¦‚¸‚µ‚È‚¢ */ if (!oclass && !typ) { if (!strncmpi(bp, "polearm", 7)) { typ = rnd_otyp_by_wpnskill(P_POLEARMS); @@ -4349,6 +4470,7 @@ wiztrap: goto typfnd; } } +#endif if (!oclass) return ((struct obj *) 0); -- 2.11.0