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