(linenum→info "unix/slp.c:2238")

bsd-games/2.17/hack/hack.shknam.c

    1: /*      $NetBSD: hack.shknam.c,v 1.6 2003/04/02 18:36:40 jsm Exp $   */
    2: 
    3: /*
    4:  * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
    5:  * Amsterdam
    6:  * All rights reserved.
    7:  *
    8:  * Redistribution and use in source and binary forms, with or without
    9:  * modification, are permitted provided that the following conditions are
   10:  * met:
   11:  *
   12:  * - Redistributions of source code must retain the above copyright notice,
   13:  * this list of conditions and the following disclaimer.
   14:  *
   15:  * - Redistributions in binary form must reproduce the above copyright
   16:  * notice, this list of conditions and the following disclaimer in the
   17:  * documentation and/or other materials provided with the distribution.
   18:  *
   19:  * - Neither the name of the Stichting Centrum voor Wiskunde en
   20:  * Informatica, nor the names of its contributors may be used to endorse or
   21:  * promote products derived from this software without specific prior
   22:  * written permission.
   23:  *
   24:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
   25:  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   26:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
   27:  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
   28:  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   29:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   30:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   31:  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   32:  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   33:  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   34:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   35:  */
   36: 
   37: /*
   38:  * Copyright (c) 1982 Jay Fenlason <hack@gnu.org>
   39:  * All rights reserved.
   40:  *
   41:  * Redistribution and use in source and binary forms, with or without
   42:  * modification, are permitted provided that the following conditions
   43:  * are met:
   44:  * 1. Redistributions of source code must retain the above copyright
   45:  *    notice, this list of conditions and the following disclaimer.
   46:  * 2. Redistributions in binary form must reproduce the above copyright
   47:  *    notice, this list of conditions and the following disclaimer in the
   48:  *    documentation and/or other materials provided with the distribution.
   49:  * 3. The name of the author may not be used to endorse or promote products
   50:  *    derived from this software without specific prior written permission.
   51:  *
   52:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
   53:  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
   54:  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
   55:  * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   56:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   57:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
   58:  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   59:  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   60:  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
   61:  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   62:  */
   63: 
   64: #include <sys/cdefs.h>
   65: #ifndef lint
   66: __RCSID("$NetBSD: hack.shknam.c,v 1.6 2003/04/02 18:36:40 jsm Exp $");
   67: #endif                          /* not lint */
   68: 
   69: #include "hack.h"
   70: #include "extern.h"
   71: 
   72: const char           *const shkliquors[] = {
   73:         /* Ukraine */
   74:         "Njezjin", "Tsjernigof", "Gomel", "Ossipewsk", "Gorlowka",
   75:         /* N. Russia */
   76:         "Konosja", "Weliki Oestjoeg", "Syktywkar", "Sablja",
   77:         "Narodnaja", "Kyzyl",
   78:         /* Silezie */
   79:         "Walbrzych", "Swidnica", "Klodzko", "Raciborz", "Gliwice",
   80:         "Brzeg", "Krnov", "Hradec Kralove",
   81:         /* Schweiz */
   82:         "Leuk", "Brig", "Brienz", "Thun", "Sarnen", "Burglen", "Elm",
   83:         "Flims", "Vals", "Schuls", "Zum Loch",
   84:         0
   85: };
   86: 
   87: const char           *const shkbooks[] = {
   88:         /* Eire */
   89:         "Skibbereen", "Kanturk", "Rath Luirc", "Ennistymon", "Lahinch",
   90:         "Loughrea", "Croagh", "Maumakeogh", "Ballyjamesduff",
   91:         "Kinnegad", "Lugnaquillia", "Enniscorthy", "Gweebarra",
   92:         "Kittamagh", "Nenagh", "Sneem", "Ballingeary", "Kilgarvan",
   93:         "Cahersiveen", "Glenbeigh", "Kilmihil", "Kiltamagh",
   94:         "Droichead Atha", "Inniscrone", "Clonegal", "Lisnaskea",
   95:         "Culdaff", "Dunfanaghy", "Inishbofin", "Kesh",
   96:         0
   97: };
   98: 
   99: const char           *const shkarmors[] = {
  100:         /* Turquie */
  101:         "Demirci", "Kalecik", "Boyabai", "Yildizeli", "Gaziantep",
  102:         "Siirt", "Akhalataki", "Tirebolu", "Aksaray", "Ermenak",
  103:         "Iskenderun", "Kadirli", "Siverek", "Pervari", "Malasgirt",
  104:         "Bayburt", "Ayancik", "Zonguldak", "Balya", "Tefenni",
  105:         "Artvin", "Kars", "Makharadze", "Malazgirt", "Midyat",
  106:         "Birecik", "Kirikkale", "Alaca", "Polatli", "Nallihan",
  107:         0
  108: };
  109: 
  110: const char           *const shkwands[] = {
  111:         /* Wales */
  112:         "Yr Wyddgrug", "Trallwng", "Mallwyd", "Pontarfynach",
  113:         "Rhaeader", "Llandrindod", "Llanfair-ym-muallt",
  114:         "Y-Fenni", "Measteg", "Rhydaman", "Beddgelert",
  115:         "Curig", "Llanrwst", "Llanerchymedd", "Caergybi",
  116:         /* Scotland */
  117:         "Nairn", "Turriff", "Inverurie", "Braemar", "Lochnagar",
  118:         "Kerloch", "Beinn a Ghlo", "Drumnadrochit", "Morven",
  119:         "Uist", "Storr", "Sgurr na Ciche", "Cannich", "Gairloch",
  120:         "Kyleakin", "Dunvegan",
  121:         0
  122: };
  123: 
  124: const char           *const shkrings[] = {
  125:         /* Hollandse familienamen */
  126:         "Feyfer", "Flugi", "Gheel", "Havic", "Haynin", "Hoboken",
  127:         "Imbyze", "Juyn", "Kinsky", "Massis", "Matray", "Moy",
  128:         "Olycan", "Sadelin", "Svaving", "Tapper", "Terwen", "Wirix",
  129:         "Ypey",
  130:         /* Skandinaviske navne */
  131:         "Rastegaisa", "Varjag Njarga", "Kautekeino", "Abisko",
  132:         "Enontekis", "Rovaniemi", "Avasaksa", "Haparanda",
  133:         "Lulea", "Gellivare", "Oeloe", "Kajaani", "Fauske",
  134:         0
  135: };
  136: 
  137: const char           *const shkfoods[] = {
  138:         /* Indonesia */
  139:         "Djasinga", "Tjibarusa", "Tjiwidej", "Pengalengan",
  140:         "Bandjar", "Parbalingga", "Bojolali", "Sarangan",
  141:         "Ngebel", "Djombang", "Ardjawinangun", "Berbek",
  142:         "Papar", "Baliga", "Tjisolok", "Siboga", "Banjoewangi",
  143:         "Trenggalek", "Karangkobar", "Njalindoeng", "Pasawahan",
  144:         "Pameunpeuk", "Patjitan", "Kediri", "Pemboeang", "Tringanoe",
  145:         "Makin", "Tipor", "Semai", "Berhala", "Tegal", "Samoe",
  146:         0
  147: };
  148: 
  149: const char           *const shkweapons[] = {
  150:         /* Perigord */
  151:         "Voulgezac", "Rouffiac", "Lerignac", "Touverac", "Guizengeard",
  152:         "Melac", "Neuvicq", "Vanzac", "Picq", "Urignac", "Corignac",
  153:         "Fleac", "Lonzac", "Vergt", "Queyssac", "Liorac", "Echourgnac",
  154:         "Cazelon", "Eypau", "Carignan", "Monbazillac", "Jonzac",
  155:         "Pons", "Jumilhac", "Fenouilledes", "Laguiolet", "Saujon",
  156:         "Eymoutiers", "Eygurande", "Eauze", "Labouheyre",
  157:         0
  158: };
  159: 
  160: const char           *const shkgeneral[] = {
  161:         /* Suriname */
  162:         "Hebiwerie", "Possogroenoe", "Asidonhopo", "Manlobbi",
  163:         "Adjama", "Pakka Pakka", "Kabalebo", "Wonotobo",
  164:         "Akalapi", "Sipaliwini",
  165:         /* Greenland */
  166:         "Annootok", "Upernavik", "Angmagssalik",
  167:         /* N. Canada */
  168:         "Aklavik", "Inuvik", "Tuktoyaktuk",
  169:         "Chicoutimi", "Ouiatchouane", "Chibougamau",
  170:         "Matagami", "Kipawa", "Kinojevis",
  171:         "Abitibi", "Maganasipi",
  172:         /* Iceland */
  173:         "Akureyri", "Kopasker", "Budereyri", "Akranes", "Bordeyri",
  174:         "Holmavik",
  175:         0
  176: };
  177: 
  178: const struct shk_nx {
  179:         char            x;
  180:         const char          *const *xn;
  181: }               shk_nx[] = {
  182:         {
  183:                 POTION_SYM, shkliquors
  184:         },
  185:         {
  186:                 SCROLL_SYM, shkbooks
  187:         },
  188:         {
  189:                 ARMOR_SYM, shkarmors
  190:         },
  191:         {
  192:                 WAND_SYM, shkwands
  193:         },
  194:         {
  195:                 RING_SYM, shkrings
  196:         },
  197:         {
  198:                 FOOD_SYM, shkfoods
  199:         },
  200:         {
  201:                 WEAPON_SYM, shkweapons
  202:         },
  203:         {
  204:                 0, shkgeneral
  205:         }
  206: };
  207: 
  208: void
  209: findname(nampt, let)
  210:         char           *nampt;
  211:         char            let;
  212: {
  213:         const struct shk_nx  *p = shk_nx;
  214:         const char          *const *q;
  215:         int             i;
  216:         while (p->x && p->x != let)
  217:                 p++;
  218:         q = p->xn;
  219:         for (i = 0; i < dlevel; i++)
  220:                 if (!q[i]) {
  221:                         /* Not enough names, try general name */
  222:                         if (let)
  223:                                 findname(nampt, 0);
  224:                         else
  225:                                 (void) strcpy(nampt, "Dirk");
  226:                         return;
  227:                 }
  228:         (void) strncpy(nampt, q[i], PL_NSIZ);
  229:         nampt[PL_NSIZ - 1] = 0;
  230: }
Syntax (Markdown)